Hey everybody, do you think it would be possible to make an audio digital delay effect using the arduino? Would it work if you used a 16-bit A/D Converter IC, write the samples to flash memory maybe?, and then convert it back using a D/A Converter? I wonder if the Arduino is fast enough to handle it.
simple answer, No!
…and if it were possible its would cost more than buying a digital delay at the store
Well it depends really.
If you consider VoIP to have pristine audio quality then it will sound ok. ;D
Nice idea, but I think you’d need so many external components that the Arduino would be redundant! The ATMega itself is fast enough, but doesn’t have nearly the i/o bandwidth you need - getting data in from the ADC, out into external RAM (the 1k that the ATMega has won’t get you very far), back in again from RAM, back out again to the DAC just isn’t going to happen at any useful sample rate.
Something like an ARM7 / ARM9 board might be better suited to this (iirc they clock at about 50MHz), or one of the dedicated DSP evaluation boards.
It does depend on the audio bandwidth you are looking for and the delay times.
Some years ago I worked on a system for digitizing voice (approx 100Hz to 3kHz). I used a Dual Slope Delta Modulation technique to digitise the incoming audio - the thing about it is it digitises to a bit stream.
There are some largish serail ram chips - the serial stream could be packaged into 8 bits written in using SPI and read out from a different address in order to get the delay.
I think an arduino could handle this.
The AVR on the arduino should be able to do reasonably good audio quality, but the big problem is going to be the amount of ram for your delay buffer. The AVR only has 1k, and at a reasonable-quality sample frequency (20000Hz?) that means a max of 1/20 second or so, even if you could use all the ram for the delay buffer (and you can’t.) You could add an external delay buffer of some sort, but then you could just purchase something more special-purpose and be done with it…