Wave audio mix


As far as I understood, Arduino does not have enough power to handle the mix of several 16bits audio channels in real time.

Is there any other solution that can interface with the Arduino to handle such a task?

Examples are appreciated.

Thank you.

Are these inputs digital or analogue when you want to mix them?

If it is the digital domain then it is possible to do this. Otherwise you can use digital pots or audio control mixers.

Check out the PT2258 6-Channel Electronic Volume Controller

from:- http://www.futurlec.com/ICSFOthers.shtml

The PT2258 6-Channel Electronic Volume Controller is unfortunately not a mixer, but "just" a 6 channel attenuator, otherwise i would have bought a handfull by now :-)

The idea is that I have a store of several small 16bit wave files (about 3 secs each), probably on a SD card or some other permanent storage memory.

When the appliance starts I need to load them to some fast memory device and then commanded by the Arduino, command the sound wave sound that plays on each channel or even better, some chip that I just send the wave to play and it mixes to the final output, together with other already playing waves.

Can it work with that one?

several small 16bit wave files (about 3 secs each)

so at 44KHz sampling rate you have a memory requirement of:- 44000 * 3 * 2 = 264 K of memory per sample. The Arduino has 1K of read / write memory.

Do you know what your :-

some fast memory device

actually is?

I know I cannot use the Arduino memory for that. The Arduino will act as the main controller between the audio part and the sensor part, reading the sensors and commanding the audio.

I’ve seen some projects with memory but I’ll worry about that later when I have the solution for the audio mixer because that seems to be the most difficult past, at least Arduino related as I didn’t manage to find anything on that.

Most "add on" memory solutions to Arduino, like SD card or USB memorystick will probably be to slow to let you read serveral audiostreams at once.

So before you commit to some solution you should check the memory options as well.