lilypond-devel
[Top][All Lists]
Advanced

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

Re: Map voices to channels in MIDI output


From: Jan Nieuwenhuizen
Subject: Re: Map voices to channels in MIDI output
Date: Wed, 16 Mar 2011 14:39:26 +0100

Keith OHara schreef op di 15-03-2011 om 23:09 [-0700]:
> On Tue, 15 Mar 2011 13:53:41 -0700, Jan Nieuwenhuizen
> <address@hidden> wrote:

> It is, at least, the same kludge others (classicalmidiconnection.com)
> use when they have more than 16 simultaneous lines of music.  To have
> some sympathy for the brokenness, remember that MIDI is primarily a
> delivery protocol to playback hardware.

Sure.

> I tried to summarize what the relevant classes do, and indicated the
> desired extensions in [[ ]] below :

> Objects of class Staff_performer correspond MIDI channels.

Not really:

* midiChannelMapping = #'instrument (default)
  
    midiInstrument <-> MIDI channel
    voice -> track

* midiChannelMapping = #'staff (old)
  
    Staff <-> MIDI channel <-> track
    voices are merged and unrecoverable

* midiChannelMapping = #'voice (nice, but unsupported)

    Staff+voice <-> channel
    midi-port <->Staff<->Track
    (staff 1, voice 1 --> channel 0
                    2 --> channel 1
   (staff 2, voice 1 --> channel 0,
    etc.)
 

> Each Staff_performer has
>     a channel number,
>     optionally a MidiInstrument, midiMinimumVolume, etc.,

not really, these can change

>   one [[or more]] objects of class Audio_Staff.
> This class implements the LilyPond performer "Staff_performer"

yes

> Normally each Staff_performer gets a unique MIDI channel number,
> [[ but if midiChannelMapping==#'instrument then Staff_performers with
> the same midiInstrument share a channel number.  Program-changes and
> midiVolume events from each Staff_performer will affect the shared
> MIDI channel.]]

Yes, although normally is [[ ...]] is the default.

> Staff_performer is responsible for routing Audio_items to the
> appropriate Audio_staff.

Yes

> Normally there is one Audio_staff per Staff_performer,

   for 'staff and for 'voice, not for 'instrument

> [[ but if midiTrackMapping==#'voice then each uniquely-named Voice has
> its own Audio_staff.]]

no, that's for 'instrument

> I still have the net change to midi output at
> http://codereview.appspot.com/4271043/ in case it is useful.

Ok.

> Should the Audio_staff be "promoted" to Track_performer, in Voice
> context by default, and collect its own Audio_items?
> Do you still want all those maps ?

Not sure, if it works and is nicer, I'm all for it.  However, I
do want to keep these three output options for now.

Jan.

-- 
Jan Nieuwenhuizen <address@hidden> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | AvatarĀ®  http://AvatarAcademy.nl  




reply via email to

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