[LAU] MIDI NOTE ON/OFF Messages - reducing data
cladisch at fastmail.net
Fri Dec 12 10:53:05 EST 2008
> Defined in the MIDI specification is that for each NOTE ON message there has
> to be a NOTE OFF message (or a NOTE ON message with vol.=0).
> There are many instruments that in real life never need a manual action to
> stop their sound, for example most if not all percussion instruments and
> drums. [...] So: why do we have to send NOTE OFF messages for these kind of
Because the specification says so. ;-)
> Wouldn't it be sufficient to simply sent the NOTE ON message for
> that sound and omit the NOTE OFF message?
If the synth can decide by itself when the sound is finished, then it
doesn't need a note off.
> This would save us up to three bytes which can make a difference in delay.
If the note-off command isn't really necessary, then you can send it at
some later time when it doesn't take bandwith away from other commands.
> I'm not sure either how to introduce such a feature in the MIDI world,
> however, I can see that it might be rather difficult. Both sender (MIDI
> keyboard) and receiver (synth, expander, some software) need to agree that a
> particular sound does not need NOTE OFF messages and therefore the devices
> neither need to transmit nor wait to receive it.
> Maybe it could be done by introducing a new controller that disables NOTE OFF
> messages for a particular channel, so that all instruments that play on that
> channel would never need any NOTE OFF messages.
If note-off messages aren't sent, there is no difference between a
channel that expects note-off message and one that doesn't: All sounds
will sound as long as they naturally sound.
The interesting case is when note-offs are sent: a synth might stop a
sound before it would naturally stop. Therefore, your setting would
effectively tell the synth to ignore any note-off messages.
As it happens, both the GS and XG standards have a SysEx for exactly
this, and it is enabled by default on the drum channel.
More information about the Linux-audio-user