[sdiy] Audio Anti Aliasing Filter
rburnett at richieburnett.co.uk
Thu Dec 20 20:08:44 CET 2012
I'd recommend looking at an all-in- one CODEC chip like the CS4270 from cirrus logic. This interfaces directly to the dspic's DCI port and includes 24-bit stereo ADC and DAC. This will run at a whole range of different sample rates and has all of the necessary anti-aliasing and anti-imaging filters built in.
It will guarantee pristine audio quality, save you a lot of design effort, and leave you with more time to concentrate on developing cool effects programs. You also still have the dspic ADC available to read realtime control pots or external CVS, which it is much better suited to.
Sent from my Sony Ericsson Xperia ray
Scott Gravenhorst <music.maker at gte.net> wrote:
>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?
>>>-- 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
>-- 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
More information about the Synth-diy