/**
* oscP5plug by andreas schlegel
* example shows how to use the plug service with oscP5.
* the concept of the plug service is, that you can
* register methods in your sketch to which incoming
* osc messages will be forwareded automatically without
* having to parse them in the oscEvent method.
* that a look at the example below to get an understanding
* of how plug works.
* 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);
/* osc plug service
* osc messages with a specific address pattern can be automatically
* forwarded to a specific method of an object. in this example
* a message with address pattern /test will be forwarded to a method
* test(). below the method test takes 2 arguments - 2 ints. therefore each
* message with address pattern /test and typetag ii will be forwarded to
* the method test(int theA, int theB)
*/
oscP5.plug(this,"test","/test");
}
public void test(int theA, int theB) {
println("### plug event method. received a message /test.");
println(" 2 ints received: "+theA+", "+theB);
}
void draw() {
background(0);
}
void mousePressed() {
/* createan osc message with address pattern /test */
OscMessage myMessage = new OscMessage("/test");
myMessage.add(123); /* add an int to the osc message */
myMessage.add(456); /* add a second int to the osc message */
/* send the message */
oscP5.send(myMessage, myRemoteLocation);
}
/* incoming osc message are forwarded to the oscEvent method. */
void oscEvent(OscMessage theOscMessage) {
/* with theOscMessage.isPlugged() you check if the osc message has already been
* forwarded to a plugged method. if theOscMessage.isPlugged()==true, it has already
* been forwared to another method in your sketch. theOscMessage.isPlugged() can
* be used for double posting but is not required.
*/
if(theOscMessage.isPlugged()==false) {
/* print the address pattern and the typetag of the received OscMessage */
println("### received an osc message.");
println("### addrpattern\t"+theOscMessage.addrPattern());
println("### typetag\t"+theOscMessage.typetag());
}
}