On Thursday 06 February 2003 22.56, Tim Hockin wrote:
[...]
Now, based on recent arguments, I am rethinking my
otiginal idea.
I had originally put this at the plugin granularity, then moved it
to per-channel. This may be Good Enough, but not The Best.
I actually suspect that it might be *easier* to do it per audio port,
as that eliminates the need for keeping track of which port belongs
where.
[...]
I'm starting to lean more towards David's idea
which is that a
buffer also has at least one flag - SILENT. All buffers start out
silent (though they should be zeroed, I think).
Speaking of which, a host that can fill any SILENT buffers it sees
with garbage would make a nice debugging tool for this feature. :-)
You could also abuse the MMU to trap reads from SILENT buffers, but
that's not quite as trivial to implement.
If a plugin can
optimize in the face of silent buffers, it should. We should
heavily recommend this, and code all examples to do this.
Yeah.
This gives plugins a lot of granularity, and a lot of
responsibility. However, it is easy to do, and doesn't require the
host to participate at all.
This is what I do in Audiality FX when I'm feeling lazy and want
buffers of zeroes for silence:
if(!in)
in = ady_silent_buffer;
This is an implication of the "silent input" feature not being
optional - but it's not much to ask for, is it? (Though you'd have to
loop over all your inputs, which makes it a *lot* harder! ;-)
If it's still too much, a plugin can just have a hint "I don't give a
damn about silent input!", which would have hosts clear silent input
buffers before run()ning that plugin.
//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 ---