Re: Glissando: smoothing touch drags
Re: Glissando: smoothing touch drags
- Subject: Re: Glissando: smoothing touch drags
- From: Richard Dobson <email@hidden>
- Date: Wed, 15 Feb 2012 10:32:16 +0000
On 15/02/2012 09:09, Hari Karam Singh wrote:
I'm inclined to guess that filtering isn't the right solution. If you
have velocity V, motions below which sound smooth to the listener and
above which sound disjoint then all that filtering is going to do is
effective slow velocities greater than V down to less than V. If the
motion involves rapid direction changes then filtering will
effectively limit the pitch bend range as well, the faster the
motion.
Perhaps it is clearly to describe it as controlled interpolation
(whether as a line or a curve) - adding in the extra steps you would
otherwise get from your faster GUI update rate. It will always go from
the old value to the hnew value, over time, so as already mentioned
there is an aspect of latency to consider. We can't avoid very rapid
changes having some sort of quantising or modulating effect, if only for
psychoacoustic reasons. The primary job is to create smooth glitch-free
changes under "normal" use. We don't generally perform vibrato (AM or
FM) by wiggling a slider or knob very fast (well we can try, but it
probably won't sound too good) - we create a modulator oscillator to do
it for us. So if the design depends on extreme motions, perhaps it needs
a rethink.
I would think the problem is purely that the UI and/or audio update
rates are too slow. Why is your audio callback only running at 20Hz?
Yes, you do need a decent update speed, purely for user comfort and
naturalness. But update speed is not the only issue. You are also
limited by the number of widget control steps available. To describe it
most simply - if a slider control only has a range of 100 pixels, you
can't get a full MIDI precision of 128 steps however fast you update the
GUI. Some sliders may use 80 steps or fewer. If the slider is meant to
control frequency over the full audio range, there is no way it can
produce a smoothly continuous traverse without interpolation between the
available control positions. You may well need to arrange the result to
follow a log law (semitones/octaves rather than frequency; dB rather
than raw amplitude) in which case there is significant computation to
be done anyway; and running a fast GUI update will likely cost a lot
more CPU overhead than passing the plain control stream through a simple
filter.
In the end, this is an established an well-tested method, and easy
enough to implement - why limit yourself to guessing?
Richard Dobson
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden