Re: [linux-audio-dev] changing control port values with LADSPA: a serious issue?

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] changing control port values with LADSPA: a serious issue?
From: Steve Harris (S.W.Harris_AT_ecs.soton.ac.uk)
Date: Mon Mar 25 2002 - 14:04:25 EET


Sorry, found this in my inbox, forgot to reply to it at the time.

On Thu, Mar 21, 2002 at 10:20:52 +0100, Tim Goetze wrote:
> Steve Harris wrote:
>
> >On Sat, Mar 16, 2002 at 04:54:03 -0500, Paul Davis wrote:
> >> >my proposal for a remedy is rather simple: let control port value
> >> >pointers not point to one LADSPA_Data but to an array of two.
> >> >
> >> >the first represents the start, and the second the end value for the
> >> >next run*() call.
>
> [...]
>
> >Erm, not too fast, that doesn't help.
> >
> >I've always regarded the value as the value at the end of the buffer, and
> >all this does is make it easier to lerp the control values, which will
> >encourage people, so you will get zipper noise: one reason early vst
> >plugins sucked so much.
>
> wait -- if hosts are doing the right thing, they'll shift the two
> values so that at t(n+1) the first of the two values will be the
> second from t(n). so i can't see why zipper noise should increase.

lerping causes zipper noise, my point was that prividing a t=0 and t=n
value only emakes it easier to lerp, not filters or cubic etc. and so it
could encourage use of linear.

The filtering techniques and interpolators with order > 1 require more
points to work with, so it doesn't help them as you have to accumulate or
cache results anyway.
 
> unfortunately i neither understand precisely what action 'lerping'
> describes (i think it must be tossing around the controls madly), nor
> do i recall the first vst API's handling of control ports, possibly
> because i never did vst.

lerp = linear linterpolation, the cheapest interpolator.

vst itsself doesn't enfore any particualr scheme (AFAIK), but to save
cycles a lot of primitive vst plugins used lerp.

> basically i understand the values passed to and from the plugin as
> sample points of a curve (and probably we all do since we agree there
> need be some kind of interpolation?)

Typically you would use a low order filter, cubic interpolation suffers
from excusions (values exceeding the range you are trying to describe)
which makes it unsiutable for parameter smoothing. Quartic interpolators
are a bit too expensive for parameter smoothing.
 
> the next best i think is to have a fixed array size (2, or possibly
> more values) and keep the impact on the API smallest.

If we're going to change ladspa to add better parameter control, then
timestamped events seems like a better approach. How you represent this is
probably not important.

- Steve


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Mon Mar 25 2002 - 13:55:10 EET