Touch OSC XY pad


is there any hack to use xy pad on OSC, because now notch can red only one value and extractor don’t see any of them ??


Correct me if I’m wrong but I think you are having problems mapping the X and Y of the pad separately. The problem with mapping them separately is that the OSC output from Touch OSC’x XY pads send a message with both X and Y in the same message, even though Notch can only read one. So you need to use MIDI output in Touch OSC to get this working until they support more than one value at a time. With MIDI output, you can set a separate CC channel for X and Y. To get them mapped properly, you can make little buttons in Touch OSC with the same CC channels so you can make sure they are mapping separately.

another way I use is little program that catch OSC string and split it to two new OSC strings. BUT everything is better if it’s one software.
About solution with MIDI I will check if correctly work with my ideas.
BIG Thanks!

I ran into the same issue and could not find a software that could split the data easily on windows.
I wrote this little Processing script that does it for you:

[scode lang="{java}"]{/**

  • OSC XYPad Split v1.0 by Charlie leroy
  • Heavily based on oscP5oscArgument by andreas schlegel
  • Simply Split a combined XYPad from OSC to two feed x and y.

import oscP5.;
import netP5.

OscP5 oscP5;
NetAddress myRemoteLocation;

//Enter your settings here:
int incomingPort = 4000;
int outgoingPort = 4001;
String outgoingNetAddress = “”;

String incomingOSCpatern = “/1/xy1”;
String incomingTypeTag = “ff”;
String outgoingOSCpaternX = “/XY/x”;
String outgoingOSCpaternY = “/XY/y”;

void setup() {

/* start oscP5, listening for incoming messages at incoming Port*/
oscP5 = new OscP5(this,incomingPort);
myRemoteLocation = new NetAddress(outgoingNetAddress ,outgoingPort);


void draw() {

void oscEvent(OscMessage theOscMessage) {
/* check if theOscMessage has the address pattern we are looking for. /
if(theOscMessage.checkAddrPattern(incomingOSCpatern)==true) {
check if the typetag is the right one. /
if(theOscMessage.checkTypetag(incomingTypeTag)) {
parse theOscMessage and extract the values from the osc message arguments. */
//print("### received an osc message /test with typetag ff.");
float firstValue = theOscMessage.get(0).floatValue(); // get the first osc argument
float secondValue = theOscMessage.get(1).floatValue(); // get the second osc argument
oscP5.send(outgoingOSCpaternX,new Object[] {firstValue}, myRemoteLocation);
oscP5.send(outgoingOSCpaternY,new Object[] {secondValue}, myRemoteLocation);

  println(" Sending values:"+firstValue+", "+secondValue+" to "+ outgoingNetAddress+" On Port :"+outgoingPort );

println("### received an osc message. with address pattern “+
theOscMessage.addrPattern()+” typetag "+ theOscMessage.typetag());

you will only need the oscP5 library.



no tested but new release have improvement :wink:

Yes! it is much better now, you can now select the channel needed and scale it easily!