denemo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Features for a new release. (was Re: [Denemo-devel] Midi output faul


From: Jeremiah Benham
Subject: Re: Features for a new release. (was Re: [Denemo-devel] Midi output faulty for whole measure rests in 4/2 time)
Date: Wed, 29 Oct 2008 23:06:10 -0500

On Wed, 2008-10-29 at 18:09 +0000, Richard Shann wrote:
> On Wed, 2008-10-29 at 08:11 -0500, Jeremiah Benham wrote:
> > One of the signals in a Midi file or stream contains a
> > message that contains a NOTE_ON status with a pitch and velocity
> > values
> > that accompany it. Then later a NOTE_OFF value with a pitch value and
> > velocity. The duration of the note is determined by the NOTE_OFF
> > subtracting the NOTE_ON time. Sometimes you can have several NOTE_ON
> > times that overlap. This creates voices within the same midi track. It
> > was your suggestion a while back to create a separate staff for each
> > midi voice and that the users can merge the staffs if they wished. I
> > am
> > currently storing these NOTE_ON values in a GList. Once the note has
> > been entered into denemo it gets deleted from the list. Normally if
> > there are no other voices in the track (analogous to staff) there
> > would
> > only be one note structure element in the GList. The number (if any)
> > of
> > extra voices at any given time can be determined by judging the amount
> > of elements in GList. This can be obtained easily with the function
> > g_list_length(GList *list). What I am unsure about is how to determine
> > what goes on what staff and telling denemo to put the notes on staff
> > x. 
> Right - I get it. You can tell when two notes are in different "voices"
> by if they overlap, but you can't tell which "voice" to put a note in
> when later on you have overlapping notes, and in between places where
> there are overlapping notes you can choose which voice to put rests in
> and which to put notes in. When the source of the midi is a human
> performance the problems will become even worse as notes which really
> belong in the same voice will often overlap.

Yes. This is a rather complex issue. The link you mentioned made me feel
a bit better about it showing how all of these other programs all kind
of import the file with some form of distortion of sorts.  

> This sounds like a serious project in itself - is there software out
> there that is state-of-the-art for doing this? 

Now that you mention it... I was wondering if in the long term we would
be better off using tse3 libs. This is already in debian so I assume it
is in many other distros also. Here is the link:

http://tse3.sourceforge.net/

There has not been a release since 95. Midi sequencer code does not need
to change. It really does not have any dependencies. It will provide the
quantization of human performed midi. This library will also could
provide denemo with a real sequencer. Some code can be used to plug into
jack-midi much easier also. The only problems being besides that it is
old is that it is written in c++ so we will have to write some glue code
to use it. After the midi is loaded into a sequencer we can copy it into
denemo. We can use in parallel with denemo. We could have a cursor that
moves along in denemo with the playing of the sequencer. The sequencer
output can be realtime midi stream to softsyth via pipe or later
jack-midi.   

> What sort of performance
> can be gotten from the best stuff that there is? 

I am not sure what you are referring to here. Are you asking what kind
of performance can you get out of commercial packages like finale and
sibelius and many that are mentioned in the link you posted?

Jeremiah

> The first hit I get for
> "midi to notation" in google is this one (out of date I think)
> http://www.skytopia.com/project/articles/notation.html
> 
> I would look around before tackling this head on... Now that you have
> explained it to me, it looks pretty daunting.
> Richard
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Denemo-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/denemo-devel





reply via email to

[Prev in Thread] Current Thread [Next in Thread]