denemo-devel
[Top][All Lists]
Advanced

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

Re: [Denemo-devel] Mixer for midi playback?


From: Jeremiah Benham
Subject: Re: [Denemo-devel] Mixer for midi playback?
Date: Tue, 17 Feb 2009 08:38:23 -0600

On Tue, 2009-02-17 at 12:01 +0000, Richard Shann wrote:
> On Tue, 2009-02-17 at 11:58 +0100, jerome chabod wrote:
> > Hello,
> >  
> > What I miss in Denemo is a mixer feature for midi playback (ability to
> > mute, solo or change volume for individual tracks). Is such a feature
> > planned or maybe already implemented? If not, do you think it is worth
> > spending some time on trying to implement something myself (I already
> > know C and gtk)?
> It would be really great if a C-coder could work on live MIDI out.
> Jeremiah has got MIDI out via intermediate file working (I believe, I do
> not have jackmidi in my distro). 

I am not sure what the performance/feature difference would be for "Live
midi out". What can be obtained with the "live midi out" method? To me
it just sounds like a lot of extra work for no benefit. Maybe I am
missing something.

Jeremiah

> I don't know whether he has plans to
> work on live MIDI but I am sure he would welcome extra manpower.




> I wrote up how I think it could be done some while ago  (5 Jan 2009)- 
> here it is what I wrote:
> 
> > What is meant [by MIDI out] is (at a minimum) to be able to point to a
> > place in the
> > score and have denemo promptly start outputting MIDI to libjack. The
> > MIDI events it would output would correspond to the notes from the
> > pointed place onwards in the score, including the prevailing
> > dynamic/crescendo, midi instrument/channel (anything else? - embedded
> > MIDI commands I guess). Notes that are hanging on at the given point
> > would not be sounded (so if the given point just contained notes tied
> > from previous notes, nothing would be heard until a new note started).
> > The tempo would be a prevailing tempo at the note concerned (so we
> > would
> > allow an embedded MIDI command that would change the tempo).
> > 
> > The actual jackmidi connection is trivial, of course, and someone on
> > #denemo came up with a sample
> > http://trac.jackaudio.org/browser/trunk/jack/example-clients/midiseq.c
> > which shows how to do that.
> > It is not intended that the user should be allowed to edit the score
> > while it is being played. So the value of the gui->changecount
> > variable
> > is fixed for any given playback.
> > 
> > What would require a little design is how to create the MIDI events
> > from
> > the denemo data. I think I have a good idea how to do this:
> > An initialization stage would be good, partly to avoid excessive
> > computation while playing & also for convenience of coding. So if this
> > MIDI output system has not been initialized since the last edit to the
> > score the first thing that happens is INITIALIZATION: this creates a
> > list of MIDI events, with links from the notes in the score to first
> > event that that note triggers. (As mentioned notes that are tied to
> > earlier notes have no MIDI event).
> [creating a MIDI event from the Denemo objects is something for which
> code already exists (for writing to file)]
> 
> > On requesting playback from a given note, the MIDI events are simply
> > shovelled out to jackmidi.
> > There are some extras that are easily incorporated - silencing staffs
> > etc. but the real work is the INITIALIZATION task.
> > 
> > I think it can be done as follows:
> >         INITIALIZATION: run a special version of exportmidi.c which
> > instead of
> > writing to a file creates a list (GList* midi_events in the
> > DenemoScore
> > structure) of MIDI events, putting a link from each note (etc) to the
> > MIDI event which it causes.
> > 
> > To determine if INTIALIZATION is needed, we need to set a variable
> > (gui->midichangecount) that is set to the gui->changecount when
> > INITIALIZATION is run, so that if the comparison
> > midichangecount==changecount fails when the play request is received
> > we
> > know INITIALIZATION is needed again.
> > 
> 
> This may be too cryptic - but the gist is that we need the basic wiring
> up to be done first, and then we could add DenemoDirectives to
> mute/change track or whatever you can do with MIDI (MIDI is not my
> field).
> 
> > Another feature I miss is the zooming function. I don't think I can
> > help there, but I have seen something is planned.
> ??? zooming the Denemo display is quite a long way off, if it is
> reasonably possible, which I am not sure it is. The print-preview is,
> however, being developed (and may be able to meet your needs?)
> 
> 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]