Re: MIDI NoteOff velocity

From: Richard Dobson (rwd@cableinet.co.uk)
Date: Wed Sep 01 1999 - 14:44:57 EDT


My 2c-worth:

It is a common misconception among pianists (also, understandably, among
the computer music community brought up on MUSIC-N note-lists and an
OFF-ON binary paradigm) that a 'NOTE_OFF' message means 'end of note'.
It might reasonably be interpreted thus 99% of the time, but it does not
~mean~ it with MIDI and never has, any more than it means it for classic
analogue synthesizers with ADSR generators. For these, the release of
the key triggers the Release stage of the envelope, which might well
extend for many seconds. In the case of a sampler, the Sustain stage
(key held down) uses the part of the sample that is continually looped,
and the Release typically quits the loop and performs the post-loop
ending of the note - short or long. A harpsichord sample (which would be
a good standard test for saolc, I think) has to play the whole jack-fall
sound at this point. There are many similar examples amongst acoustic
instruments, and even voices. Most modern synthesizers provide patches
which trigger a pitch sweep, or other effects, at Release. Clearly, the
Release Velocity value would be very useful for adding dynamic control
to this process.

Adept programmers could get a wide range of expression out of an
analogue synth (which did not have pressure sensing) by careful
manipulation of evelope stages, combined with precise playing technique.
I remember myself programming a humble Juno 106 so that if I struck the
key and immediately released it, I got a sound with a very long decay,
whereas if I held the key down, the ADSR completed the Decay stage to
silence, giving me a relatively short note. 'A release is a release' is
true enough if you are a pianist or an organist (many pianists will
quibble anyway, ecept the ISO ones), but is not so for a player
concerned with the full gamut of idiomatic ~synthesizer~ playing.

The ~original~ (pre GM) MIDI specification does not presume (or even
offer an opinion on ) how manufacturers generate sounds - but clearly
common practice is (and common sense, too, I suppose), again, to
initiate a Release envelope when NOTE-OFF is received. In real-time
performance, indeed, this is the only way it can be done.

The velocity value of zero for NOTE ON is a 'special case' signifying an
alternative way of communicating Release - the value for 'minimum
velocity' is 1. The use of NOTE ON:velocity = 0 is provided primarily to
enable Running Status to be maintained - certainly that is the
explanation given in the original MIDI 1.0 specification (ca. 1983; I am
also using 'MIDI Programmer's Handbook, De Furia & Scacciaferro, M&T
Books 1989). I do not recognize the text quoted below, which must be
from a younger version - it is not expressed very well! It is trying to
say simply that both forms of Release must be recognized. Of course, in
this case, the velocity value can not contribute to envelope completion,
and a default value should be used.

On the other hand, when NOTE OFF is used, the velocity value is ~very~
relevant and meaningful - there can be very few non-trivial MIDI
synthesizers which cannot use it, these days. It is arguably even more
relevant to precisely composed streams than to live performance. It may
be strategically reasonable for saolc to disregard it given that "MIDI
is not the primary control language in MPEG-4" - but then why argue
about 'compliance'? it does not seem very 'hard-line' to me to leave out
a core element of the 1983 specification.

In short, control of the envelope when Release is received can be
expressive and powerful musically, and I think it would be much to
saol/MPEG-4's benefit that a parametrized Release command is supported -
which might as well be commensurate with NOTE_OFF velocity. Given the
facility is there, with all that that implies for support of real-time
performance, it might as well be complete. It would still be a good
thing even if MIDI did not define a release velocity!

If only more ISO members played a harpsichord...

Richard Dobson

Eric Scheirer wrote:
>
> It is a common misconception that the note-off velocity is
> a useful MIDI feature. This is not the case; to quote
> directly from the MIDI specification:
>
> "Some keyboard instruments implement release velocity
> where a Note-Off code accompanied by a 'velocity off'
> byte is used. A receiver must be capable of recognizing
> either method of turning off a note, *and should
> treat them identically.*" (emphasis added)
>
> The SAOL spec treats them identically; that is, as described
> in 5.14.3.2.4. There is no way for a SAOL program to access
> the noteoff velocities. Content authors who want some
> special controller action on note-off should use a controller
> just before or synchronous with the note-off; this is the
> practice recommended by the authors of the MIDI spec, I
> think.
>
> Several of the authors of the MIDI spec helped us write the
> MIDI parts of the SA spec. As a result, the spec generally
> takes a "hard-line" approach to MIDI rather than a looser
> "common practice" approach.
>
> Even aside from this, it's a logical confusion of the roles
> of control and note-duration to think of a "release velocity."
> A release is a release, and if you want continuous control,
> you should use a controller.
>
> You can figure out when the note has been released by looking
> at the "released" standard name:
>
> // k-rate
>
> if (released && !extended) {
> extended = 1;
> extend(0.5); // stay on for 1/2 second
> releaseval = MIDIctrl[10];
> ...
> }
>

-- 
Test your DAW with my Soundcard Attrition Page!
http://wkweb5.cableinet.co.uk/rwd (LU: 23rd August 1999)
CDP: http://www.bath.ac.uk/~masjpf/CDP/CDP.htm (LU: 14th June 1999)



This archive was generated by hypermail 2b29 : Wed May 10 2000 - 12:15:34 EDT