Hello, ChucKers! I am looking for a way to receive an arbitrary OSC message and determine its address. In my toy example, my receiver will receive messages at /sndadj/lgain and /sndadj/rgain and adjust the gain of the L or R channel accordingly.
Here's a program that would probably work if there were an OscEvent.address() function:
SinOsc sl => dac.left;
SinOsc sr => dac.right;
0.5 => sl.gain;
0.5 => sr.gain;
225 => float lfreq;
150 => float rfreq;
lfreq => sl.freq;
rfreq => sr.freq;
OscRecv recv;
6449 => recv.port;
recv.listen();
OscEvent oe;
recv.event("/sndadj/lgain, f" ) @=> oe;
recv.event("/sndadj/rgain, f" ) @=> oe;
while (true) {
oe => now;
while (oe.nextMsg() != 0) {
// XXX - OscEvent.address() doesn't exist
if (oe.address() == "/sndadj/lgain") {
oe.getFloat() => sl.gain;
}
else {
oe.getFloat() => sr.gain;
}
}
}
I do have a version working with a single /sndadj/gain address which sends two floats, but it makes my sender uglier and I feel like address discernment is something ChucK probably does anyway.
Any ideas? Thanks!
Brian