On Thursday 05 December 2002 12.07, Dave Griffiths wrote:
[...non RT controls, VST & delay ...]
This is actually a current problem with
spiralsynthmodular, the
sampler is rt safe, except when loading/saving samples. I'm
thinking that it's solvable by using a async loader on a different
thread that the plugin can poll. As long as it does something sane
until the sample is loaded (play silence) it should be Ok.
At the moment, you get chucked off jack when loading large samples.
Applies to Audiality as well. It needs humongous amounts of CPU power
for "loading" most sounds as well, since they're actually scripts
used to render the waveforms using the off-line synth.
There's also another, similar problem: Plugin instantiation. FX
inserts are selected through MIDI CC events, which means their
instantiation is triggered from within RT context.
Currently, they're also instantiated in there, which is just a quick
hack. (Which, AFAIK, prevents this engine from running at all on Mac
OS classic - can't malloc() from within interrupt context.)
What I'll do is throw in a "butler thread" (Benno's invention :-), to
which I pass requests to instantiate or destroy plugins, load or
unload waveforms and other non RT safe things. There will probably
just be an sfifo in each direction, since those are extremely
portable and easy to use. The method of waking up the butler thread
will probably vary a little between platforms. On systems without
threads, the butler will just be a callback that you're supposed to
call from the main loop every now and then.
//David Olofson - Programmer, Composer, Open Source Advocate
.- Coming soon from VaporWare Inc...------------------------.
| The Return of Audiality! Real, working software. Really! |
| Real time and off-line synthesis, scripting, MIDI, LGPL...|
`-----------------------------------> (Public Release RSN) -'
.- M A I A -------------------------------------------------.
| The Multimedia Application Integration Architecture |
`---------------------------->
http://www.linuxdj.com/maia -'
---
http://olofson.net ---
http://www.reologica.se ---