[linux-audio-dev] PTAF link and comments
David Olofson
david at olofson.net
Mon Feb 3 09:50:00 UTC 2003
On Monday 03 February 2003 15.12, Sami P Perttu wrote:
> On Mon, 3 Feb 2003, David Olofson wrote:
> > > As a plugin author, having to implement
> > > both is a pain. I use code generation to make both functions.
> >
> > You don't necessarily *have* to implement both. Even the
> > primitive FX plugin API of Audiality have these variants:
> >
> > void (*process)(struct ADY_plugin *p,
> > int *buf, unsigned frames);
> > void (*process_r)(struct ADY_plugin *p,
> > int *in, int *out, unsigned frames);
> > void (*process_m)(struct ADY_plugin *p,
> > int *in, int *out, unsigned frames);
> >
> > ...and you only *have* to provide *one* - any variant will do. If
> > you don't provide all of them, the host "SDK" will emulate the
> > others using the ones that are provided.
>
> I think this is bad.
It's a primitive performance hack. Once upon a time, these things
actually mattered... ;-)
> There should be just one process() function,
> which could be given two gain values, one for previous output and
> another for the plugin's own output. Plugins would do
>
> out[i] = previous_gain * out[i] + gain * myoutput;
>
> When previous gain is zero this is almost equivalent to replace
> except that NANs and maybe some other values will screw you.
> Solution: forbid NANs as output and maybe cleanse buffers
> periodically. And initially, of course.
Well, that cover's all the cases, and you *can* still optimize with
alternative inner loops if you like. Just check for 0.0 gains - but
remember that the gain controls will most probably be normal *ramped*
controls, so you can't just check the initial value.
Looks like a great idea.
As to NANs, I think you're pretty screwed if you get them in an audio
stream anyway. Plugins that generate NANs are broken, as are hosts
that allow plugins to operate on garbage buffers.
//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 ---
More information about the Linux-audio-dev
mailing list