Is the MIDI filter block doing something different?

I often build my MIDI in blocks in two halves… ‘NoteOn only’ & ‘Everything else except NoteOn’. This allows me to have a sort of a patch persist (by holding down the notes or the sustain) within a rackspace. Say I have made a piano/pad combi rackspace and want to momentarily hold the pad whilst continuing the piano over the top, or end the pad smoothly. I can just bypass the NOTE ON midi block for the pad and keep playing the piano. The pad will stop next time I lift the sustain pedal etc etc. It just adds a degree of overlap and smoothing to some transitions. But that’s not the question…

Doing it using the filters on the MIDI in block, results in the note off messages not getting through.

But, if I add a MIDI filter block (as below) to filter the NoteOn messages from the ‘Everything else’ half and do NOT filter them on either midi in block, it works perfectly.

So my question is this; does the ‘NoteOn’ filter in the midi in block do a different thing to the one in the midi filter block? Is it in actual fact, the ‘Notes Passthru’ filter instead? Or…is this a bug (don’t really believe that for a minute!!)? :thinking:

I should add that in order to stop the NoteOn MIDI in block from sending an AllNotesOff message when bypassed, I use another midi filter after that one too.

I suspect the problem is related to this:

  • midi note-on events are (in hex) 0x90 followed by the note number and velocity
  • midi note-off events are 0x80 followed by the note number and velocity
  • an alternative way to send note-off is by using note-on with a zero velocity

I am guessing that your keyboard is using the “note-on with zero velocity” method for sending note-off events. (You can’t tell by looking at the midi monitor.)

It appears that the Midi Filter block correctly recognizes the “note-on, zero velocity” event as a note-off and filters correctly.

It looks like the midi-in block is doing something I don’t fully understand with those “note-on, zero velocity” events.

  • if I start by checking the NoteOn filter box, it filters both the “real” note on (0x80) and the note-on zero velocity events
  • if I check the NoteOff filter box it correctly filters both “real” note off events and the note-on zero velocity events
  • where it gets weird is that if I have the NoteOff box checked, then uncheck it, then check the NoteOn box it lets through a certain number of “note-on zero velocity” events that kind-of matches how many notes I played while the NoteOff box was checked. I didn’t test this extensively, and the behavior seems to become inconsistent if I use multiple keys (e.g., A1, G2, C3) vs. just repeating the same key.

I’m not sure if that’s a bug or some kind of feature that I don’t quite understand.

I often filter note-on commands for the same reason you described, always using the midi filter blocks. I’ve never noticed a problem doing it that way.

2 Likes

Interesting reply, thank you. According to Protokol, my SL Grand appears to be sending the first NoteOff method you described… ?

I’ve always been happy to use the filter block to do this, but I’ve noticed this a few times and wondered if there’s a feature there that I can make use of.