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) {while ( oin.recv(msg) )
oin => now;
{
<<< "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
>
_______________________________________________
chuck-users mailing list
chuck-users@lists.cs.princeton.edu
https://lists.cs.princeton.edu/mailman/listinfo/chuck-users