[chuck-users] The ChucK Show

Michael Heuer heuermh at gmail.com
Mon Aug 10 12:51:39 EDT 2009


> From http://music.princeton.edu/~hammond/LiLo/download.html:
> . . .

After looking through the LiLo chuck source a bit, I have to wonder if
there might be a better pattern for receiving events via OSC than

recv.event( "/changeVoice, i, i, i" ) @=> OscEvent changeVoice;
...
recv.event( "/manualChunking, i, i, f") @=> OscEvent manualChunking;

fun void oscRecv1()
{
  while (true)
  {
    // wait for event to arrive
    changeVoice => now;
    ...
}
...
fun void oscRecv37()
{
  while (true)
  {
    manualChunking => now;
    ...
}

spork ~ oscRecv1();
...
spork ~ oscRecv37();


I wrote a ChucK class for interacting with SooperLooper that hides all
the OSC mess for sending messages.  I haven't been able to come up
with a clean pattern for hiding the receiving of OSC messages.

http://www.essej.net/sooperlooper
http://github.com/heuermh/lick/blob/b30c8ab28abe6e1580e43819fe586af247cfd298/SooperLooper.ck
http://www.essej.net/slforum/viewtopic.php?f=17&t=110


Of particular concern is the fact that any method calls that query the
state of the SooperLooper engine will need to be asynchronous.  For
example

SooperLooper.ck:
fun int getLoopLength()

http://www.essej.net/sooperlooper/doc_osc.html:
GET PARAMETER VALUES

/sl/#/get  s:control  s:return_url  s: return_path

  Which returns an OSC message to the given return url and path with
  the arguments:
      i:loop_index  s:control  f:value

   michael


More information about the chuck-users mailing list