Sampling audio with interrupt

You can set the ATmega328P's ADC into a freerunning mode that will start a new conversion as soon as the old one completes. With an x64 prescaler clock I have been able to push the ADC to about 19,200 samples per second. That's probably the fastest you're going to get while maintaining reasonable accuracy. It complicates your code a little bit though since you have to use the ISR(ADC_vect) to process the output.