Moving Head Pan and Tilt with PS4 Controller

Hello All,

I am pretty new to Midi and Bome. I got some things that worked out but now I face a Wall.
I am the Grandma3 Console and Bome Translator Pro.
I want to use a Playstation 4 Controller and the two sticks to control Pan and Tilt.
Inside of GM3 everything is set up but I have some troubles with the right Translators.

Since the Sticks are not endless I want to send the last Midi Signal 127 over and over again to keep “scrolling” (Pan left - right, Tilt up- down).
I found this question a lot but haven’t found the best solution.
I tried it with Timers but I seem to miss something.

In the End I want to have “zones” on the stick that give out more signals or less depending on the degree of the stick. To tilt/Pan “faster” or “slower” and keep going once I reached 127.

I thought about dividing the Timer Repeat Time depending on the “speed zone” on the stick between 64 and 127. But I don’t get it to work without also sending Control Changes outside of the repeating timer.

Right now the timer is good when I hold on 127. (I used 1 Timer with 2 Notes with 125 and 127 to trick GM3 into thinking it is a new signal), but everytime I change the Note with the Stick it sends Signal out. Which is doubling my signals.

Does maybe somebody tried this once before and has some help? I seem to be missing something fundamental.

Thank you,
kind regards

Interesting, How did you get your PS4 controller to send MIDI?

What does GMA3 need in the way of MIDI signals to Pan and Tilt or are you using some other outgoing action.

Perhaps if you were to share your current MT Pro file, I could help further.

Steve Caldwell
Bome Customer Care


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

Hello Steve,

Thank you for your reply. I build this file based on your input on an older topic. It was for a mouse wheel and didn’t fit my setup perfectly but the idea was the same. To “keep going” after 127. Thats why most of the translators are actually yours. I hope thats ok for you :smiley:

I am using DS4 Controller to simulate a XBOX Controller and then OS Box PS Midi Control to send Midi. Input this into Bome and out to GM3. I don’t have any emotions towards the PS4 Controller, it is just the only one I have lying around.
Inside of GM3 I am replicating the hard input of the Encoder Wheels to put the hard values into the Programmer. I have some macros inside of GM3 to change the resolution so every Signal change send from Bome is a relative that I can change (natural readout for the pan, tilt f.e. -255 - +255, with resolution of 5, 1, 0.1).

I attached my file. It is messy and half of it is yours :smiley:
When I move the stick inside this range I want to send timer signal but no Note Change as it is now.
for example
64 - 84 timer4
84 - 104 timer
2
104 / 127 timer normal
The Sticks are 0 - 127 on the X axis and y axis so 64 is middle point. For GM3 I splitted it into 2 Notes with 1 - 63 and 65 - 127 for left and right/ up and down.

any ideas?

Thanks in advance

PS4 Controller V3 Bome Forum.bmtp (14.3 KB)

Well the project file you sent me had problems. First you are using the global variable ga to track the state of all timers. It the example below I use global variables. For each timer state you will need to assign a different global variable. I also set it up so that global variables are used for certain trigger points.

The mouse movement didn’t translate that well for what you are doing so I wrote it to make more sense for note-on messages.

I leave a ±5 from mid point trigger point to ensure within this range, no timers are running.
I use ±20 from mid point for the speed up algorithm.

// mid point first knob
ga=64
// hysterises +-5
gb=5
// Speed up point +-20
gc=20
// Right timer running
gd=0
// Left timer running
ge=0
// gf initial ms between output
gf=250

I set up some housekeeping in a new “Init” preset to ensure timers are killed and global variables are set.

For each controller that you move you will need to duplicate my translators and set up different global variables for each timer and the hysteresis and speed up values. This is beyond the scope of free support but should get you started.

Here is the project file:

encoder-to-note-2021-10-19.bmtp (3.7 KB)

If you want different ranges for different timers, then set up different translators and different global variable for each. Trigger only the translator you want along with the global variable for it’s timer running flag.

Steve Caldwell
Bome Customer Care


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

Hello Steve,

Wow, thank you very much. It really looks prettier when you do it.
The speed ups work really well.

The only thing I am still struggling with, which was the same with my previous translator is that if the timer sends infinite 127 Midi Signal then the GM3 doesn’t recognize it as different signals. It just gets 127 one time but doesn’t repeat the 127 signal.
I tried it again with a second timer who is sending a different value (125) with the same timer as the 127 value and then GM3 does recognize it but then I have the problem again that the signal is not just send with the timer but with every value change.
then it is not as controllable as I would like it.

Is it possible to send an alternating value with one Timer, like 0/127 in succession after another to trick the console into thinking it is always a different value?

I was looking through the old forums as well, maybe this is a Grandma specific thing?

Thank you,
kind regards

Hi, I’m not that familiar with GMA 3 but you can try this. Now I send both note on and note-off with one translator each

For Right
90 0a 7f 90 0a 00 is Note on note 10 value 127 and note off note 10 value 0

For Left
90 0b 7f 90 0b 00 is Note on note 11 value 127 and note off note 11 value 0

Let me know if this does it.

encoder-to-note-2021-10-20.bmtp (3.5 KB)

Steve Caldwell
Bome Customer Care


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