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 >>> [email protected] >>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users >> >> _______________________________________________ >> chuck-users mailing list >> [email protected] >> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users > _______________________________________________ > chuck-users mailing list > [email protected] > https://lists.cs.princeton.edu/mailman/listinfo/chuck-users > _______________________________________________ chuck-users mailing list [email protected] https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
