Gestures for Keystrokes

I have a question…kind of similar
I have a core translator that was used for midi with all the gesturing stuff and for Cubase etc it is amazing because of the parametric nature of the code, and the vast number of addresses in midi it all works

G1) Single press = Note Num n
G2) Single Press Hold = Note Num n + 12
G3) Double Press = Note Num n +24

You get the idea

I want to use the same base code ie gestures but the program Im using only accepts keyboard shortcuts
So I will programtically make a whole bunch of translators up and use the call preset by number
The number of a preset might be
First field is channel
Next number is the note number for Gesture 2 (12)
100 + 12 = 112

So the translator number will be 112
This translator will be purely a keyboard output eg ctrl + shift + F5
but will be pretty vast lists

for a simple single trigger event like this, is the example provided still the best for this type of idea?

The actual output schematic is something like…which also includes qualifiers so a single key has a lot of power


Hi and welcome back!

Since this request focuses on gestures, I moved it to a new topic.

Well this is maybe not the way you envisioned but this might work.

Here I use the new ‘Perform’ feature of Bome MIDI Translator 1.9.1 to create gestures.

Preset 0 is the house keeping stuff. Setting global variables, etc.

Preset 1 is for preset management of the gestures and will select presets 3,4,5 and 6 depending on whether you have pressed or released Shift, Control, and Alt on your computer keyboard. If you want to handle combinations like Alt+Shift for qualifiers, You will probably need to change translators in this section to create additional presets for these combinations.

Preset 2 handles counting taps and holds to determine what parameters to pass to pass to the the gestures.
Translator 2.4 actually does perform ‘Gesture’ calls with 3 parameters.

  • Parameter 1 is the MIDI CH
  • Parameter 2 is the Note Number
  • Parameter 3 is the tap count

The Perform ‘Gesture’ looks at these 3 parameters to determine to fire the outgoing action or not. Right now, I have no outgoing actions and moset of them are set for MIDI CH1 (0 base) note 0, with the current tap count.

I have a few translators for MIDI CH1 note 1 so you have a model if you need for other channels and notes.

Instead of outgoing actions I just have log messages indicating which are being executed.

You can add your own outgoing actions with the necessary keystrokes as you prefer.

At this point I don’t have any translators in the presets for Shifted, Control and Alt. You can add as you wish modeling the translators I created.

Good Luck!

Gestures-with-perform.bmtp (12.6 KB)

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Thanks Steve
Ill check that out…am buy til end of week now but look forward to it
Appreciate the efforst

Ok…dont think we are on the same page although your example is very nice and neat.

This project is all about keystrokes etc
I have translators that just set a number (based on bitmasking) ie
h1 = qualifier status
0 = no qual
1 = ctrl
2 = shift
4 = alt etc
These form the base index
Base_Index = h1 * 1000

Ctrl+Shift = (1+2) * 1000 etc

Each single keypress (non qualifier) is a range of function keys from 13-24 (as they are generally unused) and contain an index made up of the gesture and key with a multiplier for the offset

F13 = 1 (*10)
F14 = 2 (*10) etc

F13 single press = 1
F13 single hold = 2 etc

So now we can assemble an index by
Qualifier + keynumberoffset + gesture

Ctrl + F13 single click = 1000 + 100 + 1
(I will cut this all over to binary once I have proof of concept)

All this data will programaticallly generate a list of indexed and named translators that are just 1 shot keys back out again
ie Translator 10101_“Command Name” is the name from a list of remote program names eg “10101-Hide_Selected”

I want the original translator to fire this translator using the number it generates
eg Fire translator “10101*”

Can this be done? It must be done programatically as its just too painful and lets me manage it in a spreadsheet…much easier

Well no, you cannot fire translators by number. You can only select presets by number. Also you would need a separate translator for each key in all of their and all of the qualifiers.

What you can do is use perform, with a parameter as I did and have each perform translator look at that parameter and decide whether to fire or not.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Thanks again
Yes, ill check “perform”…sounds like the key…lol…sorry about the pun
Can the translators be numbered by user or is it auto?

They are auto numbered, however the titles are editable. Of course since you can’t call them by number then the numbers are not useful anyway unless you call them out by reference when discussing your project with another user.

We have 4 videos on the new Perform feature.

Tutorial: Using the Perform Rule in Bome MIDI Translator Pro

Tutorial: Using Perform with Parameters in Bome MIDI Translator Pro

Tutorial: Perform one Action from multiple Triggers in Bome MIDI Translator Pro

Tutorial: Execute Multiple Actions with Perform in Bome MIDI Translator Pro

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Nice Steve
Very straightforward

Well if I can all by name, ill just keep the name as the pure number and add the description in the “incoming description” field


Can I format numbers and strings to concatenate an appropriate name?


You can only call perform by numbers (32 bit signed integers). I don’t know how you are automating the creation of translators but for translators with outgoing keystrokes and/or rules it would be quite difficult do the the format the the text in the project file created.

I’m hoping at some point in the future the format of the project file will either be json or XML. In the meantime for met it is mostly.

  1. Duplication translator
  2. Rename it
  3. Change incoming action
  4. Change rules
  5. Change outgoing actino

Then repeat.

I try to use local variables in rules and keep them rather generic so that I don’t have to do a lot of editing.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

I remember doing a huge one a couple of years ago and it was nearly all programatic
Just need to dig it out again…Think i did it in google sheets

The rules are compressed into difficult format with no spaces and I think numbers to determine the length of the lines.
The Keyboard outgoing actions are quite Cryptic and use KAM1 KAM2 actions.
Everything else is pretty much simple text. Maybe you can figure it out.

Oh and if you use ‘Stop Processing’ in the translators, then once you find one with the correct parameter, Bome MIDI Translator Pro will recycle to the top of the list. It is extremely fast anyway but this could save a bit of time if you have thousands of translators.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Yeah you are triggering my memory…I def remember the KAM1 etc…it did take me a while last time, lets hope I commented it well hehe

There were also some enhanced key commands that were added a while back so the format for new ones might have changed.

Will look that up…cheers
These 38 translators were written out programatically and imported back into MTP + 6 for the qualifiers

They generate these with max 2 keys pressed (192 commands from 12 keys, all logically grouped). It takes a while to remember them…but after that, the speed across the program is ridiculous