On Wednesday 18 December 2002 16.18, Steve Harris wrote:
On Wed, Dec 18, 2002 at 02:53:50PM +0100, David
Olofson wrote:
You move the play position marker.
Plugins get the position changes from the timeline,
and those that need to, do their best to prebuffer
audio data from disk, or whatever. While doing that,
the put a "1" on their "READY" Control Outputs, that
are connected to the transport control.
You press "Start".
The transport control simply waits until it has
received a "0" from each one of the "READY" Controls
it's watching. Then it actually starts the sequencer.
If there are no READY Controls in the net, the
sequencer will just start instantly.
I'm wondering if this can't be handled better in a non RT manner,
like the activate call in LADSPA, but with the addition of some
kind of time position.
But then you have to stop the whole net along with the sequencer, as
soon as you have one of those "non-instant" plugins in the net. The
very point is to avoid that.
Besides, this doesn't just happen when you activate a plugin, but
could happen as soon as you move the transport, or change a control.
Sure, it can be handled with control hints, saying these controls are
not RT safe, but I think that's a bit restrictive.
The plugin will likly have to flush its internal
buffers anyway, so
it might just be easier and cleaner to do it outside the normal RT
context.
That kind of solution would need explicit API support as well, so I'm
not sure it makes anything easier.
//David Olofson - Programmer, Composer, Open Source Advocate
.- The Return of Audiality! --------------------------------.
| Free/Open Source Audio Engine for use in Games or Studio. |
| RT and off-line synth. Scripting. Sample accurate timing. |
`--------------------------->
http://olofson.net/audiality -'
---
http://olofson.net ---
http://www.reologica.se ---