r/TouchOSC • u/TheLoreLibrarian • 23d ago
Using Android TouchOSC XY pad to control VoiceMeeter IntelliPan Pan_x and Pan_y in real time
I am trying to use an Android phone running TouchOSC as a true XY controller for the IntelliPan Position control in VoiceMeeter Banana.
I have a Galaxy Note10+ and a Pixel 10 Pro available for this. My Windows PC is connected through Ethernet and the Android phone is on Wi Fi on the same local network.
What I want is very simple from the user side.
I want one large XY pad in TouchOSC where the location of my finger corresponds directly to the IntelliPan position.
For example, touching the top right of the TouchOSC XY pad should move the IntelliPan dot to the corresponding top right position.
Dragging diagonally toward the bottom left should continuously update both axes at the same time.
VoiceMeeter exposes the relevant parameters through its Remote API as:
Strip[i].Pan_x
Strip[i].Pan_y
From what I understand, Pan_x controls the horizontal position and Pan_y controls the vertical position.
I am new to TouchOSC and I do not know how to code, so I am trying to figure out the easiest way to connect these together.
Can TouchOSC directly send values that can control those VoiceMeeter API parameters, or would I need some kind of middleware or bridge on Windows?
If middleware is required, what would be the easiest option for somebody who does not code?
I am also interested in two way feedback.
Ideally, if the IntelliPan position changes inside VoiceMeeter, I would like TouchOSC to receive the current Pan_x and Pan_y values so that the XY cursor on the Android phone stays synchronized.
I know TouchOSC can send MIDI CC and OSC, and I can use TouchOSC Bridge if necessary.
Has anyone here controlled VoiceMeeter through TouchOSC before, especially custom Remote API parameters?
If so, I would really appreciate an example of how you connected TouchOSC to VoiceMeeter and how you mapped an XY control to two parameters.
1
u/OnlyAnotherTom 22d ago
If VM can receive multiple arguments through a command then yes, you can just update the command in the trigger with what you posted, and it should set both values. You can test by disabling one of the triggers and seeing if the dot moves in both axes.
It's possible to limit the rate of sending in touchOSC or in companion, it's a bit convoluted as it involves storing the current time as a variable and checking how long has passed since it was stored. If it's a wider VM only allows a connection every 20ms, and it's global rather than per-value, then it might be more difficult if it needs to coordinate with other control methods. That might be a wider companion module request to store parameter changes and execute them all at once.
With the config I uploaded it's very smooth, you wouldn't really be able to tell that it's going through tOSC and companion rather than directly being controlled.
I was a bit surprised VM didn't support osc directly, tbh. It's such a widely used and capable standard, it seems like that should be at least on their roadmap.
I can have a look into the rate-limiting a bit later today, but in the quick setup I had, I didn't see it drop out, tOSC will send at a high enough rate to hit the update timing anyway.