
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... 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