Date: Wed, 14 May 2014 20:12:45 +1000 (EST) From: Ian Smith <smithi@nimnet.asn.au> To: Hans Petter Selasky <hps@selasky.org> Cc: freebsd-multimedia@freebsd.org Subject: Re: OSS mains HUM filtering 50Hz / 60Hz ? Message-ID: <20140514193740.D11699@sola.nimnet.asn.au> In-Reply-To: <53732425.7070600@selasky.org> References: <537264F6.5060808@selasky.org> <53732425.7070600@selasky.org>
index | next in thread | previous in thread | raw e-mail
On Wed, 14 May 2014 10:07:01 +0200, Hans Petter Selasky wrote: > On 05/13/14 20:31, Hans Petter Selasky wrote: > > Hi, > > > > Some of my USB audio headsets seems to be picking up mains HUM even if > > powered from battery. At first I thought the mains HUM came from the > > computer, but then I did some work and I verified my findings by > > sampling the AC network using a non-switching power supply. Maybe it Hmm, by non-switching I suppose you mean via a transformer .. the ripple quality won't necessarily be better than a switched supply; it's down to the final filtering usually. Any HV power lines or an electricity sub-station near you? (induction) > > does not belong in the FreeBSD audio stack, but I think it would be very > > clever to have a configurable band-reject filter in the FreeBSD DSP > > framework for 50 and 60Hz? Do we have such a filter mechanism already? > > > > Not sure if this is a so-called "feature" or not ... :-) > > > > http://en.wikipedia.org/wiki/Mains_hum > > > > http://www.selasky.org/hans_petter/hum.png Are those units mV, or what? > I tried the following patch with some success: > > === pcm/feeder_chain.c > ================================================================== > --- pcm/feeder_chain.c (revision 265912) > +++ pcm/feeder_chain.c (local) > @@ -721,7 +721,7 @@ > > /* Soft EQ only applicable for PLAY. */ I'm wondering why Ariff chose to only apply it for playback? > if (cdesc.dummy == 0 && > - c->direction == PCMDIR_PLAY && (d->flags & SD_F_EQ) && > + (d->flags & SD_F_EQ) && > (((d->flags & SD_F_EQ_PC) && > !(c->flags & CHN_F_HAS_VCHAN)) || > (!(d->flags & SD_F_EQ_PC) && !(c->flags & > CHN_F_VIRTUAL)))) cdesc.use_eq = 1; Can you give a quick pointer to the actual EQ code (just curious as to how it's done, having just taken the pcm code on faith so far). > And setting: > > hint.pcm.0.eq=1 > hint.pcm.1.eq=1 > hint.pcm.2.eq=1 > hint.pcm.3.eq=1 If that turns out to be a real solution to this problem, might we then need separate en/disabling of PLAY and REC eq? Here I'm directly generating 24-bit wave files, some of which are around 50Hz (plus harmonics), and some occasionally as low as ~22Hz, so I need specifically to not suppress these on playback, though finding amps or headphones that don't dampen these freqs too much can be fun .. cheers, Ianhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140514193740.D11699>
