fat16lib:
voltage precision is not critical
What is critical? Why take data at 50 ksps unless the data means something? What is the purpose of your measurement?
For my application in mind, time is critical. Voltage precision is not -- it could be 6-bit and that's good enough for me to get the gist of what's going on.
I do a lot with Radio Control (http://electricrcaircraftguy.blogspot.com/), and in the process, I borrowed a digital Oscilloscope with 1GS/sec data-sampling in order to view, study, and learn how RC PWM (communication signals in this case) and PPM (also communication signals) work. I have since then written code to read these signals. My skills were very elementary when I started, so I have progressed to harder and harder methods each time, little by little building up my skill-set over the past year, and getting to where I am today. I started by using pulseIn(), then external interrupts, with the micros() function (4us precision) to take time-stamps, then external interrupts with my custom Timer2_Counter library (ElectricRCAircraftGuy.com--RC, Arduino, Programming, & Electronics: Arduino micros() function with 0.5us precision - using my Timer2_Counter Library), to get 0.5us precision time-stamps. Then I also used pin-change interrupts, and most recently, even input capture, in order to read the PWM and PPM signals from an RC receiver and transmitter (ex: http://www.instructables.com/id/Arduino-to-MATLAB-GUI-Live-Data-Acquisition-Plotti/), respectively.
However, I like being able to share my knowledge and help others, so I thought to myself, "how can I use an Arduino to teach someone PPM and PWM communication signals?", and to give them the ability to record and view them--without an oscilloscope, and without knowing before-hand how to read the signals directly? Well, that's where I decided fast ADC reading is essential. I need to be able to read pulses as short as 50~100us, so I figure I need 5~10 samples over that pulse to easily see that it even exists. Let's say I get 5 samples over 100us, so that's 20us time-steps per sample, or 1/20us = 50KSps. I didn't even know that was possible until 2 days ago when I saw it in my book by Simon Monk. I want analog sampling so that I can see the voltage levels, as different RC systems use different levels. Some are 0-5V, and some are 0-3V, and others may be different still. I'd like to know which are which. 64-steps, or 6-bit resolution is adequate.
Second, I like understanding equipment (the Arduino, for example) well enough that I can push it to its absolute maximum limits when needed, for various applications. I'm an engineer, hands-on and research-oriented, and I am building up a skill-set and tools to be used for my whole life to come.
Third, I'd like an Arduino-based Oscilloscope, and I want to know what the limitations are. At this point, even an SD-card-based 6-bit 40KSps "O-scope" (ie: data sampling instrument) is good enough for playing around with. I plan on buffering to some location (looks like an SD-card would work, even though until this moment I had no idea it would be fast enough to record the data), then I can packetize the data into binary packets (for speed and efficiency; I've already done this...see my instructables link above to see my binary data packets in my Arduino code), then I can send the data over serial to a receiving PC, and plot it "live" (wave by wave, updating as able).
Fourth, I do a lot of data acquisition, and want to know all limits when using an Arduino (relates to 2 above). I do home projects for fun all the time and am interested in data collection, especially in regards to RC airplanes.
Fifth, I am curious about sampling audio. The upper limit of hearing is 20KHz, so I think 40KSps to an SD-card is good enough for audio, right? Even if crude, or distorted, I don't care. This stuff is fascinating. If an audio recording is understandable when replayed, I've succeeded as far as I'm concerned.