[linux-audio-dev] [semi-OT] EEL 0.1.0

David Olofson david at olofson.net
Mon Jan 10 23:51:57 UTC 2005


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.

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? It would seem to 
fit well with the "time loop" idea, but I don't know how dynamic the 
control flow can be without causing all optimization to break down.

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


> 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) - but raw speed is another 
matter. Of course, I'll try to make EEL as fast as realistically 
possible, but as long as it isn't compiling into native code, 
instructions will be expensive, and doing DSP by actually operating 
on a single value per instruction (as opposed to SIMD) is going to be 
very slow, compared to native code.


> Looks like possible 
> choices are EEL, ChucK, and perhaps this "Faust" PaulD mentioned
> (never heard of it myself).
>
> Anyone know of any other alternatives?

Before I started hacking the new (VM based) EEL, I looked around for 
existing solutions, but found that pretty much all scripting 
languages out there - including some that are used a lot for game 
scripting - are unsuitable for high cycle rates (>100 Hz), and 
practically none are hard RT capable. It seems like people creating 
and/or using scripting languages and HLLs generally don't give a damn 
about real time programming, if the're even aware of the concept.

I considered finding something that's "close enough" and forking it, 
but
 1) I don't like the idea of subverting a known language
    into something that is not what people think it is.
 2) I don't like the idea of forking in the first place.
 3) Any "real" VM based scripting language is a rather
    complex beast, and fixing code that's non-deterministic
    by design isn't as simple as it may seem at first.
 4) I wanted to design the language and the implementation
    specifically for the type of jobs I have in mind.
 5) I like hacking this kind of stuff. :-)

Another problem (for me at least) is that the few alternatives that 
looked interesting are either non-Free, or licensed in a way that 
prevents using them in proprietary projects - which is exactly what I 
need to do. (All my personal projects are Free/Open Source, though.)


//David Olofson - Programmer, Composer, Open Source Advocate

.- Audiality -----------------------------------------------.
|  Free/Open Source audio engine for games and multimedia.  |
| MIDI, modular synthesis, real time effects, scripting,... |
`-----------------------------------> http://audiality.org -'
   --- http://olofson.net --- http://www.reologica.se ---




More information about the Linux-audio-dev mailing list