Midi Note-offs

Official support for: mutools.com
RELATED
PRODUCTS

Post

Hi
Thank you all for your responses.
Nenneb... thanks for the link to the Piz midi VST's... I thought those plugins had been lost forever since the Insert-Piz-Here website disappeared :-)
The Akai device (APC Key25) does the usual thing of changing LED colour depending on note-on velocity and I suppose the logical thing for the designer was to use velocity zero as "turn off the LED". It has an Abletion script which sends the correct message and I guess the unit isn't meant to connect to anything other than Ableton. As far as note (musical) messages go the MIDI spec is quite clear that Note-on-zero-velocity = note-off. But then I guess this is not a "musical" message so whether the unit needs to comply is debatable. Interestingly I believe there are a few synths out there that actually respond to the velocity of note-off (decimal 128 - 143) messages and some keyboards that send as well. Can't picture it myself.
With regard to my problem, I have knocked up an Arduino + USB host for the Akai which also passes the power. Hacked the Arduino's serial chip for USB midi to the PC and written a bit of code to do the translations. Sort of thing I enjoy doing :-)))
Cheers!
Paul

Post

mutools wrote: Tue Apr 30, 2019 12:12 pmExactly! That's what MuLab does. And that's what the Akai device does not.
MuLab is NOT receiving here.

In my view, the spec does not tell the sender to substitute one value for another.

Post

pljones wrote: Tue Apr 30, 2019 5:05 pm
mutools wrote: Tue Apr 30, 2019 12:12 pmExactly! That's what MuLab does. And that's what the Akai device does not.
MuLab is NOT receiving here.
MuLab is also receiving MIDI: From MIDI input, from VST plugins, from MIDI files.
In all cases MuLab receives MIDI it does support both Note Off versions.
In my view, the spec does not tell the sender to substitute one value for another.
It does not tell one has to do so but the MIDI specs say the 2 note off versions are equal.
So there is nothing wrong with replacing a 0x90 + vel 0 by a 0x80.

Post

Except that it destroys information. (I view the byte stream transmitted down a cable as that - if it gets changed during transmission, that's data corruption. Changing a value between MIDI In and MIDI Out "just because" is, in my view, therefore also data corruption; I might have a SysEx message in the byte stream every 120 beats that contains a checksum of the data transmitted so that the receiver can validate reception -- changing a Note On vel 0 to a Note Off vel 0 will invalidate that. This would be an entirely valid and spec conformant use of the MIDI protocol.)

Post

Are you saying that if some MIDI device would receive running status and outputs non running status that it is an invalid and corruptive MIDI operation? If that's your statement please quote the MIDI specs that prohibit that.

Post

Actually I think you put your finger on it there Jo. I believe Running Status was a later addition to the midi spec to allow increased data flow at Midi's limited Baud rate. I'm pretty sure that Note-off as a Note-on with zero velocity was introduced at that point... makes sense as much of the midi stream is note data. As manufacturers generally did not bother to make use of velocity with note-offs, it must have seemed a sensible sacrifice.
I have several of those mega cheap "Rockband" game keyboards here (which I use for hacking and custom controller builds) and they actually DO output varying velocity on Note-off depending on release speed of key!!
Another message that is sometimes used but not passed on is Active Sensing.
Paul

Post

Actually just had a look on ebay and those Rockband keyboards seem to have gone up a bit :-(
Last time I bought a couple they were just £7 (UK pound) each.... and with a lovely 5 pin midi-out socket!!!

Post

The MIDI 1 spec was written before all that much processing happened "on the wire". You were either a MIDI source, with a MIDI Out port, or your were a MIDI sink with a MIDI In (and maybe Through) port. One thing that's always been clear is that "Through" is byte for byte what comes in on In. Now, once you have a device with both MIDI In and MIDI Out, you get more complicated and you're asking more of the original spec than it was designed to provide. It does not intend to give guidance on how a MIDI event received on MIDI In should be presented on MIDI Out as that wasn't seen as something that needed explaining - it wouldn't be happening. So you have to think, "What's the nearest thing to that they did explain?" and that's the Through port. If all you're doing is receiving an event and passing it through, it shouldn't really - in my view, as the spec won't tell you - change, as you're doing a software emulation of a MIDI Through port.

If you're originating your own events to emit through MIDI Out, that's a different matter. You can choose to use running status, or not; you can choose to use Note Off or Note On vel=0.

However, for best support when you're a software sequencer with a built in modular event processor, you really want to give people flexibility, I'd have thought - so it's not "you can't have that", it's a "this is how you do it" approach.

At the moment, event processing support in MUX is pretty limited, really - I've so often had to resort to scripting languages to resolve trivial event translation issues that I'd have expected, by now, to be able to resolve. Essentially, I'd expect to be able to tell MuLab/MUX to emit any valid MIDI event I want, ideally with lots of support for how I want to generate that event.

Post

I still fundamentally disagree that MuLab and other DAWs (eg Reaper) do anything wrong by sending Note Offs as real 0x80 Note Offs, even if they would have been received as a running status 0x90 Note Off. Your argument that DAWs must act as a MIDI thru is your personal argument, but i don't accept that as a true argument, sorry. What MuLab and Reaper (and most probably most other DAWs) do is is perfectly valid MIDI. It would be an absurd complication if DAWs would have to add a property for each and every event whether that event was received as a 0x80 Note Off or a 0x90 Note Off and let the user control that etc. The MIDI specs are clear: A 0x80 Note Off and a 0x90 Note Off are exactly the same thing. For me this whole discussion only has one simple conclusion: That Akai device is non MIDI compliant by not handling real 0x80 Note Off messages. Unless i would have missed something, i won't comment any further on this, sorry.

Post

If that Akai device uses the same protocol as their original MPC40:
https://lab.deep.bg/APC40_Communication ... _rev_1.pdf
H E L P
Y O U R
F L O W

Post Reply

Return to “MUTOOLS”