Midi switch - Button Gestures

im trying to make a sequence of translators which will give the end result of one button outputting 1 signal if clicked once a 2nd signal if clicked twice in quick succession and a 3rd if used any point after the initial timer and then it would then reset

i think thats possible but now im not sure because ive tried for a while and i cant get my head around the logic in the context of the program

Hi and welcome to the Bome community!

What you are describing are what I call ā€œgesturesā€ and yes, this is possible.

The attached program can do this. In this example I use MIDI CH 0 note 9 as the incoming note. This is done in preset 3 ā€œGestures Unshiftedā€. I can add gestures for as many notes and MIDI channels as I would like but it takes a while to set up so I only added translators for 9 gestures for note 9 and 3 gestures for note 10.

We do this by using a timer to count button presses and releases. Note numbers and timers are tracked in preset 2 ā€œGesture Managementā€. You must have your controller set for ā€œmomentaryā€ to properly count both presses and releases.

In the rules for the translator within preset 3, we set the target note number, MIDI channel and count to trigger the outgoing action.

Here are the rules of translator 3.2 (preset 3 translator 2)

// First parameter is  MIDI CH
// Second parameter is Note Number
// Third parameter is count
if zz==1 then Log "Log Gesture called with ch=%oo% note=%pp% count=%qq%"
// The 3 parameters below are what you need to modify
// To determine the desired outgoing trigger for this translator
// Which channel  - In this case channel 1
if oo!=0 then exit rules, skip Outgoing Action
// Which note number
if pp!=9 then exit rules, skip Outgoing Action
// Which count 
if qq!=1 then exit rules, skip Outgoing Action
// Look if it is note off
if ga==0 then Perform "GestureRelease", oo, pp, ge
// First parameter is MIDI CH
// Second parameter is note number
// Third paramter is last gesture count
if ga==0 then exit rules, skip Outgoing Action
Log "Log Perform Success on Gesture Single push and hold MIDI CH %oo% Note %pp%"

// First paramter is note number
// Second parameter is color number
// Third parameter is MIDI Channel

Perform "LED",9, 127 ,8

qq=0

We compare the incoming value with the desired MIDI channel, note number and push/release count, to determine if the outgoing action triggers. Each translator in the series has the same channel and note number but a different count. We also have a rule within each translator to update LED of a desired attached controller.

We rely heavily on the new ā€œPerformā€ action that was introduced in Bome MIDI Translator Pro version 1.9.0.

I set up my aliases as follows:

You can learn more about aliases from this tutorial.

I know there is a lot of moving parts here for a new user so perhaps if you can describe the MIDI channel, note number and gesture you want for a given button, I can modify the project file to align more with your needs.

In summary, preset 2 handles the counting of given pressed and released buttons using a timer and preset 3 handles the evaluation to determine the action you want to take with a given button and gesture.

Gestures-with-perform-LED-Feedback-2025-05-14.bmtp (17.6 KB)

Steve Caldwell
Bome Customer Care


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

well then, hmm

im using a fcb1010 so i don’t think i can get a momentary out of it without modding the board

i was going to output to a virtual the input and outputs values actually dont really matter i was going to input a free cc and output a midi note off

Well you might want to look into different firmware if the native firmware does not allow momentary (messages when pressed and messages when released) action.

Uno 1.0.4 firmware allows it as well as Uno Firmware 2.0.

Although bit trickier, you can also use EurekaProm 3.0 in IO mode, however the programming would be different since in IO mode it sends various CC values and not notes.

I’m not 100% sure what stock FCB 1010 tap tempo actually sends but my guess is the stock chip only sends notes on button press.

Of course, you could always still press multiple times but you would need to set the timer to count differently than my project does. It would only count on press and not on release so a double press note on with the stock FCB100 firmware might count as 2 instead of 4.

If the button toggles, you would have to double press very fast to get to a 2 count.

Steve Caldwell
Bome Customer Care


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

From this statement in the Stock FCB-1010 manual, I think you might be able to get what you want.

If you program the NOTE function with a PRESET, a NOTE ON command will be sent each time you select the PRESET. Getting your foot off the switch transmits the NOTE OFF command.

Steve Caldwell
Bome Customer Care


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

looper.bmtp (2.7 KB)

this works i think at least functionally inside of bome. but for some reason Ableton super dosnt like it and wont process the midi outputs, if i change them to keyboard keys it works which seems strange… what is this magic and is it evil

Hi,

  1. Assign an Alias ā€˜Ableton Live’ to your desired MIDI output port. It will make it more clear to you which port is using Ableton Livee.

You can learn more about aliases from this tutorial.

  1. Remove the MIDI through paths. Let the translators handle it.

  2. Set up your translators to receive from and send to the appropriate devices. Right now they received from every MIDI incoming port and send to all outgoing MIDI ports.

For more information about device selection, see this tutorial.

Steve Caldwell
Bome Customer Care


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

that did it seems to be working fine.

thank you so much i really appreciate it i hope you have a good night/day (depending on time zone)

1 Like