limit on number of OSC addresses you can listen to?
I've posted about this to the electro-music forum: http://electro-music.com/forum/viewtopic.php?p=402793 In trying to write some code for the Illucia dtr, I found that adding addresses to an OscIn object appeared not to work after twelve addresses. I wrote a test program that wasn't illucia-specific; the following code starts 16 OSC transmitters and 16 receivers. When you run it, you can see that transmitters 0-15 all transmit, but only receivers 0-11 receive. for ( 0 => int i ; i < 16 ; i++ ) { spork ~ output(i); spork ~ input(i); } while ( true ) { 1::second => now; } fun void output(int number) { 12008 => int port; "localhost" => string hostname; OscOut xmit; xmit.dest(hostname, port); while (true) { Math.random2f(5.5, 8.5) => float wait; wait::second => now; xmit.start("/tester/what/" + number); Math.random2f(0.0, 1.0) => float temp => xmit.add; xmit.send(); <<< "sent", number, temp >>>; } } fun void input(int number) { OscIn oin; OscMsg msg; 12008 => oin.port; oin.addAddress("/tester/what/" + number + ", f"); float val; while (true) { oin => now; while ( oin.recv(msg) != 0 ) { msg.getFloat(0) => val; <<< "received", number, val >>>; } 5::ms => now; } } I'm running ChucK 1.3.4 on Mavericks, with and without miniAudicle.
It looks to me like the limit of 12 is hard-coded in src/ulib_opsc.cpp, line 201: m_inMsgBuffer(CircularBuffer<OscInMsg>(12)), I raised it to 256 and recompiled and your example worked correctly. I can definitely see the value of allowing more than 12 addresses on the same port. I'm not sure the memory impact though. Joel -- On 08/22/2014 12:25 PM, Ben Steinberg wrote:
I've posted about this to the electro-music forum: http://electro-music.com/forum/viewtopic.php?p=402793
In trying to write some code for the Illucia dtr, I found that adding addresses to an OscIn object appeared not to work after twelve addresses. I wrote a test program that wasn't illucia-specific; the following code starts 16 OSC transmitters and 16 receivers. When you run it, you can see that transmitters 0-15 all transmit, but only receivers 0-11 receive.
for ( 0 => int i ; i < 16 ; i++ ) { spork ~ output(i); spork ~ input(i); }
while ( true ) { 1::second => now; }
fun void output(int number) { 12008 => int port; "localhost" => string hostname; OscOut xmit; xmit.dest(hostname, port); while (true) { Math.random2f(5.5, 8.5) => float wait; wait::second => now; xmit.start("/tester/what/" + number); Math.random2f(0.0, 1.0) => float temp => xmit.add; xmit.send(); <<< "sent", number, temp >>>; } }
fun void input(int number) { OscIn oin; OscMsg msg; 12008 => oin.port; oin.addAddress("/tester/what/" + number + ", f"); float val; while (true) { oin => now; while ( oin.recv(msg) != 0 ) { msg.getFloat(0) => val; <<< "received", number, val >>>; } 5::ms => now; } }
I'm running ChucK 1.3.4 on Mavericks, with and without miniAudicle. _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
Wow, thanks! I'll see about getting a dev environment together and recompiling with something like 32 or 64 -- Ben On 8/22/14, 2:38 PM, Joel Matthys wrote:
It looks to me like the limit of 12 is hard-coded in src/ulib_opsc.cpp, line 201:
m_inMsgBuffer(CircularBuffer<OscInMsg>(12)),
I raised it to 256 and recompiled and your example worked correctly.
I can definitely see the value of allowing more than 12 addresses on the same port. I'm not sure the memory impact though.
Joel --
On 08/22/2014 12:25 PM, Ben Steinberg wrote:
I've posted about this to the electro-music forum: http://electro-music.com/forum/viewtopic.php?p=402793
In trying to write some code for the Illucia dtr, I found that adding addresses to an OscIn object appeared not to work after twelve addresses. I wrote a test program that wasn't illucia-specific; the following code starts 16 OSC transmitters and 16 receivers. When you run it, you can see that transmitters 0-15 all transmit, but only receivers 0-11 receive.
for ( 0 => int i ; i < 16 ; i++ ) { spork ~ output(i); spork ~ input(i); }
while ( true ) { 1::second => now; }
fun void output(int number) { 12008 => int port; "localhost" => string hostname; OscOut xmit; xmit.dest(hostname, port); while (true) { Math.random2f(5.5, 8.5) => float wait; wait::second => now; xmit.start("/tester/what/" + number); Math.random2f(0.0, 1.0) => float temp => xmit.add; xmit.send(); <<< "sent", number, temp >>>; } }
fun void input(int number) { OscIn oin; OscMsg msg; 12008 => oin.port; oin.addAddress("/tester/what/" + number + ", f"); float val; while (true) { oin => now; while ( oin.recv(msg) != 0 ) { msg.getFloat(0) => val; <<< "received", number, val >>>; } 5::ms => now; } }
I'm running ChucK 1.3.4 on Mavericks, with and without miniAudicle. _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
At Joel's and antimon's suggestion at electro-music, I tried OscRecv instead of OscIn -- all 16 listeners worked. Recompiling with 256 makes the original code work, as Joel said; my attempts to recompile with lower numbers (24, 32, 72) did not -- no listeners worked. Ben On 8/22/14, 2:43 PM, Ben Steinberg wrote:
Wow, thanks! I'll see about getting a dev environment together and recompiling with something like 32 or 64 --
Ben
On 8/22/14, 2:38 PM, Joel Matthys wrote:
It looks to me like the limit of 12 is hard-coded in src/ulib_opsc.cpp, line 201:
m_inMsgBuffer(CircularBuffer<OscInMsg>(12)),
I raised it to 256 and recompiled and your example worked correctly.
I can definitely see the value of allowing more than 12 addresses on the same port. I'm not sure the memory impact though.
Joel --
On 08/22/2014 12:25 PM, Ben Steinberg wrote:
I've posted about this to the electro-music forum: http://electro-music.com/forum/viewtopic.php?p=402793
In trying to write some code for the Illucia dtr, I found that adding addresses to an OscIn object appeared not to work after twelve addresses. I wrote a test program that wasn't illucia-specific; the following code starts 16 OSC transmitters and 16 receivers. When you run it, you can see that transmitters 0-15 all transmit, but only receivers 0-11 receive.
for ( 0 => int i ; i < 16 ; i++ ) { spork ~ output(i); spork ~ input(i); }
while ( true ) { 1::second => now; }
fun void output(int number) { 12008 => int port; "localhost" => string hostname; OscOut xmit; xmit.dest(hostname, port); while (true) { Math.random2f(5.5, 8.5) => float wait; wait::second => now; xmit.start("/tester/what/" + number); Math.random2f(0.0, 1.0) => float temp => xmit.add; xmit.send(); <<< "sent", number, temp >>>; } }
fun void input(int number) { OscIn oin; OscMsg msg; 12008 => oin.port; oin.addAddress("/tester/what/" + number + ", f"); float val; while (true) { oin => now; while ( oin.recv(msg) != 0 ) { msg.getFloat(0) => val; <<< "received", number, val >>>; } 5::ms => now; } }
I'm running ChucK 1.3.4 on Mavericks, with and without miniAudicle. _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
(Never mind, I take back the last bit about recompiling with lower numbers -- I was testing from the command line with miniAudicle still open and bound to the port.) Ben On 8/22/14, 3:21 PM, Ben Steinberg wrote:
At Joel's and antimon's suggestion at electro-music, I tried OscRecv instead of OscIn -- all 16 listeners worked. Recompiling with 256 makes the original code work, as Joel said; my attempts to recompile with lower numbers (24, 32, 72) did not -- no listeners worked.
Ben
On 8/22/14, 2:43 PM, Ben Steinberg wrote:
Wow, thanks! I'll see about getting a dev environment together and recompiling with something like 32 or 64 --
Ben
On 8/22/14, 2:38 PM, Joel Matthys wrote:
It looks to me like the limit of 12 is hard-coded in src/ulib_opsc.cpp, line 201:
m_inMsgBuffer(CircularBuffer<OscInMsg>(12)),
I raised it to 256 and recompiled and your example worked correctly.
I can definitely see the value of allowing more than 12 addresses on the same port. I'm not sure the memory impact though.
Joel --
On 08/22/2014 12:25 PM, Ben Steinberg wrote:
I've posted about this to the electro-music forum: http://electro-music.com/forum/viewtopic.php?p=402793
In trying to write some code for the Illucia dtr, I found that adding addresses to an OscIn object appeared not to work after twelve addresses. I wrote a test program that wasn't illucia-specific; the following code starts 16 OSC transmitters and 16 receivers. When you run it, you can see that transmitters 0-15 all transmit, but only receivers 0-11 receive.
for ( 0 => int i ; i < 16 ; i++ ) { spork ~ output(i); spork ~ input(i); }
while ( true ) { 1::second => now; }
fun void output(int number) { 12008 => int port; "localhost" => string hostname; OscOut xmit; xmit.dest(hostname, port); while (true) { Math.random2f(5.5, 8.5) => float wait; wait::second => now; xmit.start("/tester/what/" + number); Math.random2f(0.0, 1.0) => float temp => xmit.add; xmit.send(); <<< "sent", number, temp >>>; } }
fun void input(int number) { OscIn oin; OscMsg msg; 12008 => oin.port; oin.addAddress("/tester/what/" + number + ", f"); float val; while (true) { oin => now; while ( oin.recv(msg) != 0 ) { msg.getFloat(0) => val; <<< "received", number, val >>>; } 5::ms => now; } }
I'm running ChucK 1.3.4 on Mavericks, with and without miniAudicle. _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
And finally (?), in case anyone finds this thread and not the electro-music forum postings, I found the listenAll() method of OscIn in Appendix D of Ajay Kapur, Perry Cook, Spencer Salazar & Ge Wang, _Programming for Musicians and Digital Artists_. It seems to solve the problem: OscIn oin; OscMsg msg; 12001 => oin.port; oin.listenAll(); while (true) { oin => now; while ( oin.recv(msg) ) { <<< "got message:", msg.address, msg.typetag >>>; for(int n; n < msg.numArgs(); n++) { if(msg.typetag.charAt(n) == 'i') // integer <<< "arg", n, ":", msg.getInt(n) >>>; else if(msg.typetag.charAt(n) == 'f') // float <<< "arg", n, ":", msg.getFloat(n) >>>; else if(msg.typetag.charAt(n) == 's') // string <<< "arg", n, ":", msg.getString(n) >>>; } } 1::ms => now; } Ben On 8/22/14, 3:43 PM, Ben Steinberg wrote:
(Never mind, I take back the last bit about recompiling with lower numbers -- I was testing from the command line with miniAudicle still open and bound to the port.)
Ben
On 8/22/14, 3:21 PM, Ben Steinberg wrote:
At Joel's and antimon's suggestion at electro-music, I tried OscRecv instead of OscIn -- all 16 listeners worked. Recompiling with 256 makes the original code work, as Joel said; my attempts to recompile with lower numbers (24, 32, 72) did not -- no listeners worked.
Ben
On 8/22/14, 2:43 PM, Ben Steinberg wrote:
Wow, thanks! I'll see about getting a dev environment together and recompiling with something like 32 or 64 --
Ben
On 8/22/14, 2:38 PM, Joel Matthys wrote:
It looks to me like the limit of 12 is hard-coded in src/ulib_opsc.cpp, line 201:
m_inMsgBuffer(CircularBuffer<OscInMsg>(12)),
I raised it to 256 and recompiled and your example worked correctly.
I can definitely see the value of allowing more than 12 addresses on the same port. I'm not sure the memory impact though.
Joel --
On 08/22/2014 12:25 PM, Ben Steinberg wrote:
I've posted about this to the electro-music forum: http://electro-music.com/forum/viewtopic.php?p=402793
In trying to write some code for the Illucia dtr, I found that adding addresses to an OscIn object appeared not to work after twelve addresses. I wrote a test program that wasn't illucia-specific; the following code starts 16 OSC transmitters and 16 receivers. When you run it, you can see that transmitters 0-15 all transmit, but only receivers 0-11 receive.
for ( 0 => int i ; i < 16 ; i++ ) { spork ~ output(i); spork ~ input(i); }
while ( true ) { 1::second => now; }
fun void output(int number) { 12008 => int port; "localhost" => string hostname; OscOut xmit; xmit.dest(hostname, port); while (true) { Math.random2f(5.5, 8.5) => float wait; wait::second => now; xmit.start("/tester/what/" + number); Math.random2f(0.0, 1.0) => float temp => xmit.add; xmit.send(); <<< "sent", number, temp >>>; } }
fun void input(int number) { OscIn oin; OscMsg msg; 12008 => oin.port; oin.addAddress("/tester/what/" + number + ", f"); float val; while (true) { oin => now; while ( oin.recv(msg) != 0 ) { msg.getFloat(0) => val; <<< "received", number, val >>>; } 5::ms => now; } }
I'm running ChucK 1.3.4 on Mavericks, with and without miniAudicle. _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
Hey y'all,
Thanks for tracking this down -- awesome sleuthing job. Im surprised that
that is the result of m_inMsgBuffer being too small because that is a
buffer for incoming messages, not created receivers. Nonetheless, that
buffer should definitely be bigger, even on the order of 1024 items isn't
large enough to cause any memory concerns.
spencer
On Fri, Aug 22, 2014 at 2:12 PM, Ben Steinberg
And finally (?), in case anyone finds this thread and not the electro-music forum postings, I found the listenAll() method of OscIn in Appendix D of Ajay Kapur, Perry Cook, Spencer Salazar & Ge Wang, _Programming for Musicians and Digital Artists_. It seems to solve the problem:
OscIn oin; OscMsg msg; 12001 => oin.port; oin.listenAll(); while (true) { oin => now; while ( oin.recv(msg) ) { <<< "got message:", msg.address, msg.typetag >>>; for(int n; n < msg.numArgs(); n++) { if(msg.typetag.charAt(n) == 'i') // integer <<< "arg", n, ":", msg.getInt(n) >>>; else if(msg.typetag.charAt(n) == 'f') // float <<< "arg", n, ":", msg.getFloat(n) >>>; else if(msg.typetag.charAt(n) == 's') // string <<< "arg", n, ":", msg.getString(n) >>>; } } 1::ms => now; }
Ben
(Never mind, I take back the last bit about recompiling with lower numbers -- I was testing from the command line with miniAudicle still open and bound to the port.)
Ben
On 8/22/14, 3:21 PM, Ben Steinberg wrote:
At Joel's and antimon's suggestion at electro-music, I tried OscRecv instead of OscIn -- all 16 listeners worked. Recompiling with 256 makes the original code work, as Joel said; my attempts to recompile with lower numbers (24, 32, 72) did not -- no listeners worked.
Ben
On 8/22/14, 2:43 PM, Ben Steinberg wrote:
Wow, thanks! I'll see about getting a dev environment together and recompiling with something like 32 or 64 --
Ben
On 8/22/14, 2:38 PM, Joel Matthys wrote:
It looks to me like the limit of 12 is hard-coded in src/ulib_opsc.cpp, line 201:
m_inMsgBuffer(CircularBuffer<OscInMsg>(12)),
I raised it to 256 and recompiled and your example worked correctly.
I can definitely see the value of allowing more than 12 addresses on
On 8/22/14, 3:43 PM, Ben Steinberg wrote: the
same port. I'm not sure the memory impact though.
Joel --
On 08/22/2014 12:25 PM, Ben Steinberg wrote:
I've posted about this to the electro-music forum: http://electro-music.com/forum/viewtopic.php?p=402793
In trying to write some code for the Illucia dtr, I found that adding addresses to an OscIn object appeared not to work after twelve addresses. I wrote a test program that wasn't illucia-specific; the following code starts 16 OSC transmitters and 16 receivers. When you run it, you can see that transmitters 0-15 all transmit, but only receivers 0-11 receive.
for ( 0 => int i ; i < 16 ; i++ ) { spork ~ output(i); spork ~ input(i); }
while ( true ) { 1::second => now; }
fun void output(int number) { 12008 => int port; "localhost" => string hostname; OscOut xmit; xmit.dest(hostname, port); while (true) { Math.random2f(5.5, 8.5) => float wait; wait::second => now; xmit.start("/tester/what/" + number); Math.random2f(0.0, 1.0) => float temp => xmit.add; xmit.send(); <<< "sent", number, temp >>>; } }
fun void input(int number) { OscIn oin; OscMsg msg; 12008 => oin.port; oin.addAddress("/tester/what/" + number + ", f"); float val; while (true) { oin => now; while ( oin.recv(msg) != 0 ) { msg.getFloat(0) => val; <<< "received", number, val >>>; } 5::ms => now; } }
I'm running ChucK 1.3.4 on Mavericks, with and without miniAudicle. _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
participants (3)
-
Ben Steinberg
-
Joel Matthys
-
Spencer Salazar