[linux-audio-dev] XAP: SILENT event handling

David Olofson david at olofson.net
Mon Dec 9 09:17:00 UTC 2002


On Monday 09 December 2002 14.55, Steve Harris wrote:
> On Mon, Dec 09, 2002 at 01:01:02PM +0100, David Olofson wrote:
> > So, the SILENT event would need Bay and Channel (but not Slot)
> > fields, in order to tell the host (or who ever gets the event)
> > which audio output just went silent.
>
> I was assuming the SILENT event would be aginst a voice ID.

Uhm, a Voice is an abstract object that has no known relation to 
whatever audio outputs the synth may have... The SILENT event I'm 
talking about is what a reverb FX would send when the tail goes below 
the threshold, or that a synth would send when *all* Voices that are 
routed (dry) to a certain audio output are dead.


> > That way, you could use the plugin API for things like
> > audio-to-disk-thread "gateways" for recording and that kind of
> > stuff, without forcing the host to be involved in the details.
>
> That will only work if all your instruments procduce SILENT events
> and you recevie all the relevent VOICE_ON events though. Is this
> even possible?

It's not about Voices - and Voices become irrelevant anyway, as soon 
as the synth has an internal FX with tail... This is all about audio 
ports.


> I bet I can think of a processing graph where it
> isn't resolvable. Paticularly if you allow LADSPA plugins in the
> graph.

Yes - but then you'd either have to insert meter plugins to detect 
silence, or just tell the user "Sorry, but I can't reliably 
autodetect silence in this net."


> For this and the other reasons you mentioned I dont think this is
> not possible/practical.

Well, I agree that there probably isn't much point in spending much 
time on this. If it fits in nicely somewhere, fine - but otherwise, 
just allow nice plugins to send SILENT events whenever an audio 
output port changes between silence and non-silence, and/or accept 
NULL pointers for input buffers.

The only part of this that hosts *have* to support would be the 
SILENT event, since that means the plugin may not even touch 
subsequent buffers. They have to be cleared, or if the receiving 
plugin supports the "NULL buffer for silence" feature, that may be 
used.


//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 -'
.- M A I A -------------------------------------------------.
|    The Multimedia Application Integration Architecture    |
`----------------------------> http://www.linuxdj.com/maia -'
   --- http://olofson.net --- http://www.reologica.se ---



More information about the Linux-audio-dev mailing list