I'm getting slightly more serious with my audio hobby and have started to look into some audio DSP's for creating an audio device that I control with Arduino (and other MCU's). I would like to make a device that's able to:
1) Mix at least 32 16-bit stereo channels @ 48KHz with linear interpolation (~11.7MB/s)
2) Output 7.1, SPDIF & Analog, 16/24-bit
3) Support for EMIF and have at least 2MB of memory, possibly flash (audio sample data resides here)
4) Possibly some post-processing effects (EQ, reverb, FFT data out)
I'm new to audio DSP's so I would like to have suggestions from audio experts and possibly other things I should consider. I would also like the dev board to cost less than $500 as this is still just a hobby. Eventually I would like to turn this into a stand-alone device.
I would also like to know if there's already devices like this I can control from Arduino. I saw there's Rugged Audio Shield and Ladyada, but these are nowhere near able to do this kind of audio processing.
1. how many analog ins/outs do you want? you mention mixing 32 channels, but im guessing those are digital channels.
2. what aspects do you want to control with the arduino versus do on the DSP processor?
3. what language do you want to use to program the DSP side of things?
these are nowhere near able to do this kind of audio processing.
And that should give you the clue that you are asking for a lot here, possibly too much.
Your only hope is the arduino Due but I think you will be pushing that.
You would be better off getting one of the Texas DSP development boards.
I don't really need much analog ins, so single stereo input should be enough, possibly digital in as well. For analog outs it would be nice to have support for all the 8 channels though, so 8 x 16-bit mono DACs @ 48KHz or so. In addition to analog I need digital SPDIF support as well so I can connect the device to 7.1 receiver. All the mixed channels are digital and the sample data for the channels should reside in external memory because there can be several MB's of data. So there needs to be enough memory bandwidth to read all the sample data at various frequencies (at least ~11.7MB/s random access, 64-bits/read).
MCU should first stream sample data to the device memory (e.g. read from SD card and pass it to the device). Then MCU controls how the mixing is done, i.e. start sample playbacks and define pitch/volume per channel @ ~50Hz. This is pretty low-frequency data so any MCU should be able to handle it, possibly via I2C. The DSP should do the heavy lifting of mixing the channels and do some post-processing on the mixed master buffer (e.g. run FFT which you can read back to MCU for visualization, etc.)
I can code the DSP with C/C++ or assembly for performance. I have done both before so that shouldn't be an issue.
I have done similar project on Arduino Uno (with less channels & quality) and based on that experience 100MHz DSP should easily be able to do this, maybe even 50MHz. I have had a look at some TI boards but haven't found good match yet, and would be nice to know if there are other good brands I should look into.
I have done similar project on Arduino Uno (with less channels & quality) and based on that experience 100MHz DSP should easily be able to do this,
With a 16MHz processor???
Even the Due only runs at 84MHz.
I can code the DSP with C/C++ or assembly for performance.
To code an efficient DSP algorithm you need architecture that is suited to the task, using general purpose architecture like on the Arduinos can never be efficient.
All the mixed channels are digital and the sample data for the channels should reside in external memory because there can be several MB's of data.
That rules out the Arduino.
I simply can not see where the Arduino would fit into what you want to do.
With a 16MHz processor??? Even the Due only runs at 84MHz.
Yes, but it's pretty limited what kind of quality you can reach though, thus I like to move the heavy mixing work to audio DSP. Here's a clip of my current audio project on Uno that I like to upgrade:
That rules out the Arduino.
I have no plans to use Arduino but a separate audio DSP. Just trying to find a good one with all the features I would like to have.
i would also reccomend looking into devboards from the major manufacturers. TI has some stuff, Analog has its sigmaDSP line which is pretty interesting. it has a nice GUI for doing filters and such easily. Freescale also inst bad. if you want something quick, you might try looking into the old tonecore pedals from line6. they have stereo in and out, and an onboard dsp and microcontroller. otherwise you will have to roll your own.
one other, completely different pathway, would be to get small computer and put a usb sound card on it that has the io you want. a raspberry pi might get you most of the way there.
Thanks for the suggestions! I have been looking around and Symphony SoundBite dev board look very interesting. The problem is that these DSP's don't seem to support external memory which is crucial for me. The USB soundcard is also good idea but they don't seem to have external memory either (the few I checked) and I like to be able to control the audio device easily from any MCU (Arduino, Teensy, etc.) Texas Instruments DSP's seems like the closest match, but the dev boards I have checked so far don't have great audio support. I would like to have 8 DACs and SPDIF/HDMI audio on the board.
Have you tried asking in a more suitable forum? For example, comp.dsp on usenet.