[sdiy] Audio Anti Aliasing Filter

Scott Gravenhorst music.maker at gte.net
Thu Dec 20 18:34:23 CET 2012


Richie Burnett <rburnett at richieburnett.co.uk> wrote:
>Elliptic filters are a good choice to use for anti-aliasing and 
>anti-imaging filters. They can be designed with an arbitrarily 
>flat passband and have a *very* steep transition from the 
>passband to the stopband. This is particularly important if you 
>want to pass audio cleanly up to 20khz with a 44.1kHz sample 
>rate. With these figures an anti-aliasing filter doesn't have 
>much room in which to work its magic! 
>
>These days most audio ADCs have digital anti-aliasing filters 
>built in. Likewise audio DACs often have internal digital 
>anti-imaging filtering. The latter is sometimes referred to as a 
>"reconstruction filter." Some more info might help clarify if you 
>could use one of these chips. 
>
>If you dont want the complexity of designing an elliptic filter, 
>something like a 6th or 8th order Butterworth made from cascaded 
>2nd order Sallen-Key filters isn't a bad alternative. You can see 
>this circuit preceding and following the BBD chips in old Roland 
>Juno service notes. Just simulate tge circuit as-is, then scale 
>capacitor values to shift the cutoff frequency exactly where you 
>want it to be. 

Ah, Ok, this is more complex than I had considered.  Here's what I want to do:

This is an experiment which may fail.  I have a dsPIC which has a built in 12 bit ADC which
I intend to attempt to use for audio sampling of synthesizer output signals.  It can easily
sample at 44.1 kHz up to much more, but I see little reason to run it much faster.  Yes, I
realize that 12 bits is far from hifi.  However, I'd like to try it anyway for the ultimate
test - the human ear.  I'm interested in making alias artifacts inaudible enough (good
enough).  If it fails to sound good enough, I may have to move to an external ADC,
preferably 16 or more bits - I want to keep the cost low, and I'd like to avoid that.  The
internal ADC is far from complex, from what I see in the dsPIC ADC docs, there is no anti
alias filter built in.  

This is from the ADC PDF section describing external connections to the ADC pins: 

"An external RC filter is sometimes added for anti-aliasing of the input signal. The R
component should be selected to ensure that the sampling time requirements are satisfied."

There is no mention of the type of signal that the ADC will acquire, but the ADC is capable
of sampling rates up to 500 kHz.  Lower sample rates give me more clocks to play with for
the effects computations.  I've used high sample rates to reduce audible alias artifacts in
FPGAs, but this is impractical with a dsPIC, so I'd like to keep the rate reasonable.

Since the ADC input requires being driven by a low impedance output (200 ohms or less), I'll
have to buffer it anyway, so making the buffer a filter makes sense to me - assuming I even
need the filter.

I'm assuming that a Sallen-Key would be an improvement over a simple RC filter.  But given
that the DAC from which I will collect the signal already has a single pole filter with Fc
around 20 kHz, perhaps I don't even need to have an anti alias filter on the ADC input?  I'm
thinking that I don't even need the buffer, since the DAC outputs are already buffered.

This initial experiment is part of adding digital effects to a dsPIC-based Karplus-Strong
synth.  I'd like the effects dsPIC to be portable to other designs.  I know that the
Karplus-Strong model could have alias artifacts generated especially during the first few
milliseconds of a note start, but these will quickly be attenuated by the reflection filter.
 I had considered transferring the audio stream to the effect dsPIC using SPI, but the two
voice engine dsPICs operate from different xtals and cannot be guaranteed synched.  That's
why I'm cosidering a digital-audio-digital-audio technique.  I'm looking for musically good
enough, not lab quality, so I think I've go a lot of options.  I suppose I could consider
using a single clock oscillator to drive both voice engines and do this all digitally, but
that isn't a solution for other kinds of synths I might want to use this with, so I prefer
an audio input.

I'd like the effect dsPIC to be generic enough (in terms of it's design) so that it can be
"slapped" onto other synthesizer designs without having to add more stuff.


>Sent from my Sony Ericsson Xperia ray
>
>Scott Gravenhorst <music.maker at gte.net> wrote:
>
>>
>>What are people here using for audio anti-aliasing filters?  
>>
>>I'm looking for something simple.  In my own mind, I'm thinking state
>>variable lowpass with unity Q and cutoff of some 20 kHz for sample rates of
>>44.1 kHz and above.  
>>
>>Are there better or simpler?
>>
>>-- ScottG
>>________________________________________________________________________
>>-- Scott Gravenhorst
>>-- FPGA MIDI Synth Info: jovianpyx.dyndns.org:8080/public/FPGA_synth/
>>-- FatMan Mods Etc.: jovianpyx.dyndns.org:8080/public/fatman/
>>-- Some Random Electronics Bits: jovianpyx.dyndns.org:8080/public/electronics/
>>-- When the going gets tough, the tough use the command line.
>>
>>_______________________________________________
>>Synth-diy mailing list
>>Synth-diy at dropmix.xs4all.nl
>>http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
>

-- ScottG
________________________________________________________________________
-- Scott Gravenhorst
-- FPGA MIDI Synth Info: jovianpyx.dyndns.org:8080/public/FPGA_synth/
-- FatMan Mods Etc.: jovianpyx.dyndns.org:8080/public/fatman/
-- Some Random Electronics Bits: jovianpyx.dyndns.org:8080/public/electronics/
-- When the going gets tough, the tough use the command line.




More information about the Synth-diy mailing list