2009/1/21 Kassen
Inspired by Scott's explanation of casting I thought I'd try a new trick that may be quite interesting for livecoding.
first run this file; ----------------------------- new UGen @=> Foo.instrument; public class Foo { static UGen @instrument; spork ~attach();
fun void attach() { while(1) { if(!instrument.isConnectedTo( dac )) instrument => dac; second => now; } } }
Foo foo; new Sitar @=> foo.instrument;
//your melody goes here while(second => now) 1 => (foo.instrument $ Sitar).noteOn; --------------------------------------------
Then run this to hot-swap the UGen while the original code runs;
-------------- new Shakers @=> Foo.instrument; -----------------------
Sadly this does need that "attach" function as assignment breaks the link to the dac. I'm not sure I feel that's desirable behaviour but at least we can now hotswap UGens without crashing. I don't think I succeeded in that before.
It doesn't seem like the melody should keep playing on the Shakers since the noteOn is being called assuming the instrument is a Sitar. :D -- Tom Lieber http://AllTom.com/