Note Off ignored

I just programmed my first project, and it works almost. There are two problems:

In translator [0] I’m sending program changes when key F7 is pressed. This works, but I hear the sound of the F7 note although I clicked on “Swallow MIDI message”.

In translator [3], I have duplicated translator [2] (Note On) and changed it to ‘Note Off’, but still all notes are sustained indefinitely, just like the Note Off preset would not be there.

Here’s the project:
My Split Keyboard.bmtp (2.6 KB)

I’m stuck with this.

OK, you have 1 preset “Let’s Face” which is preset 0.
Under that you have 3 translators which are numbers 0,1 and 2

Hereafter I use the following notation:
preset.translator - IE 0.1 or 0.2 or 0.3
Using same terminology will make it easier to communicate.

0.0 - Takes input from all defined inputs (which is only 1 right now) and send the Raw MIDI to all defined outputs (which is only 1 right now). First I would review how MIDI port selection works which will be more important when your project gets more complex. See this tutorial.

Input note-on MIDI CH 2 note 101 any velocity

0.1 - Is similar input but take any note (including note 101)

If you want to suppress the note, you can add another translator that will block notes higher than 100. See the first and last rule here

rr=0
if pp<=49 then rr=5
if pp<=49 then exit rules, execute Outgoing Action
if pp<=64 then rr=6
if pp<=64 then exit rules, execute Outgoing Action
if pp<=100 then rr=7
if rr==0 then exit rules, skip Outgoing Action

With that said, since the translator doesn’t execute, swallow will not work so you need to either.

  1. Put another translator with same incoming action with outgoing action of none and rules to make sure it executes
    or
  2. Remove the MIDI thru path.

Since you said you would be also sending SysEX. I will update it with option 2.
See translator 0.2 which I added.

For note-off, you want all note-off message to go to the same MIDI CH as the note-off so I just added the same rules in 0.3 (was your 0.2) that I added in 0.1

I added a blocking translator for other note-offs as I did with note-on in 0.4

Here you can see both input and output:

1: MIDI IN [Bome MIDI Translator 1 Virtual In]: 91 65 7F
2: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B5 00 00 C5 20 B5 07 3F B6 00 10 C6 19 B6 07 3F B7 00 00 C7 00 B7 07 7F
3: MIDI IN [Bome MIDI Translator 1 Virtual In]: 91 65 00
4: MIDI IN [Bome MIDI Translator 1 Virtual In]: 91 00 7F
5: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: 95 00 7F
6: MIDI IN [Bome MIDI Translator 1 Virtual In]: 91 00 00
7: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: 85 00 00
8: MIDI IN [Bome MIDI Translator 1 Virtual In]: 91 40 7F
9: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: 96 40 7F
10: MIDI IN [Bome MIDI Translator 1 Virtual In]: 91 40 00
11: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: 86 40 00
12: MIDI IN [Bome MIDI Translator 1 Virtual In]: 91 64 7F
13: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: 97 64 7F
14: MIDI IN [Bome MIDI Translator 1 Virtual In]: 91 64 00
15: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: 87 64 00

I hope this helps!

My Split Keyboard-sjc.bmtp (3.2 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

0.2 - Note-Off Input on MIDI CH 2 with any velocity

Thank you so much, Steve, for these clarifications.
Sorry that I called translators presets. I have corrected my post.

Your corrected project works well, but the next problem arises. The sustain pedal has no effect on all 3 channels. Likewise, I have a reverb controll knob on my keyboard, and it has no effect as well.

Before I implement your advice (below) on suppressing the sustain pedal for two channels and allowing it for the other channel, I have to understand what’s going on here.

Rules:
// only do sustain on MIDI CH 8
if oo!=7 then exit rules, skip outgoing action
Outgoing:   Control change 64 on channel oo with value qq
type or paste code here

Hi, I made it even easier. I just added a translator that takes CC64 on any incoming MIDI channel and sends it to CH8 only (Translator 0.5). By having swallow set, CC64 will not come through the MIDI thru path. Note swallow only works if the translator executes where it always does in this case. If you know CC64 will always come in on MIDI CH 2, just change the incoming trigger message to reflect that.

Just duplicate the translator I create and change the input CC to the CC that your reverb knob is sending.

My Split Keyboard-2023-01-26.bmtp (3.5 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

So I have to explicitly ‘allow’ all MIDI controllers or Raw MIDI or SysEx to go through by means of Translators, otherwise they are blocked. That’s what I didn’t realize until now. I think I made a step forward. Thank you for your support.
Alex

Anything that has a translator with a given incoming trigger that completes with swallow on will not go through the MIDI thru path otherwise it will.
If the translator has rules “exit rules, skip outgoing action” then the translator does not complete so swallow is ignored and it will go through the thru path.

Typically I don’t define a MIDI thru path and do everything with translators (to avoid unintended surprises). However, since you want various SysEX message to go through, we put in blocking translators, otherwise, you would have to have SysEX translators with every possible pattern for them to go through.

I hope this makes sense.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz