[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