# Gestures for Keystrokes

**URL:** <https://forum.bome.com/t/gestures-for-keystrokes/5930>\
**Category:** Bome Products\
**Tags:** gesture, perform\
**Created:** [February 3, 2024, 6:24am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930 "2024-02-03T06:24:37Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![mwesse](https://forum.bome.com/user_avatar/forum.bome.com/mwesse/32/2566_2.png) [@mwesse](https://forum.bome.com/u/mwesse)\
**Post date:** [February 3, 2024, 6:24am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/1 "2024-02-03T06:24:37Z")

</div>

I have a question…kind of similar  
BUT  
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

eg  
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

NOW  
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  
100  
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

 ![image](https://forum.bome.com/uploads/default/original/2X/2/2dac070892a97ca10a73eba4942eae98258faf6e.png)

Cheers

---

<div class="post-metadata">

**Author:** ![SteveC](https://forum.bome.com/user_avatar/forum.bome.com/stevec/32/8250_2.png) [@SteveC](https://forum.bome.com/u/SteveC)\
**Post date:** [February 3, 2024, 2:52pm UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/2 "2024-02-03T14:52:35Z")

</div>

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](https://forum.bome.com/uploads/short-url/spc2dQbqav61DlshYw89MOVWDLL.bmtp) (12.6 KB)

Steve Caldwell  
Bome Customer Care

* * *
_Also available for paid consulting services: bome@sniz.biz_

---

<div class="post-metadata">

**Author:** ![mwesse](https://forum.bome.com/user_avatar/forum.bome.com/mwesse/32/2566_2.png) [@mwesse](https://forum.bome.com/u/mwesse)\
**Post date:** [February 4, 2024, 11:13pm UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/3 "2024-02-04T23:13:41Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![mwesse](https://forum.bome.com/user_avatar/forum.bome.com/mwesse/32/2566_2.png) [@mwesse](https://forum.bome.com/u/mwesse)\
**Post date:** [February 5, 2024, 1:09am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/4 "2024-02-05T01:09:16Z")

</div>

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

Gestures  
F13 single press = 1  
F13 single hold = 2 etc

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

eg  
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

---

<div class="post-metadata">

**Author:** ![SteveC](https://forum.bome.com/user_avatar/forum.bome.com/stevec/32/8250_2.png) [@SteveC](https://forum.bome.com/u/SteveC)\
**Post date:** [February 5, 2024, 1:33am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/5 "2024-02-05T01:33:23Z")

</div>

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: bome@sniz.biz_

---

<div class="post-metadata">

**Author:** ![mwesse](https://forum.bome.com/user_avatar/forum.bome.com/mwesse/32/2566_2.png) [@mwesse](https://forum.bome.com/u/mwesse)\
**Post date:** [February 5, 2024, 1:42am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/6 "2024-02-05T01:42:25Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![SteveC](https://forum.bome.com/user_avatar/forum.bome.com/stevec/32/8250_2.png) [@SteveC](https://forum.bome.com/u/SteveC)\
**Post date:** [February 5, 2024, 2:07am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/7 "2024-02-05T02:07:05Z")

</div>

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](https://youtu.be/e_Y5zkOs2xU)

[Tutorial: Using Perform with Parameters in Bome MIDI Translator Pro](https://youtu.be/HxnB2g-tchE)

[Tutorial: Perform one Action from multiple Triggers in Bome MIDI Translator Pro](https://youtu.be/tA2YQ5C1j9c)

[Tutorial: Execute Multiple Actions with Perform in Bome MIDI Translator Pro](https://youtu.be/N5ec7FhQYzg)

Steve Caldwell  
Bome Customer Care

* * *
_Also available for paid consulting services: bome@sniz.biz_

---

<div class="post-metadata">

**Author:** ![mwesse](https://forum.bome.com/user_avatar/forum.bome.com/mwesse/32/2566_2.png) [@mwesse](https://forum.bome.com/u/mwesse)\
**Post date:** [February 5, 2024, 2:17am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/8 "2024-02-05T02:17:35Z")

</div>

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

BUT

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

Cheers

---

<div class="post-metadata">

**Author:** ![SteveC](https://forum.bome.com/user_avatar/forum.bome.com/stevec/32/8250_2.png) [@SteveC](https://forum.bome.com/u/SteveC)\
**Post date:** [February 5, 2024, 2:30am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/9 "2024-02-05T02:30:45Z")

</div>

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: bome@sniz.biz_

---

<div class="post-metadata">

**Author:** ![mwesse](https://forum.bome.com/user_avatar/forum.bome.com/mwesse/32/2566_2.png) [@mwesse](https://forum.bome.com/u/mwesse)\
**Post date:** [February 5, 2024, 2:35am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/10 "2024-02-05T02:35:58Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![SteveC](https://forum.bome.com/user_avatar/forum.bome.com/stevec/32/8250_2.png) [@SteveC](https://forum.bome.com/u/SteveC)\
**Post date:** [February 5, 2024, 2:52am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/11 "2024-02-05T02:52:53Z")

</div>

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: bome@sniz.biz_

---

<div class="post-metadata">

**Author:** ![mwesse](https://forum.bome.com/user_avatar/forum.bome.com/mwesse/32/2566_2.png) [@mwesse](https://forum.bome.com/u/mwesse)\
**Post date:** [February 5, 2024, 3:08am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/12 "2024-02-05T03:08:06Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![SteveC](https://forum.bome.com/user_avatar/forum.bome.com/stevec/32/8250_2.png) [@SteveC](https://forum.bome.com/u/SteveC)\
**Post date:** [February 5, 2024, 3:11am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/13 "2024-02-05T03:11:44Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![mwesse](https://forum.bome.com/user_avatar/forum.bome.com/mwesse/32/2566_2.png) [@mwesse](https://forum.bome.com/u/mwesse)\
**Post date:** [February 5, 2024, 3:28am UTC](https://forum.bome.com/t/gestures-for-keystrokes/5930/14 "2024-02-05T03:28:57Z")

</div>

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

 ![image](https://forum.bome.com/uploads/default/original/2X/4/45a5f30cfccc571f8559b46eae5fc5c4022a19de.png)

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

 ![image](https://forum.bome.com/uploads/default/original/2X/d/d1ca8005c0c921dff6cda7dfc43c05a6d10e40f2.png)
