Hey everyone!
I'm currently working on a directional audio system that uses delay and sum processing. I want to use the arduino to take in an audio signal, delay it for a certain amount of time (microseconds), and output that delayed signal.
However, my project seems to be a bit more simple. I don't have any experience using the Arduino and I'm waiting for my arduino in the mail right now. Here are some questions I have:
Do I need a loop function? It doesn't seem like I would need a loop function if I just want a streaming delayed audio signal.
What pins should I use for input/output? I'm unsure how an audio signal interacts with the built in A/D converter. I feel like I should have an analog output if I want an identical input/output audio signal (just delayed).
How many channels of audio could the Arduino Duemilanove handle (in regards to processing power)? I need 6 separate channels of audio with varying delays.
Any help you guys can give me would be greatly appreciated! Thanks!
I need the delay to be precise in microseconds, and it seems the PT2399 can only produce milisecond delay. What got me interested in using the Arduino is the delayMicroseconds() function.
It doesn't seem like I would need a loop function if I just want a streaming delayed audio signal.
It's perfectly fine to not know everything, impossible to do so actually. But the quote above shows me we'd have to spend a lot of time just teaching you our vocabulary, before we could explain why the Arduino won't work for this.
I see.. Like I said, I don't have any experience with the Arduino, but I'm willing to learn. So are you saying the Arduino is a dead end for my project? If this is a fact, then I will try to look for other options. However, I would like some kind of rough explanation as to why it won't work, if that's possible.
Also, if anyone has any other solutions or suggestions to get microsecond delay with audio, I'd really appreciate it.
The main problem is that you could not get six simultaneous analog samples in a microsecond. The top end for these chips is about 15KHz, using just one analog input pin. If you just had single digital pulses to delay, the other issue is that it would be very hard to get within one microsecond precision using C. You'd need to use assembly and do a lot of cycle counting. Additionally the delay functions just cause the processor to stop executing for a short amount of time, they don't act like an audio delay line. What you need is some kind of very fast bucket brigade type device, maybe an ADC fed into a FIFO and then a DAC, and vary the delay by adjusting the FIFO clock speed. Then do that six times.
Sorry to bump an old thread, but I've been wanting to implement an audio delay for quite a while. Any idea how difficult it would be to wire up an Arduino shield with the PT2399? Someone also suggested this serial RAM chip to me: http://www.cypress.com/?docID=21690. Any idea which would be easier?
To be clear, I wouldn't need to write any code for the PT2399, right? Just wire it up like the ATMega and it does it's thing?
I guess the difference between that and the Cypress chip is that the latter can connect directly to Arduino's SPI interface, but would require a library to write the audio since it's not a dedicated delay chip, just plain old RAM?
Can someone spell out exactly what would be required of me in hardware and software to produce this? I'm trying to gage whether this is manageable or above my skill level.
But be warned, it's not a super quality delay, i specifically wanted a dirty lo-fi delay to use with my noise / circuit bend instruments, and it sure fits the bill.
You can get very long, VERY lo-fi delays just by using a bigger pot for the delaytime.
Thanks, MikMo! I'll guess I'll have to solder one up and see if the fidelity is enough for my applications. Is there something similar to the PT2399 that yields higher quality?