I'm struggling a lot with XY Pad

Hi there, i've read a lot on this forum and i discovered so many things (Open Stage Control is dope !!) but i'm still struggling a lot for some things.

The first one is how to use the XY pad, i've tried so many things but nothing works for now...
I want to use it for a bitwig controler and i have to send /device/param/1/value for X and /device/param/2/value for Y and i can't figure out to do it...

Someone's got an idea ?

Many Thanks


@hvitur, does it work if you set osc.address to /device/param and set scripting.onValue to

send('/1/', value[0]);
send('/2/', value[1]);


From @hvitur's post it seems to me the correct script would be

// onValue
send('/device/param/1/value', value[0])
send('/device/param/2/value', value[1])

with bypass set to true to prevent the default xy messages from being sent.

1 Like

hi @hvitur

@jean-emmanuel a little issue with the display on vertical axis.

Increase padding if it the number it too long to be displayed.


I mean the padding property.

1 Like

It works perfectly, many thanks !!! What a quick and efficiency support :slight_smile:

Merci beaucoup (je me dis que vu ton prénom, on doit avoir la même langue maternelle, Open Stage Control est vraiment incroyable...)

I will show you my controler when it will be done (it's an hybrid hard and touch controler)

Hmm it's works well but i have an issue.

When i use /device/param/1/value with a simple knob, it's updated if i modify the parameter with my DAW or another controler but when i use
send('/device/param/1/value', value[0])
send('/device/param/2/value', value[1])

The XY pad is not updated when the paramaters are modified somewhere else.

I tried
received('/device/param/1/value', value[0])
received('/device/param/2/value', value[1])

Don't laugh :slight_smile:

The xy pad will always listen on a single address for a pair of values, but there are multiple ways to merge 2 different messages to its value

[OSC{/address_1}, OSC{/address_2}] 
  • using two script widgets, one for each address, with the following code in the onValue scripts:
// script widget 1
// assign received value to x axis
var xy = get('xy_id')
xy[0] = value
set('xy_id', xy)
// script widget 2
// assign received value to y axis
var xy = get('xy_id')
xy[1] = value
set('xy_id', xy)

My brain is about to explode

I've just tested the two first ways (the third one is really too complex for me) with many variants and i'm not able to make it work :frowning: