add working base tools
This commit is contained in:
commit
16ba9d6f36
5 changed files with 80166 additions and 0 deletions
21
csvrandomwriter/csvrandomwriter.pde
Normal file
21
csvrandomwriter/csvrandomwriter.pde
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
Table table;
|
||||||
|
|
||||||
|
float frequency=4; //data frequency in Hz
|
||||||
|
int duration=1000*10; //in ms
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
table = new Table();
|
||||||
|
table.addColumn("time"); // in milliseconds
|
||||||
|
table.addColumn("heartrate");
|
||||||
|
table.addColumn("random");
|
||||||
|
|
||||||
|
for (int i=0;i<(int)(duration/frequency);i++) {
|
||||||
|
TableRow newRow = table.addRow();
|
||||||
|
newRow.setInt("time", (int)(i*(1000/frequency)));
|
||||||
|
newRow.setFloat("heartrate", noise(i/10)*40.0+60);
|
||||||
|
newRow.setFloat("random", random(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
saveTable(table, "data.csv");
|
||||||
|
println("Finished");
|
||||||
|
}
|
40001
csvrandomwriter/data.csv
Normal file
40001
csvrandomwriter/data.csv
Normal file
File diff suppressed because it is too large
Load diff
40001
oscplayer/data.csv
Normal file
40001
oscplayer/data.csv
Normal file
File diff suppressed because it is too large
Load diff
67
oscplayer/oscplayer.pde
Normal file
67
oscplayer/oscplayer.pde
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
String baseaddress="/oscplayer/";
|
||||||
|
|
||||||
|
import oscP5.*;
|
||||||
|
import netP5.*;
|
||||||
|
|
||||||
|
OscP5 oscP5;
|
||||||
|
NetAddress myRemoteLocation;
|
||||||
|
|
||||||
|
Table data;
|
||||||
|
TableRow datarow;
|
||||||
|
|
||||||
|
int rowid=0;
|
||||||
|
long time=0;
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
size(400,400);
|
||||||
|
frameRate(60);
|
||||||
|
|
||||||
|
data = loadTable("data.csv", "header, csv");
|
||||||
|
println(data.getRowCount() + " total rows in data");
|
||||||
|
println("Header:");
|
||||||
|
for (String title : data.getColumnTitles()) {
|
||||||
|
print(title+", ");
|
||||||
|
}
|
||||||
|
println();
|
||||||
|
datarow = data.getRow(rowid); //get first row
|
||||||
|
|
||||||
|
oscP5 = new OscP5(this,12000); //Port for input OSC Messages
|
||||||
|
myRemoteLocation = new NetAddress("127.0.0.1",7000); //connect to remote, IP, Port
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void draw() {
|
||||||
|
time=millis();
|
||||||
|
background(0);
|
||||||
|
|
||||||
|
long rowtime=datarow.getInt("time"); //time of the currently loaded row (next to send)
|
||||||
|
|
||||||
|
if (time>=rowtime) //time to send next row
|
||||||
|
{
|
||||||
|
//Send all columns
|
||||||
|
for (String title : data.getColumnTitles()) {
|
||||||
|
sendOSC(title,datarow.getFloat(title));
|
||||||
|
}
|
||||||
|
|
||||||
|
datarow = data.getRow(rowid++); //load next row
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void sendOSC(String name,float data) {
|
||||||
|
OscMessage myMessage = new OscMessage(baseaddress+name);
|
||||||
|
//println("Sending name="+name+" with data="+data);
|
||||||
|
myMessage.add(data);
|
||||||
|
oscP5.send(myMessage, myRemoteLocation);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* incoming osc message are forwarded to the oscEvent method. */
|
||||||
|
void oscEvent(OscMessage theOscMessage) {
|
||||||
|
/* print the address pattern and the typetag of the received OscMessage */
|
||||||
|
print("### received an osc message.");
|
||||||
|
print(" addrpattern: "+theOscMessage.addrPattern());
|
||||||
|
println(" typetag: "+theOscMessage.typetag());
|
||||||
|
}
|
76
oscviewer/oscviewer.pde
Normal file
76
oscviewer/oscviewer.pde
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
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<OSCMsg> msglist;;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
size(400,400);
|
||||||
|
frameRate(60);
|
||||||
|
|
||||||
|
oscP5 = new OscP5(this,7000); //Port for input OSC Messages
|
||||||
|
|
||||||
|
msglist = new CopyOnWriteArrayList<OSCMsg>();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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());
|
||||||
|
}
|
Loading…
Reference in a new issue