Triggering / random access slides in Open Office Presenter

Hi there, I am struggling to associate an incoming MIDI note with some commands to manipulate a slide show in Open Office Presenter. When a slide show is active, cursor left and right steps back and forth through the slides. This is easy enough to set up.

It would be much better if I could find a way to set up a "key frame" using some kind of index, such that each small sequence of slides could be selected. So, say I have 10 slides per sequence, I might want index 3 to call up slide 30, and use the cursor commands from that point.

Anyone know how to get "slide 30" from "note 3" (noddy x10 maths as an example!). I cannot see a way to randomly access "slide N" naturally in Open Office Presenter. Might need a script or similar.

It would good to find a way to have Translator run automatically when the slideshow software is running. IS there is a simple way to do this?

Many thanks, please forgive newbie questions.

When running a slide show, if you right click on the background, there are Previous, Next, and Go to Slide > Slide N menu options, so it must be possible to target that list somehow.


I don’t have OpenOffice Presenter Loaded in my PC, however perhaps this page will help you. Apparently you can just type the page number and enter while on a given page and it will go straight there. So you would just output the keystrokes with the page number you need as text.

Here is the article that discusses it.


You would also be able to send right click but would have to calculate the X Y position of the mouse to input the page number which might be more difficult.


Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist

Thanks Steve – confirmed- you can type “N [Enter]” on the Keyboard and it JUMPS – perfect!!

Now I need to set that up to respond to “Note NX” so that N becomes 10xN, and X is the 0-9 page within the slideshow… I’ll start with a basic “Note N” > “N [Enter]”.

Open Office is free to download and use. If you have not tried it, you might get on with it. Not as polished as MS Office, but I have found it a perfectly serviceable alternative.

I think I did this some time ago so will have to search my archives to see if I can find it. Basically, the logic is to take the input CC # and then use rules to send out a series of keystrokes in order you want them with timers in between. So you would take the 100’s bit and send out the first number as a single keystroke. Then the 10’s bit and then the 1’s bit and then enter. For 134 you would:

Send 1 Keystroke

Delay 10 msec

Send 3 Keystroke

Delay 10 msec

Send 4 Keystroke

Delay 10 msec

Then send Enter Keystroke


The rules would extract each bit in order.


Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist

Hi try the following file:

ga=the number of digits to send

gb=current digit – Evaluated by Key Sequence timer

gc= the value you want to send 0-999

Modify translator 1.1 to change the value of gc (the number you want to send) and the incoming trigger you want.



Thanks for this in the first instance, Steve – very helpful. But also quite confusing! I can see the basic logic of translating N > digit0, digit1, digit2 over three rules, and a common “keypad” for the digits and return.
I am struggling to see how to get the triger to affect a variable. To clarify, the Note N trigger ought to simply say “CH 12 NoteOn N => gc = N”, and it has to set the process off.
Whenever I view the variables, gc is always 6.
I was approaching it from setting ga to the correct length on detecting a trigger.

if gc>9 then ga=3
if gc>99 then ga=4

And use this to kick the timer off.

Hi David,
You can change your incoming trigger with any MIDI message you want.

You can even add multiple MIDI triggers, each setting the global variable gc to a different value (in the rules section of the translator).

You could for instance, call them Bookmark 1, Bookmark 2 etc. If you do this, you would give each translator it’s own incoming trigger and set the value of gc in the rules of that translator.

I usually just pick from the pool of global variables a describe in the manual ga-gz g0-gn, ha-hz h0-h9 … (skipping over o-x) ya-yz y0-y9.

If you want to go to a page (bookmark) based on the incoming note number instead of having multiple translators, simply have a single incoming translator as follows:

Note On MIDI CH12 Any note set note to gc.


Then the incoming note will go to the page number of that note. gc is your input target number and I think in the example I sent you I set it to 6 on the trigger translator. Set it to anything else and your output will change accordingly.(0-999)

The language is Bome’s own language and described in the user manual.

gb=ga/100 will take the value of ga, divide by 100 and put it in the result into the local variable gb (the 100s digit)

gb=gb%10 is a MODULO (remainder) operator to discard any numbers above 9 so you will be left with a single digit 0-9.


As far as the Init translators, I usually add this to all of my projects. The first one starts a one-shot init timer when the project is open. The second one, when you hit the ESC key on your computer keyboard. The init timer, is where I initially set and document any global variables I’m using so that I can keep them straight (since they don’t have any meaningful real names). So they are for general housekeeping. If you don’t want ESC key to reset the variables, you can safely remove, disable or change the translator.

The the sequence timer is used to sequence through the output of digits left to right. It iterates through 4 values (3 digits plus return) and only one of the 4 translators complete depending on which iteration it is on (value of ga), otherwise it aborts.


The second timer fires 0-9 keystrokes based on the current digit we are on. Then the return is sent. Again, only the timer with it’s own digit completes by using the rule:

if gb!=0 then exit rules, skip outgoing action


The above will only send a keystroke if gb=0


I hope this helps!


Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist




Oh and it should output the number 256 with the example I showed you. If it is doing something else, then something else is wrong. gb should be 6 when done as it is the last digit of 256. (just a left over)

Also I have rules to look for leading digits and not output them if the 3 digit number has leading 0’s. It will only put out the first non-zero digit.
So if 99 it will put out 99 and not 099. If 9, it will only send 9 and not 009. I believe I put comments about this in the rules of the translators that evaluate each digit.

Thanks for such a long response Steve. Thanks fo your help I have cracked it.
I set up an intermediate trigger based on NoteN AnyV Ch16 called TimerN.
This step has two labelled sections: SongSelect and SectionSelect, which are “if velocity < 32 goto SongSelect" split. The rest is maths. SlideN = SongSelect * 16 + SectionSelect. The KeySequence in your rules is triggered by this TimerN, so a SongSelect is treated as an offset of 0. Using this and a 5octave keyboard I can have 61 songs, with 16 slides each, and OpenOffice dutifully jumps to the correct slide, when in focus. I updated your ga=4 rule based upon the incoming note no, since you don't have leading zero issues if you set ga based on >9 and >99.

Thank you!

Glad to help!


Here’s the modified version, Steve, for your files. I’ve not deweeded it, so offered as is, pre-debug-testing.

- It breaks most obviously when the index calculated >999...
- And you need to add 1 to the calculation to correct for the 1...1000 slide numbers in Presenter - your songs then begin on slides 1, 17, 33 etc. but are triggered from C2 - C6.



Thanks for posting, David. I think other users will find this very useful!

I hope so! That’s what a healthy internet is all about.