that the mic might need either a preamp before connecting to the circuit but I'm not entirely sure.
Yes, microphones only put-out a few millivolts so you need a preamp. The Arduino's ADC has 5V default reference so it can read 5V peak-to-peak, which is about 1.75VRMS which is very-close to audio line level. (A "regular" preamp or audio mixer puts-out line level.)
What kind of microphone are you using?
Condenser mics need power (usually supplied by the preamp or soundcard).
And, you need to bias the output since the Arduino can't read the negative-half of the AC audio signal. ("Regular" mic preamps are not biased.)
The easiest solution is to get a [u]microphone board[/u] that has a microphone, plus a preamp that powers the electret condenser and a biased output. (That particular one does not have adjustable gain which can be an issue depending on sound levels.)
For testing, just run the [u]Analog Read Serial Example[/u]. Take out the delay, and of course read whatever analog pin you are connected to.
With the input biased at the half-way point, silence should read about 512. Quiet sounds should give you "random" readings jumping around near 512. With very-loud sounds you'll get random-looking readings up-to (or near) 1023, and down-to (or near) zero.
Even with a constant-tone, your "raw" readings will look random because you are sampling a waveform that's positive half the time and negative half the time and it passes-through zero twice per cycle (if you ignore or subtract-out the "artificial" bias). Occasionally, you'll "catch" a positive or negative peak but most of the time you'll be reading in-between the positive & negative peaks.