import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; String baseaddress="/oscplayer/"; import oscP5.*; import netP5.*; OscP5 oscP5; NetAddress myRemoteLocation; class OSCMsg { long time; OscArgument arg0; String address; OSCMsg (long ptime, OscArgument parg, String paddress) { time=ptime; arg0=parg; address=paddress; } String argString(){ return ""+arg0.floatValue(); //TODO } } List msglist;; void setup() { size(400,400); frameRate(60); oscP5 = new OscP5(this,7000); //Port for input OSC Messages msglist = new CopyOnWriteArrayList(); } void draw() { background(0); //positions int ystart=10; //distance from top int xstartTime=5; int xstartAddr=80; int xstartArg0=200; int ydist=12; int row=0; for (OSCMsg m : msglist) { //check if address already known text(m.time, xstartTime,ystart+row*ydist); text(m.address, xstartAddr,ystart+row*ydist); text(m.argString(), xstartArg0,ystart+row*ydist); row++; } } void oscEvent(OscMessage cmsg) { boolean found=false; for (OSCMsg m : msglist) { //check if address already known if (m.address.equals(cmsg.addrPattern())) { //found, then update data m.arg0=cmsg.get(0); m.time=millis(); found=true; } } if (!found) { //address not known yet msglist.add(new OSCMsg(millis(),cmsg.get(0),cmsg.addrPattern())); } //print("### received an osc message."); //print(" addrpattern: "+theOscMessage.addrPattern()); //println(" typetag: "+theOscMessage.typetag()); }