Dealing with accidental double/duplicate midi messages

Hi all, I’m new to Bome Midi Translator.

One of the things I’m trying to accomplish has to do with my foot controller, an FCB1010, which I use to control rackspace/instrument changes in a live setting (several times a song). The FCB sends out a single PC message in order to move forward a rackspace/song part. Ocassionally, for whatever reason, the FCB1010 sends out two consecutive midi messages on a single button press. I’m assuming either because I’m accidentally double tapping the button or because I’m holding the button down for too long. Either way, this is not ideal because when it double taps, it will send me past the rackspace I need and onto the next one (for example, coming from the verse, I’ll try to change sounds for the prechorus and a double tap will put me on the chorus rack.)

I’ve seen my issue/use case talked about tangentially on the forum in different iterations but I don’t think I’ve seen a solution that fits my use case. I’ve seen suggestions to have Bome ignore every other duplicate message, which is not good becuase most of the time, I’m only sending one PC command as intended. I’ve also seen suggestions involving a timer to recognize duplicate messages within a certian timeframe as a double click in which case to send an alternate message different from a single click. This would be useful, however I believe the way it’s set up is for Bome to not perform any action until the timer is up, and I need an instantaneous reaction on the first message sent, rather than waiting for a timer to run its course.

I’m looking for a way for Bome to block duplicate messages within a 200-250 ms window but to act on the first sent message (which would also start the timer). Again, I’m very new to Bome and just started using it today so I haven’t set up anything beyond basic note/channel transformations. Haven’t gotten into the more advanced translator functions, just trying to make sure this program can do everything I need it to before sinking more time into it! Any help is appreciated, thanks in advance.

Hi and welcome to the Bome community!

First of all before we try to fix it, we should make sure we find out what is actually being sent so that we can determine the strategy to take to eliminate duplicates, while allowing valid MIDI.

What would help in this regard, is to turn on logging in MT Pro for input and pressing the problem pedal that is sending duplicates. That way we could look at what it is sending.

You can do this by turning on the Log by either View–>Log Window, keystroke F8
or pressing the log window ICON.

image

Log-Icon

Then at the bottom, check the MIDI IN box as shown below. You can also check he MIDI OUT Box to see how processing is working.

Finally, a copy of your Bome Project file might shed some light on things.

Steve Caldwell
Bome Customer Care


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

Here’s my log when pressing buttons on the footswitch. The first 27 messages are me pressing a button on the FCB1010 which is programmed to send a PC message (this is what I use to flip through rackspaces). Most of them only registered one message per press, however a couple of them sent 2 duplicate messages when I only pressed the button once.

I then pressed a different button (starting at log number 29) mapped to a midi note. You’ll notice a midi note on and off message for each button press. Furthermore, there’s a CC message being sent after every other midi note press. Based on past research, this is just something the FCB1010 does automatically no matter what after 2 consecutive midi note on & off messages (could be the same midi note or different midi notes, it always sends that CC following two presses for midi notes)

For both the PC button and the MIDI Note button, most of the time, a single press was registered correctly as only one message. However, a handful of them showed two consecutive messages (either PC or Note on/off) when the respective button was only pressed once. As you’ll see from the log, they look identical from one another.

I also attached my project file as requested, though I don’t think you’ll find anything helpful in there, as I haven’t tried tackling the double trigger issue yet as I’m still trying to wrap my head around the correct logic for using timers. The project file is just some other translators I’ve been working on for a different controller.

test 2.bmtp (3.5 KB)

1: Opened MIDI INPUT 'Babyface Midi Port 1'
2: MIDI IN [Babyface Midi Port 1]: CB 18
3: MIDI IN [Babyface Midi Port 1]: CB 18
4: MIDI IN [Babyface Midi Port 1]: CB 18
5: MIDI IN [Babyface Midi Port 1]: CB 18
6: MIDI IN [Babyface Midi Port 1]: CB 18
7: MIDI IN [Babyface Midi Port 1]: CB 18
8: MIDI IN [Babyface Midi Port 1]: CB 18
9: MIDI IN [Babyface Midi Port 1]: CB 18
10: MIDI IN [Babyface Midi Port 1]: CB 18
11: MIDI IN [Babyface Midi Port 1]: CB 18
12: MIDI IN [Babyface Midi Port 1]: CB 18
13: MIDI IN [Babyface Midi Port 1]: CB 18
14: MIDI IN [Babyface Midi Port 1]: CB 18
15: MIDI IN [Babyface Midi Port 1]: CB 18
16: MIDI IN [Babyface Midi Port 1]: CB 18
17: MIDI IN [Babyface Midi Port 1]: CB 18
18: MIDI IN [Babyface Midi Port 1]: CB 18
19: MIDI IN [Babyface Midi Port 1]: CB 18
20: MIDI IN [Babyface Midi Port 1]: CB 18
21: MIDI IN [Babyface Midi Port 1]: CB 18
22: MIDI IN [Babyface Midi Port 1]: CB 18
23: MIDI IN [Babyface Midi Port 1]: CB 18
24: MIDI IN [Babyface Midi Port 1]: CB 18
25: MIDI IN [Babyface Midi Port 1]: CB 18
26: MIDI IN [Babyface Midi Port 1]: CB 18
27: MIDI IN [Babyface Midi Port 1]: CB 18
28: MIDI IN [Babyface Midi Port 1]: CB 18
29: MIDI IN [Babyface Midi Port 1]: 9B 72 64
30: MIDI IN [Babyface Midi Port 1]: 9B 72 00
31: MIDI IN [Babyface Midi Port 1]: 9B 72 64
32: MIDI IN [Babyface Midi Port 1]: 9B 72 00
33: MIDI IN [Babyface Midi Port 1]: BB 00 00
34: MIDI IN [Babyface Midi Port 1]: 9B 72 64
35: MIDI IN [Babyface Midi Port 1]: 9B 72 00
36: MIDI IN [Babyface Midi Port 1]: 9B 72 64
37: MIDI IN [Babyface Midi Port 1]: 9B 72 00
38: MIDI IN [Babyface Midi Port 1]: BB 00 00

Some other information that might be helpful that I forgot to add:

  • A single PC message is sent on the “down” press, and nothing on the “up” release for the PC programmed button.

  • For the button programmed to a midi note, Note On is sent on the “down” press, Note Off on the “up” release.

  • If possible I would like the translators that kill a double trigger to be able to filter accidental double triggers for both the PC button and Note button within 250 ms. I understand that because the midi note button sends both a note on and note off message each trigger, that it may make things difficult.

  • Finally, I found an old project file last night on the Bome forum archives (after I posted here) where someone is doing something similar to what I intend to. However, I got confused looking at their project file as they were using a 0ms timer translator before a second timer with an actual length and I couldn’t for the life of me understand why. They also had an additional translator that involved transposition that I felt was muddying things a bit for me. Here’s that project file (not mine) for reference: Kill Double Trigger.bmtp (3.0 KB)

See my previous comment for my project file “test 2” and log.

Hi,

The attached should give you the desired effect. In my case we are passing through program change messages only and since there is no MIDI thru path, then nothing else will pass through to your application.

I have the aliases set up as follows. I’m using UMC4040HD as input port but you should set it to point to your Babyface. My outgoing application is on Bome MIDI Translator Virtual 1 Port (BMT 1).

image

You can get to the above screen using the MIDI Menu.

image

The first translator passes through the PC but only if the global variable ga is not 1 (the default value of global variables are set to zero).

The second translator sets the value of ga to 1 thereby disabling the first translator. It also sets a 250ms timer “Watchdog”.

The third translator triggers 250ms after it is set by the second translator and sets ga back to zero, thereby enabling the first translator again.

Suppress-Multiple-FCB1010.bmtp (1.3 KB)

The FCB 1010 can indeed be programmed to send up to 5 MIDI messages on a button press. You can program the FCB1010 with the switches (the difficult way) or with software. I use UNO Control Center which can be purchased here. This software works with both the standard FCB1010 firmware from Behringer or the UNO firmware chip. There are other firmware versions that do not allow programming via the MIDI interface (I.E. EurekaProm).

I noticed that the translators for your project file called out MIDI CH 1 and clearly your FCB1010 is sending on MIDI CH 12.

CB means C- Program Change B- MIDI CH 12.

I hope this helps!

Steve Caldwell
Bome Customer Care


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

Thanks Steve! That did the trick. Still confused why the old .bmtp I referenced above had a 0 ms timer in addition to the logic you laid out here but I’ll save figuring that out for another day. Starting to see how powerful global variables are in the context of Bome.

Yeah I think I programmed the FCB1010 manually all of one time before I went looking for software to make it easier. The one I use is called “FCB1010 Manager.” It’s completely free and really simple to use. All of the mappings for all 10 presets are laid out in a spreadsheet that makes it easy to keep track of the mapping logic and save/transfer presets between files. Even has a software FCB1010 GUI option to test things out before overwriting the presets to the hardware controller. I’m probably one of the remaining few who doesn’t have an UNO chip and am still on the Behringer firmware. But thanks for the suggestion regardless!

Yep, I may not have communicated clearly above, but I tried to mention that the only translators set up in my project file so far were for a separate midi controller (APC mini) that transmits only on CH 1. The FCB sends on CH. 12, as intended.

Thanks again for the project file! this is extremely helpful, and I’m looking forward to getting the most out of my controllers with this software.