[linux-audio-dev] XAP spec - early scribbles
torbenh at gmx.de
torbenh at gmx.de
Sun Mar 2 15:07:00 UTC 2003
On Sat, Mar 01, 2003 at 07:52:51PM +0100, David Olofson wrote:
> On Saturday 01 March 2003 15.13, torbenh at gmx.de wrote:
> [...]
> > > Yeah, that makes sense, and I think that's the way most XAP hosts
> > > would do it. I don't like the idea of leaving the insertion of
> > > the (real or implicit) "delay element" in loops to the host, but
> > > that's a host implementation/UI issue entirely. Plugins just
> > > happily chew their audio and events one block at a time.
> >
> > ok... so the host must detect cycles and either warn the user he
> > built something, thats not going to work like he thought or
> > find a smart point where a delay can be inserted.
>
> ...or ask the user where the delay should be inserted, and then
> present it as an actual plugin. Then the user could tune the delay. I
> wouldn't want to leave that to the host configuration, as that can
> screw your effects up in non-obvious ways. I don't think users should
> be allowed to do this kind of stuff without at least being informed
> that it has potential issues. (Who wants their inboxes filled with
> questions like "Why does it sound funny all of a sudden!?")
ok... host implementation...
>
>
> > i am fine with the first only... but this does not change the
> > API... so its irrelevant.
>
> Right.
>
>
> [...silence handling...]
> > lets assume that silence detection is not possible for iir filters.
> > -> iir filter never emits silence.
> >
> > this means we have to call all plugins in "silent" subnets.
> > (at least if we dont have a method for the plugin to tell
> > the graph traversal we are never silent... but this is out of
> > scope for now)
>
> Yeah. What's the problem?
we must always call all plugins.
i was thinking that it would be possible to stop processing()
silent subnets.
flagging silence still provides for optimisation IN the plugins.
>
> BTW, plugins that theoretically never go silent could still have a
> user controlled silence threshold control...
yes... but this is plugin implementation..
as long as XAP defines a method to describe
silence its ok.
>
> > a gain set to zero knows it emits silence...
> > and a sample player not playing a sample knows
> > this also...
> >
> > when silence is a flag of an audio buffer at least some
> > plugins could optimize their behaviour and the mixing of
> > n:1 connections would get faster...
> >
> > i dont think it is much hassle
> > remember its not about silence detection its about silence
> > flagging.
>
> Right.
>
>
> > but david is of course right: this does not improve the worst case
> > at all.
> >
> > i think its worth it...
> >
> >
> > just thinking this a little futher:
> >
> > silence with a DC offset :-)
> >
> > d( silence with a DC offset )
> > ----------------------------- = silence
> > dt
> >
> > int( silence with a DC offset ) = ramp
> >
> > well this leads to symbolic audio processing 8-)
>
> Silence with a DC offset is not silence, IMO. Unless you're going to
> stay on that level *forever*, it's not DC, and then it can't be
> silence by any definition, can it?
no... its "silence with a dc offset" != "silence" . effectively making it a constant
for this next block...
>
> Either way, remember that we're dealing with blocks here. (Larger time
> spans are pretty irrelevant from a practical POV.) If any DC level is
> silence, is a square wave that happens to have a period of exactly
> two blocks silence as well? ;-)
no.
example:
block size = square_period / 2
square_phase = 0
block 1 = dcsilence(1)
block 2 = dcsilence(-1)
...
silence flaggin means this block only contains zeros.
dcsilence(x) flagging means this block only contains x
this is like having metadata on an audio block
providing smart plugins with the capability to optimize their
processing.
--
torben Hohn
http://galan.sourceforge.net -- The graphical Audio language
More information about the Linux-audio-dev
mailing list