lilypond-user
[Top][All Lists]
Advanced

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

Re: MIDI file organization, request advice


From: David Santamauro
Subject: Re: MIDI file organization, request advice
Date: Thu, 12 May 2011 06:22:38 -0400

On Thu, 12 May 2011 03:53:53 +0000 (UTC)
Keith OHara <address@hidden> wrote:

> Dear list,
>  LilyPond produces MIDI output that is very useful for checking
> accuracy of the .ly file.
>  
> (A) We need a mechanism to put several Voices on one MIDI channel,
> because scores often have more than 16 voices, but a MIDI port has
> only 16 channels
> (and I don't know anybody with a multi-port MIDI synthesizer). 

I respectively disagree ... I have 2 hardware ports and a pretty
unlimited set of software ports both through application routing and,
internal to my sequencer through the use of software samplers. It is
not uncommon for me to send each (sequencer) track with possibly only
one channel to separate ports for playback (upwards of 20 ports is
usual for me).

Professional software instruments are large beasts where one instance of
a violin or violin section could contain 20+ articulations controlled
either by separate channel or key-switching ... port routing is
essential.

> I suggested dividing the MIDI file into a greater number of Track
> chunks, and putting each Voice in its own Track.  This means that

I believe a Staff is a great representation of a track. An
organizational entity that can contain many channels (up to 16) directed
to the same port. All staffs could be on the same port or different --
this is standard practice on most other notation software packages.

So, in LilyPond's case, implementation may be that MIDI port and
channel be attributes inherited from Book all the way down to the Voice
context.

> several Tracks store MIDI events for the same channel, and there is
> no defined order between events in separate Tracks with the same
> time-stamp.  For example, << {c' g e c} \\ {g e c c} >>  has
> g-note-on in the upper voice simultaneous with the g-note-off in the
> lower voice; Windows Media Player happens to cut off the upper-voice
> g.  This problem is probably solvable, but I don't know how many
> other subtle problems there might be with several Tracks per Channel.

Media Player is actually doing the right thing but when you say:

> g.  This problem is probably solvable, but I don't know how many
> other subtle problems there might be with several Tracks per Channel.

What is there to "solve"? If I wrote << {c' g e c} \\ {g e c c} >> I
expect full well that each voice is played correctly for the correct
duration. Being on the same staff they are probably the same instrument
which makes it more important to hear their individuality (possibly
detuning one voice later in a sequencer for more realism). If they
aren't the same instrument, possibly a chorale with sop. and alto on
the top staff, it is _essential_.

The end-user who creates the MIDI file with, let's say, each track
containing one port's worth of channels, be it 1 or 16, simply can't use
a 'standard' media player. For me, when using [name omitted] software
to occasionally create scores (for the very sophisticated playback
capabilities, port routing, articulation mapping etc.) and I export the
resulting score as MIDI for further playback tweaking to achieve an
even more 'realistic' interpretation, I am required to import that
result into a sequencer capable of routing as I described above.

You simply can't have your cake (multiple tracks in the same MIDI file
containing the same channel) and eat it too (have playback possible on
standard MIDI software).

Long story short: I agree that the Staff is a Track and each Voice a
channel but for anything requiring multiple ports (> 16 channels), the
end-user is on his/her own.

David

PS LilyPondTool could possibly be a nice place for this routing ...
just thinking out loud.







reply via email to

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