Simplest microphone possible

Hello everyone
I need to make a circuit which would read out frequency of the microphone input as simply as possible, and print it in monitor in any shape or form (as long as it can distinguish 2 different pure tones apart) so i was wondering if it was possible to do it without an amplifier?
Would merely connecting a microphone to a battery and read out the value like it is a potentiometer be enough, or would the difference be too weak? (I am planning on using an ordinary computer microphone, connected with audio jack)

End goal is to make a simple robot arm which would be controlled remotely by harmonica tones.
Thanks in advance

Use a piezo microphone, it generates high enough voltages for direct ADC conversion.

You'll probably need a preamp in any case. And, you need to bias the Arduino input in order to read the negative half of the waveform.

I'd recommend a [u]microphone board[/u] which will have a preamp with a biased output. And, I'd recommend one with a gain adjustment pot.

Also, make sure to get a mic with board analog-audio out. There are "sound sensor" boards that put-out a digital high when the signal (amplitude) is above a threshold and there are boards that put out a varying DC voltage proportional to the loudness/amplitude (loosing any frequency information).

Would merely connecting a microphone to a battery

Only condenser mics need power. Most computer mics are electret condensers and the soundcard provides 5V. If you're connecting to an Arduino the Arduino can provide power so you shouldn't need a (separate) battery. (The power will create a DC bias, which is not real precise, and is generally filtered-out and then the "real" bias is supplied from the preamp.)

On the software side you can use FFT (DFT or HFT) for frequency detection (there are libraries) or you can use something called autocorrelation. Frequency detection can be tricky and all real-world sounds contain harmonics & overtones so this may, or may not, work.

DVDdoug, i went and bought a sound sensor with analog output, and i already have a library installed, hopefully all goes well

Thanks for the advice :smiley:

DVDdoug:
On the software side you can use FFT (DFT or HFT) for frequency detection (there are libraries) or you can use something called autocorrelation. Frequency detection can be tricky and all real-world sounds contain harmonics & overtones so this may, or may not, work.

There's an extended thread on frequency measurement using autocorrelation here: Arduino pitch detection in realtime (using autocorrelation and peak detection) - Project Guidance - Arduino Forum

Autocorrelation is generally a better approach for detecting frequencies with harmonic overtones compared to FFT approaches.

In my experience electret microphones with the max9814 (40-60 dB gain) work best for Arduino frequency detection applications. The various "20 dB gain" boards aren't sensitive enough to work well with anything but loud sounds.