Re: [linux-audio-dev] [semi-OT] EEL 0.1.0 + ChucK

From: Ge Wang <gewang@email-addr-hidden>
Date: Tue Jan 11 2005 - 08:48:47 EET

> On Monday 10 January 2005 21.31, Dave Robillard wrote:
> [...]
>> I was considering using ChucK, given that it's specifically
>> designed for RT performance use and can insert/remove/replace
>> pieces of code into the vm while running, but it looks like it
>> would be a significant amount of work to adapt the ChucK engine to
>> be controlled by another app.

ChucK is still in its early stages - version 1.2 is coming out within
the month, which allows much greater expressiveness with
events, access to shared memory between shreds, events, and
many ways to control ChucK from other sources (via OSC, network,
etc.), and user objects. version 1.1.x.x demonstrates the primary
ChucK concepts of ugen connection, timing, concurrency, and
on-the-fly programming. version 1.2 is aimed at making the language
usable:

     http://chuck.cs.princeton.edu/release/soon.html

(1.1 can make much noise already, some examples):

    http://wiki.cs.princeton.edu/index.php/ChucK_Sounds

> Looks like ChucK is basically designed around the idea of describing
> networks of unit generators, though there does seem to be procedural
> style flow control constructs. Maybe those can be use to construct an
> event loop for receiving external real time events?

ChucK starts with unit generators, but the primary power of the language
lies in the timing mechanism (as Dave noted) and concurrency. Timing
can go from sub-sample rate to weeks and months, with sample precision.
External real-time events can indeed be polled or waited upon in time
loops.

> Anyway, I'll have a closer look at ChucK. It has some concepts in
> common with what I had in mind for future versions of Audiality.
> (Running those AGW scripts in real time, all unit generators in
> parallel, rather than over whole waveform as it is done now. Time
> oriented flow control constructs.)

What is different about the intents of EEL from that of ChucK? If EEL
is aiming to do a lot of the things that ChucK already does, why
not use/embed ChucK with/in audiality (which might be beneficial
to both)? Is it licensing? ChucK is GPL, so that would prevent it
from being used in proprietary ways, but it is possible for the license
to allow special cases to be granted.

I suppose one difference is that EEL is not intended specifically for
sound synthesis whereas ChucK is (but certainly not limited to)?

>> I need the guarantee that the audio thread of the language/VM is
>> 100% realtime safe (ala the jack guidelines).
>
> That's a primary design goal for EEL (which is the main difference
> from scripting languages in general)

(Hmm, how do you make a synthesis language 100% realtime safe?)

The ChucK model guarantees data consistency (it will always generate
the right samples), and does its best to be on-time. The only thing
that
would be needed to make it hard RT capable is to improve mechanisms
that would know when deadlines are missed (which is quite easy in the
framework) - otherwise, the language model, with time built-in,
naturally
captures many important aspects of RT programming.

Best,
Ge!
Received on Tue Jan 11 12:15:04 2005

This archive was generated by hypermail 2.1.8 : Tue Jan 11 2005 - 12:15:04 EET