[linux-audio-dev] [semi-OT] EEL 0.1.0
david at olofson.net
Mon Jan 10 18:51:57 EST 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,
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