[Top][All Lists]

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

Re: MIDI file organization, request advice

From: Keith OHara
Subject: Re: MIDI file organization, request advice
Date: Thu, 12 May 2011 12:39:58 -0700
User-agent: Opera Mail/11.10 (Win32)

On Thu, 12 May 2011 03:22:38 -0700, David Santamauro wrote:

Keith OHara <address@hidden> wrote:

a MIDI port has only 16 channels
(and I don't know anybody with a multi-port MIDI synthesizer).

I respectively disagree ... (upwards of 20 ports is usual for me).

For example, << {c' g e c} \\ {g e c c} >>[with development LilyPond] 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.

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

Stable LilyPond (and the development version with midiChannelMapping=#'staff)
puts both voices on one channel, stored in one track, producing:
  c-On-Ch0 g-On-Ch0 delay c-Off-Ch0 g-Off-Ch0 g-On-Ch0 e-On-Ch0 delay...
This sounds correctly, but midi2ly cannot distinguish the voices to recreate
the input .ly, making Jan unhappy.

Development LilyPond, with the default midiChannelMapping=#'instrument,
stores the voices in separate tracks, so midi2ly can distinguish them,
but the stream of events to the synthesizer has slightly different order:
  c-On-Ch0 g-On-Ch0 delay c-Off-Ch0 g-On-Ch0 g-Off-Ch0 e-On-Ch0 delay...
WindowsMediaPlayer, actually the back-end SW Synth, shortens the g in
the second beat to zero duration, making Windows users unhappy.[1]

Development LilyPond with midiChannelMapping=#'voice  puts voices on
separate channels
  c-On-Ch0 g-On-Ch1 delay c-Off-Ch0 g-Off-Ch1 g-On-Ch0 e-On-Ch1 delay...
and then a second Staff is put on a second port.  This leaves users
with single-port synthesizers unhappy.

I am looking for a way to make everyone happy, so we don't have to choose
among these midiChannelMapping options.
If there is no better way, I'll convince the developers to have this new
option default to 'staff, to give the old behavior by default.

[1] Timidity, with its --overlap-voice option, can handle g being
"doubly-on" for an instant and plays both gs for quarter-note length.

reply via email to

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