user48967: I am working on a project to make a speaker with reactive lighting. I need to be able to sample stereo audio at a decent rate for songs. The audioRead () function can do about 8 kHz and I have heard you can push it up till 35 kHz but than you can only use it for mono and you cannot use the arduino for anything else.

Someone recommended that I use an ADC. What can it do for me? 
Is the arduino's operating speed a limitation? 
If not the arduino which other micro-controller is suitable for this purpose.  


user33871: The first part of the speed limitation on the Arduino is that the ADC is painfully slow.  If you had a faster ADC chip then you could take analog readings faster so you can take more per second.  Once you're over that threshold then the next limitation you run into is the speed with which Arduino can communicate with that ADC.  So make sure you get something fast (like SPI).  

user7508: If you are only interested in getting a reading of the sound intensity,
then 8 kHz may be enough. You can also convert the signal to mono
using a pair of resistors. If you want the Arduino to do other stuff
while taking the analog readings, then you should forego analogRead()
and access the ADC directly. This is more involved that typical Arduino
programming, as it involves configuring the ADC at low-level, in “free
running mode”. In this mode the ADC operates in an autonomous way, and
send you an interrupt every time a sample is ready.
I have written a program that does something similar: it samples an
analog input at 9.6 kHz (104 µs per sample) an periodically
sends the reading through the serial port: sound-meter.ino. You can
probably adapt it for driving LEDs instead of the serial port.

48967: <p>I am working on a project to make a speaker with reactive lighting. I need to be able to sample stereo audio at a decent rate for songs. The <code>audioRead ()</code> function can do about <code>8 kHz</code> and I have heard you can push it up till <code>35 kHz</code> but than you can only use it for mono and you cannot use the arduino for anything else.</p>

<ul>
<li><p>Someone recommended that I use an ADC. What can it do for me? </p></li>
<li><p>Is the arduino's operating speed a limitation? </p></li>
<li><p>If not the arduino which other micro-controller is suitable for this purpose.  </p></li>
</ul>
 33871: <p>The first part of the speed limitation on the Arduino is that the ADC is painfully slow.  If you had a faster ADC chip then you could take analog readings faster so you can take more per second.  Once you're over that threshold then the next limitation you run into is the speed with which Arduino can communicate with that ADC.  So make sure you get something fast (like SPI).  </p>
 7508: <p>If you are only interested in getting a reading of the sound intensity,
then 8&nbsp;kHz may be enough. You can also convert the signal to mono
using a pair of resistors. If you want the Arduino to do other stuff
while taking the analog readings, then you should forego <code>analogRead()</code>
and access the ADC directly. This is more involved that typical Arduino
programming, as it involves configuring the ADC at low-level, in “free
running mode”. In this mode the ADC operates in an autonomous way, and
send you an interrupt every time a sample is ready.</p>

<p>I have written a program that does something similar: it samples an
analog input at 9.6&nbsp;kHz (104&nbsp;µs per sample) an periodically
sends the reading through the serial port: <a href="https://gist.github.com/edgar-bonet/e693799f58a545ca89a2" rel="nofollow noreferrer">sound-meter.ino</a>. You can
probably adapt it for driving LEDs instead of the serial port.</p>
