Current state of the MIDI Note off + Release velocity message
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).
There are commercial sample libraries that use release velocity
that is the main issue IMO, that some devices do use these things like note off velocity or key pressure, but you never really know which ones - and you often have a controller or software in front of you which can not produce this data.
it just doesnt fit together, as you would exspect from the dominant interface / protocol.
otoh, that salso only my opinion, the next problem is that it is serial and 7 bit ;)
I am currently developing MIDI software and came across this post while searching recommended default value for release velocity. I am not a Max user but have comments on some of your points.
I think running-status is still useful. I have a mix of old (antique?) hardware and virtual synths. The old junk uses 5-pin DIN plugs and if the MIDI stream gets too dense things start to break. My guess is running-status is not particularly useful in a purely virtual environment.
I too have concerns about the non-standard use of note and cc events for what are essentially program changes. At least with cc the MIDI standard provides a method for bank switching.
Real problems pop up when using key events for what should actually be program changes. First it breaks the semantics; is it a key event or a program change? Second it is difficult to manipulate tracks which contain these events. Import one into a score editor and it gets confused by the spurious notes several octaves below the actual part. If you manipulate the track (transpose, inversion etc) the key switches must somehow be protected, otherwise your finely tuned articulations get all screwed up, or worse become "real" notes.
I am more producer/programmer then performer, though I did play keyboards live for 10 years. Despite this, skill wise I am at the low-end of keyboard proficiency. More skilled players may have a different view of the convenience of key-switching but I do not see how it is any easier then hitting a program button. I for one can never remember which key does what, particularly when the key assignments change with each patch.