Who uses/when to use/where to use/why use the MIDI note off/release velocity?
In my own programming it's starting to seem preferable to format all note off messages as note off + release velocity. Across MIDI implementations this seems unusual. But there is also a great deal of inconsistency in how the end of a note is handled.
Curious to learn your answers to the questions above.
Here is my own context and discovery:
TL;DR Why not default to using note off/release velocity messages?
Since I started using Max seems the standard way to turn notes off is with a message like this:
Note on Status Note Number 0
Note on status is between 144 and 159 depending on the MIDI Channel in use
Of course the MIDI Specification has a whole note off message:
Note off Status Note Number Release velocity
Note off status is between 128 and 143 depending on the MIDI Channel in use
For a long time I never used the "real" note off message. Not only is it rare to find a physical MIDI device that sends note off + release velocity messages, there's the possibility that using only Note on messages is more efficient when it comes to MIDI implementations that use "MIDI Running Status."
Then I noticed a few things (examples available on request):
- Sometimes DAWs react differently to Note Off messages than Note On velocity 0
- DAWs tend to be inconsistent in their own formatting of MIDI Note Off messages
- There are commercial sample libraries that use release velocity
And also, editorially, wonder:
- Is MIDI Running Status necessary in the current hardware/software environment?
- Where is the release velocity in the MIDI MPE specification? Couldn't this available MIDI status be used for expressive purposes?
- Why NOT default to note off with release velocity in MIDI implementations?
Generally, why are MIDI statuses like note on and CC so often used for purposes other than the intended one? Lots of MIDI enabled software use note on events or CC to address global parameters in a synthesizer, such as articulation or sound set. These parameters would be more properly addressed using Program Changes. Such mis-uses make sense locally (using a MIDI keyboard note event to change a sound is convenient) but tend to muddy MIDI message formatting when they become standard implementations (examples on request).