[Numpy-discussion] "Dynamic convolution" in Numpy
David
david at silveregg.co.jp
Sun Jun 6 21:39:02 EDT 2010
On 06/07/2010 12:08 AM, Anne Archibald wrote:
>
> I think the kicker is here: what is the right way to interpolate
> between filters?
There is no right way that I know of, it really depends on what you are
doing. The big issue here is that a filter which changes is obviously
not time independent anymore. For IIR, this has the unfortunate
consequence that even if your filter is stable at every interpolation
point, transitioning from one to the other can still blow up.
For filters used in music processing, it is common to have filters
changing really fast, for example in synthesizers (up to a few hundred
times / sec) - and interesting effects are obtained for filters with
very high and concentrated resonance. The solution is usually a mix of
upsampling to avoid big transitions and using filter representations
which are more stable (state-based representation instead of direct
filters coefficients, for example).
I don't think it is directly applicable to your problem, but the series
of papers by Dattorro ten years ago is a goldmine:
"Effect Design Part 1|2|3, Jon Dattorro, J. Audio Eng. Soc., Vol 45, No.
9, 1997 September"
> As far as convolution, as David says, take a look at existing
> algorithms and maybe even music software - there's a trade-off between
> the n^2 computation of a brute-force FIR filter and the delay
> introduced by an FFT approach, but on-the-fly convolution is a
> well-studied problem.
It may be pretty cool to have an implementation of scipy, now that I
think of it :) One issue is that there are several patents on those
techniques, but I was told there are ways around it in term of
implementation. Not sure how to proceed here for scipy,
David
More information about the NumPy-Discussion
mailing list