[sdiy] Release Velocity & Poly Aftertouch -- Too Much?

Rainer Buchty rainer at buchty.net
Thu Jun 30 19:00:09 CEST 2005


>Because with no release velocity, you can use a note on with velocity
>zero as a note off.

Well, if you read on in my posting, then you'll find exactly that 
explanation.

I'm not familiar which equipment is actually sending out those fake 
note-offs, but "back in the days" when I liked to watch raw MIDI streams 
coming from my Commodore 64, I usually found "real" note offs. (In 
addition, MIDI programming courses mentioned the fake note-off only as 
"some instruments do it this way, but this is against the spec".)

>If you start using release velocity, you have to start using both
>note-on and note-off status messages as well as data, so less running
>status and up to 50% more data.

Worst case, i.e. alternating on/off when playing a solo (or bass)  line
you get 6 instead of 4 bytes, agreed. OTOH, those will usually also
employ some controller use (pitch bend, mod wheel, volume and mod pedal,
aftertouch, etc.) interrupting running status. Plus, in a MIDI setup you 
will most likely not reserve an entire link for one single channel. If 
other channels come into play, you need the command byte again.

But let's do the math: a MIDI link will carry 3125 bytes per second;
using the lazy note-off, you'll ideally get 3125/4=781 notes per second
for one single solo channel. Impressive, but unrealistic... So we have a 
resolution of 1/781 at 60bpm compared to 3125/6 -> 1/520 at 60bpm. Still 
more than anyone would need, I'd say.

However, that's rather unrealistic cause we have 16 channels to serve.
So let's assume an optimal 16-channel setup where each channels are
addressed in sequential blocks, i.e. block 1/16 serves channel one,
followed by block 2/16 for channel 2, and so on.

There we have 3125/16=195 bytes per channel. The first note will 
take 5 bytes, all others 4 resulting in 48 notes per channel or 1/768 
resolution at 60bpm.

But as said before, that's more than unlikely. Instead of coming
block-wise, notes on channels will most likely interfere and break the
running status. That will come down to the worst case scenario of a
completely clogged MIDI line, i.e. 3125/6=520 notes, i.e. 32 notes per
channel and second or 1/32 at 60bpm, 1/16 at 120bpm, better than 1/8
(<1/10) at 160bpm. Not really great but still useful.

And this is worst case, i.e. all 16 channels are hammering single
staccato notes and the entire setup uses just one single MIDI link,
which I guess is also rather unlikely -- even in the mid/end 80s when
MIDI was really taking off: my Atari ST has 6 MIDI outs (built-in, 3x
Expander, 2x Unitor), the PC crowd was probably using multiple MPU401
cards.

To make it short: With "normal" playing the additional 2 bytes per note
on/off won't make much difference; using controllers and/or multiple
channels, 5 bytes will be necessary anyways (assuming that no controller
message is happening during a held node), 6 bytes is more likely.

So in the end, that factor of 1.5 is IMO purely theoretical.

>This is only significant for a simple system sending mainly note
>messages on one channel, but that was often the case in the early days
>of midi, and that's when release velocity fell out of favour.

Looking at the numbers above, I still doubt it.

Laziness of the programmers, maybe not knowing what it's good for anyway
(admittedly, prior to this discussion I wasn't aware that release
velocity indeed makes a difference on e.g. a piano -- originally, I'm an
-- electronic, not church -- organist), and/or lack of CPU/keyboard
controller resources sound more reasonable to me.

Rainer



More information about the Synth-diy mailing list