?? Mon, 10 Jan 2011 11:44:36 +0100 Maarten Bosmans <mkbosmans at gmail.com> ????????: > 2011/1/10 IL'dar AKHmetgaleev <akhilman at gmail.com>: > > I have a cheap USB headset which records audio with the little > > DC-Offset and noise at 50Hz. > > > > As I know it's very usual problem of cheap audio devices and > > integrated audio cards. > > > > So I'm requesting a module which will filter input stream. > > This pseudo code was suggested in alsa ML: > > > >> xs=0 > >> while (input){ > >> xs=.01 xinput +.99 xs > >> xoutput=xinput-xs > >> } > >> (This averages over roughly the last 100 inputs and subtracts the > >> offset). If you want a longer averaging, change the coefficients. > > It is wrong to say that the averaging is done over the last 100 > inputs. What you are proposing is averaging with exponential > weighting. This means the averaging window is infinately long. > > The concept can be useful, but you need a much smaller factor if by > inputs you mean samples. 0.00001 for example would be better, because > then the last period of a 20Hz wave in a 48000Hz signal only > contributes 2.4% to the average (1-.99999^2400), which seems much more > reasonable. You know better how to do it. It's why I'm asking here. > > Will be nice to have such module with sampling period as > > attribute. > > Is there any reason this kind of signal processing wouldn't be more > appropriate in an alsa driver? They suggested to buy correct hardware on mailing list. ;)