Tom;
impromptu is a live-coding environment for OS X that looks very interesting, definitely something I need to try out once I've escaped the clutches of my end-of-year work.
Yes! It looks great, not in the least because of the utterly amazing demonstrations Andrew Sorensen gives of it; his videos are awe-inspiring. Impromptu is one of the most interesting things exclusive to the OSX platform, IMHO.
I thought I'd bring it up not only because it's interesting, but because its tutorial on "time" contrasts impromptu's asynchronous model with ChucK's synchronous one: in impromptu, time passes while your code is running.
I agree; quite interesting. What's not so clear to me though is how this scheduling of notes interacts with Impromptu mainly being a host for AU plugins. That could become quite relevant, for example if one could have those run on a separate core or cpu.
Just think... you could load a WAV file without hanging the VM!
Well... Yes, or compile a more complicated Shred.... but aren't we talking about a trade between a stuttering sound and delaying some processes here? Once the CPU resources run out something, somewhere, will have to give, regardless of the model used. SC users tend to point out that their server-client model has advantages there but I'm not sure I see them. Once the cpu runs out that's that. Maybe loading WAV's is a exception as that doesn't actually cost CPU as much as the it takes memory and HD bandwith but we can load those in chunks, I don't have much experience with that though.
"In the this-is-good version of loop the time sent as an argument to loop is exactly the same time as the scheduled callback time. The problem with this is that the next note needs to be scheduled at exactly the same time that the function is called. The note will always be late. The this-is-best version schedules the callback just ahead of the time that we want to schedule the note. This gives us 4100 samples to execute the code to schedule the note before the note is required to sound."
The last sentence reminds me of the thread a while back about benchmarking UGens. :)
Yes, there are certainly similarities there. I do wonder about the exact interaction between Impromptu and the plugins it uses now. I'm also still interested in the interaction between ChucK and the various processes on the host computer that may affect and interact with it's performance; things like the time needed to load or save a file, the MIDI cue and so on. For some we have a model for interacting with it (getting things off the HID input cue) for others they are planned (loading and saving text files) and in other places this hasn't yet been given much attention. While I'm at it; a while ago I posted about timestamps for OSC messages, particularly because of the NetClock initiative. This hasn't yet received much debate. Is that because people aren't interested at all? Is it perhaps unclear why this could be nice? Maybe everybody agreed with me so much that nobody felt a need to add anything? (hey, I can dream!). Yours, Kas.