I have the arduino duemilanove with atMega328.
The frequency is 16Mhz.
I want to sample and record from the audio jack.
I searched and i found if i want to record "everything - so to speak", i have to sample at 44100Hz.
That means this is unfeasible with my arduino, since my frequency is only 16MHz?
Hi, no, the 16MHz clock being higher than 44.1KHz does not mean you can sample sound. Its not that simple.
What matters far more is the speed of the analog-to-digital converters on the Arduino. Once each analog value has been digitised, it must be stored somewhere, because Arduino has very little memory, so an SD card interface would be needed. The Arduino can only write to the SD card at a relatively slow speed. The 16MHz speed is not enough to compress the audio to reduce the volume of data involved.
So it might be possible to sample mono sound at a low resolution and store very short samples in Arduino's memory. But certainly not at 44.1KHz.
A more powerful Arduino like Due will have more capabilities for this - faster clock, faster analog convertors, more memory, faster writing to SD card and so on.
Thanks a lot for the excellent answer!
I have to expand though. If writing to an SD card is so slow, can i use another approach to handle the data?
For example, maybe send them over bluetooth?
Bluetooth would be even slower. Arduino normally interfaces with bluetooth using a serial interface. Serial is normally much slower than spi interface used by sd card adaptors. Maybe spi ram would be fast enough. But the Arduino's analog converters wont be fast enough for decent quality audio anyway, I supect, so you may need ad-on analog converters.
Some kind of audio shield may turn out better, easier and cheaper.
If I were you I would be thinking Raspberry Pi.