[sdiy] DECISION TIME: need a Ucontroller/ARM/DSP chip that will process audio

Olivier Gillet ol.gillet at gmail.com
Sun Mar 4 00:16:45 CET 2012


True, the ATmega line (as used in the Arduino) is not spectacular for
audio processing, but you mention delays and flangers, not convolution
reverbs or spectral morphing, right? A micro clocked at 16 MHz
processing audio at 40kHz gives you 400 CPU cycles per sample. Ok -
350 cycles if you remove interrupt overhead. I'd say you only need one
fourth of that to do a stereo delay or flanger without *even* trying
to be smart with the code.

The WTPA - http://narrat1ve.com/ - does sampling / granular processing
on two voices, and is based on a lowly ATMega - so it's not like it's
impossible. See also the Microdec -
http://www.openmusiclabs.com/projects/microdec/

The limiting factor seems to be in your case the 2k of RAM of the
ATmega328p. Note that 2k is still OK for a mono flanger, of course it
sucks for delays... The bad news for you is that you won't get
dramatically more by switching to other MCU families - maybe 24k
(STM32F103 - Maple) or 32k (LPC1756 - Mbed), not the 172k you need to
hold 1s of stereo 16-bit audio at 44.1kHz... You will surely get much
more processing power, a 32-bit ALUs or even DSP operations, and all
this will solve all kinds of problems except "giving you more delay
time". Throwing out the baby with the bath water etc. The more
sophisticated you'll get, the more hurdles you'll meet in terms of
development environment, chip packages, cost of dev boards or
compilers, support, etc... From your previous posts it seems like
you're still in the process of learning programming ; and discovering
concepts like interrupts, manipulating peripherals registers etc.
Maybe you should take the time to learn all this in an environment
very friendly to beginners and frequented by people rooted in
pedagogy? And then ditch the AVR/Arduino once you are confident you
understand well all the concepts to know your needs and make decisions
by yourself?

For delays, you'll have to go external RAM whatever you do. You can
find old-school DIP 512k or 1M SRAM chips with parallel interfaces:
http://fr.farnell.com/alliance-memory/as6c4008-55pcn/sram-4mb-2-7v-5-5v-512kx8-pdip32/dp/1562900

As for DAC / ADC, if you're doing serious audio work you'll probably
have to use an external one anyway. SPI or I2S...

It's certainly a foolish sport to try to squeeze as much DSP/synthesis
stuff out of an 8-bit micro, but there's no excuse for not trying to
learn first about the simple stuff (like delays) with what you have.

Olivier



More information about the Synth-diy mailing list