Re: [Alsa-user] multichannel multiband FFT-based equalizer - README
Brought to you by:
perex
|
From: Bill U. <un...@ph...> - 2006-01-03 00:52:50
|
On Tue, 3 Jan 2006, fons adriaensen wrote: > On Tue, Jan 03, 2006 at 01:22:56AM +0200, Sergei Steshenko wrote: > >> - do you agree that if, say, I have an 8 point FFTW, the following >> frequencies are represented in the FFTW output array C (the result of time -> >> frequency conversion, i.e. direct FFT): >> >> C[0] <=> DC (only real part) >> C[1], C[7] <=> 1 * Fs / 8; >> C[2], C[6] <=> 2 * Fs / 8; >> C[3], C[5] <=> 3 * Fs / 8; >> C[4] <=> 4 * Fs / 8; Nyquist frequency (only imaginary part) > > Yes, except that it's the cosine (real) part of Fs/2, that is in C[4]. It depends on how your particular fourier transform stores the elements. > >> If yes, do you agree that no SINGLE C-array element represents, say >> 1.5 * Fs / 8 frequency ? It does not exist. A discrete fourier transform has only integer parts. > > Yes. > >> If yes, do you agree that changing simultaneously gain of >> C[1], C[7] and C[2], C[6] pairs. i.e of the pairs that represent >> (1 * Fs / 8) and (2 * Fs / 8) pairs I will not only change gain >> of (1.5 * Fs / 8) frequency, but also of the whole >> 1 * Fs / 8) .. (2 * Fs / 8) frequency range ? What do you mean by those? They do not exist in the discrete transform. If you want to define them, then that transform depends on all of the discrete transforms. > > Yes. This is no different from changing only one value - it represents > more than just the exact central frequency (you'd have a very bad equaliser > otherwise !). The minimum bandwidth you can make is Fs/N, and a bit more > with windowing. You may have some difficulty in believing that a 'non-integer' > band could have the same bandwidth as an 'integer' one, but it *is* possible, > and even quite straightforward. > > Look at it like this: there is no essential difference between the time > and the frequency domains, they are 'duals'. Just as you can delay a > sampled signal by half (or any fraction of) a sample by interpolation > and without impairing bandwidth (i.e. resolution in the time domain), > you can interpolate in the frequency domain without impairing resolution. Sure you can interpolate. but that is not very useful. You could extend the range (eg doubling it with zeros) and get an interpolation. But that interpolation is a fourier transform of your signal extrapolated by zeros. It is NOT the value the transform would have if you had actually recorded twice as much of the signal. > The output of a DFT is just 'samples in the frequency domain', like the > input is 'samples in the time domain'. Well, no. it is no. The discrete transform of a finite range of a signal is not the same as a discrete sample of the transform of a longer span of the signal. It is NOT just "samples in the frequency domain". > > Or one more variation: you say "no SINGLE C-array element represents, > say 1.5 * Fs / 8 frequency", and that is correct. In the same way, > in a sampled signal, no single sample represents the value of the > original analog signal halfway between samples i and i+1. It is > represented by all surrounding samples, with sin(x)/x weighting. > And it can be reconstructed. The same is true in the frequency domain. No and No. Once you have made teh discrete sampling you have lost the original signal. It is gone. You cannot reconstruct it. IF you assume that the original signal is frequency limited, then you may be able to reconstruct it. > > -- William G. Unruh | Canadian Institute for| Tel: +1(604)822-3273 Physics&Astronomy | Advanced Research | Fax: +1(604)822-5324 UBC, Vancouver,BC | Program in Cosmology | un...@ph... Canada V6T 1Z1 | and Gravity | www.theory.physics.ubc.ca/ |