Interpreting microphone output signal

I have a question about interpretation of the signal produced by a microphone.

The output of a microphone is a voltage level that corresponds to the pressure on the membrane. The part that confuses me is why are the output signal values located above and below the average (picture attached). Do the values "above and below" correspond to the membrane deflecting, and then going back to its original position? If that's the case, should I just concider the values above the average for my further computation of the Fft?

Thank you!

• by the way, as Sajil is already hinting at: you're clipping. This recording is damaged; reduce the recording gain. – Marcus Müller Nov 13 '17 at 8:06
• Adding on the comment from Marcus Müller, it might not just be the gain of your system but really the microphone that clipps mechanically or electrically. So if you continue to see these flat top peaks after reducing your gain as far as possible, you might need another microphone or pre-amp. – user6522399 Nov 13 '17 at 10:17

Sound behaves (more or less) like a wave. When the positive peak hits the membrane it is moved in one direction and afterwards "sucked" in the other. Just as waves on the beach do. Each positive peak generates a equal negative peak (in a perfect world...). Superimposition of different waves makes it hard to see this directly.

The average is not necessarily the atmospheric pressure, but is a combination of it in combination with the property of the electrical circuit of the microphone.

For your fft you have to consider positive as well as negative values. However, you may want to get rid of the average value if you do not care for very low frequencies.

Sound is tiny pressure fluctuations from static atmospheric pressure level. Please see the figure from Wikipedia here.

1. silence
2. audible sound
3. atmospheric pressure
4. sound pressure

So the microphone measurement will centered around some average value. You should be considering the whole signal for frequency analysis. Otherwise you will be clipping the signal which may cause non linear distortion.

And FFT looks for correlations between the input signal and a bunch of sinusoidal waveforms (the FFT basis vectors). Note that a waveform would not look like or be a sine wave unless it includes both the portions above and below zero, or the middle or average. So don't throw away or clip the portions below the average value.

In addition to the previous answers, as @Laurent Duval has pointed, if your vertical axis is correct, your data could be unsigned 10-bit from 0 to 1023.

First, you should scale the data to [-1,1) sig_scaled = ADC_lectures / 1023

From Wikipedia, "In mathematics, a Fourier series is a way to represent a function as the sum of simple sine waves. More formally, it decomposes any periodic function or periodic signal into the sum of a (possibly infinite) set of simple oscillating functions, namely sines and cosines (or, equivalently, complex exponentials)."

Again, as @hotpaw2 has pointed, a sinewave includes both the negative and the positive part [-1,1] so your signal should include them as well.

I wouldn't be surprise that the maximum (clipped) value is something like $1023$. Together with the minimum a $0$, the data you have could be a digital signal coded on (unsigned) $10$-bit words or $2^{10}=1024$ values.

So to get something more related to a pressure level, or a voltage, I believe that at least a range correction should be performed to convert an unsigned binary value $V_b$ into a physical unit $V$, often with the form $V = aV_b+b$. $a$ and $b$ could be retrieved from sensor/amplifier specifications. After that correction, as said by colleages, the values of the corrected data should vary around some zero.

Due the the clipping at both $1023$ and $0$, some care should be taken when computing the average.