/**
* oscP5parsing by andreas schlegel
* example shows how to parse incoming osc messages "by hand".
* it is recommended to take a look at oscP5plug for an
* alternative and more convenient way to parse messages.
* oscP5 website at https://www.sojamo.de/oscP5
*/
import oscP5.*;
import netP5.*;
OscP5 oscP5;
NetAddress myRemoteLocation;
void setup() {
size(400,400);
frameRate(25);
/* start oscP5, listening for incoming messages at port 12000 */
oscP5 = new OscP5(this,12000);
/* myRemoteLocation is a NetAddress. a NetAddress takes 2 parameters,
* an ip address and a port number. myRemoteLocation is used as parameter in
* oscP5.send() when sending osc packets to another computer, device,
* application. usage see below. for testing purposes the listening port
* and the port of the remote location address are the same, hence you will
* send messages back to this sketch.
*/
myRemoteLocation = new NetAddress("127.0.0.1",12000);
}
void draw() {
background(0);
}
void mousePressed() {
/* create a new osc message object */
OscMessage myMessage = new OscMessage("/test");
myMessage.add(123); /* add an int to the osc message */
myMessage.add(12.34); /* add a float to the osc message */
myMessage.add("some text"); /* add a string to the osc message */
/* send the message */
oscP5.send(myMessage, myRemoteLocation);
}
void oscEvent(OscMessage theOscMessage) {
/* check if theOscMessage has the address pattern we are looking for. */
if(theOscMessage.checkAddrPattern("/test")==true) {
/* check if the typetag is the right one. */
if(theOscMessage.checkTypetag("ifs")) {
/* parse theOscMessage and extract the values from the osc message arguments. */
int firstValue = theOscMessage.get(0).intValue();
float secondValue = theOscMessage.get(1).floatValue();
String thirdValue = theOscMessage.get(2).stringValue();
print("### received an osc message /test with typetag ifs.");
println(" values: "+firstValue+", "+secondValue+", "+thirdValue);
return;
}
}
println("### received an osc message. with address pattern "+theOscMessage.addrPattern());
}