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 08:11:03 -0500

On Tue, 2008-10-28 at 19:19 +0000, Richard Shann wrote:
> On Tue, 2008-10-28 at 12:34 -0500, Jeremiah Benham wrote:
> > On Tue, 2008-10-28 at 17:06 +0000, Richard Shann wrote:
> > > On Tue, 2008-10-28 at 11:21 -0500, Jeremiah Benham wrote:
> > > > On Tue, 2008-10-28 at 15:46 +0000, Richard Shann wrote:
> ...
> > > I'm still working on the mouse pointer when dragging notes etc.
> > > Any thoughts on what the next release might contain?
> > 
> > Well things that I would like to see (I have not seen the roadmap and
> > some of these things are probably already a feature)
> > 
> > importmidi breaking voices into other staffs 
> (ok - I don't know what this is about, I guess because I have never used
> importmidi in earnest)

Where you at one time trying to get a midi controller or usb midi
connector for your midi controller? Have you given up on that idea since
you have the pitch detection working better for you? I had at one time a
plugin that I wrote to insert notes into denemo via a midi controller.
It was a long time ago. It was flaky because at the time I did know how
to use gdb. 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.
Then since the voice may be erratically coming in and out I would have
to pad the new staff with rests. rest entry complicates things a little.
midi data does not have rest information. It has to be derived from the
distance between the NOTE_OFF event and the next NOTE_ON. If I have to I
considered make a GList that contained the staffs and each staff would
be a GList also storing it all in memory and the end of the importmidi()
routine have this GList of GList read and entered into denemo. At the
moment it is just a simple GList that only contains a single voices
notes until a NOTE_OFF corresponding to that note is received. 

> > diatonic and real transposition 
> I think transposition is fairly important.
> > 
> > a way to add either add barline at cursor position (this way a script
> > can be written that uses the existing method to remove barlines and then
> > readd them). So in other words a re-beaming tool. An example of where
> > this would be useful is when you have a tune in your head that your are
> > transcribing and you notate it down in denemo starting on beat 1. You
> > then listen to the recording again and realize oops its actually on beat
> > 4. The re-beaming tool can help with this. It seems like a very easy
> > feature to add but I may be diluting myself. It may also be a current
> > feature that I failed to notice.
> I did add a couple of simple scripts to insert/delete a barline. If you
> wanted to do a whole piece moving all the barlines on by one beat I
> guess that could be scripted, but that can be done without releasing a
> new version of Denemo - we just have to post up a script. I think the
> mouse manipulation stuff is enough reason to release (once it is
> finished); is there something else that we can get done in the same time
> frame - say in a month's time?

I don't think I can get much more than that done. I have very little
time and I am not as fast as pumping out elegant code like you are. 

Jeremiah


> 
> Richard
> 
> 





reply via email to

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