Hi, list, I have practically abandoned the idea of making a subband adaptive filter scheme using externals, but have not given up on making a Newton-method, rather than a gradient descent method (Fourier deconvolution is a Newton method, for instance, LMS and NLMS is a gradient descent method).
So, I've written the convolution routine and it works mostly. There is a high frequency component of the error that doesn't make sense to me. All I did was the complex multiplication of two fft's, and it seems like it's not handling the Nyquist frequency well. Any ideas?
Also, I wondered if there would be a way to move a block of samples (in this patch length 2*L) within a block of samples length 2*N, from the end of the block to the beginning of the block. This would reduce latency of the filter patch (currently 2*N-L) to L (samples). N is the filter length, and L is the intended latency.
I've attached the patch, as is, where you can see the high-freq. weirdness that goes on. Just turn on the filter using the toggle box above [s f_on$0] and hit the message [256 64], in that order.
Any suggestions would be gratefully recieved! Chuck
forgot the patch...whoops
On 11/5/06, Charles Henry czhenry@gmail.com wrote:
Hi, list, I have practically abandoned the idea of making a subband adaptive filter scheme using externals, but have not given up on making a Newton-method, rather than a gradient descent method (Fourier deconvolution is a Newton method, for instance, LMS and NLMS is a gradient descent method).
So, I've written the convolution routine and it works mostly. There is a high frequency component of the error that doesn't make sense to me. All I did was the complex multiplication of two fft's, and it seems like it's not handling the Nyquist frequency well. Any ideas?
Also, I wondered if there would be a way to move a block of samples (in this patch length 2*L) within a block of samples length 2*N, from the end of the block to the beginning of the block. This would reduce latency of the filter patch (currently 2*N-L) to L (samples). N is the filter length, and L is the intended latency.
I've attached the patch, as is, where you can see the high-freq. weirdness that goes on. Just turn on the filter using the toggle box above [s f_on$0] and hit the message [256 64], in that order.
Any suggestions would be gratefully recieved! Chuck
The "weirdness" to which I was referring here was because rfft~ didin't have a nyquist component of the signal. So, the error was around .001 for regular tones and varied according to slight phase shifts, between 0 and 1 at the Nyquist frequency. So, I switched to fft~ and ifft~ and the error dropped to 10^-8 (which is aprox. 1/24 bits of precision). I am using Pd-extended-38.4. Don't know if this has already been reported or fixed. I'm lagging behind current releases :) Chuck
Charles Henry wrote:
The "weirdness" to which I was referring here was because rfft~ didin't have a nyquist component of the signal. So, the error was around .001 for regular tones and varied according to slight phase shifts, between 0 and 1 at the Nyquist frequency. So, I switched to fft~ and ifft~ and the error dropped to 10^-8 (which is aprox. 1/24 bits of precision). I am using Pd-extended-38.4. Don't know if this has already been reported or fixed. I'm lagging behind current releases :)
afaik, this has been reported and fixed.
mfg.asdr IOhannes
Chuck