I'm trying to modulate in FM an audio signal $x(t)$ coming from a microphone which works from 50 Hz to 16 kHz in MATLAB.

But the problem is that I want a FM Bandwidth of 25 kHz at the output of modulator.

I have some problems to do this:

The FM bandwidth for any signal using Carson's rule is:

$$BT = \left(\frac{f_d \max\vert x(t)\vert}{W}+ 1\right)W$$

where $W$ is the maximum bandwidth (15.950 kHz in this case) of the modulating signal and $\max\vert x(t) \vert $ is the max value of the modulating signal in $Vp$.

The thing is I have to adjust the deviation sensibility $f_d$ (slope) to get the desired FM bandwidth, but how to know $\max\vert x(t)\vert$ in the microphone datasheet? or even using an amplifier between microphone and modulator?


From a practical point of view, the maximum value that your microphone will send you is limited by the input ADC clipping level. The clipping level is probably stated in terms of the analog reference voltages that the audio codec uses. Moreover, the analog value that's converted into digital may be further normalized or scaled by the audio codec firmware before sent to the calling application.

In the old PC WAV audio standard, 8-bit channels sent a maximum value of integer 255 with a bias of 128. The 16-bit channels used a signed format with maximum corresponding to $2^{15}$. Note that this value is typically mapped to some range and converted to floating point values for further processing such as done in MATLAB. So be aware of that.

The standard DSP diagnosis procedure recommends a test with a known or predictable input signal to observe the mathematical range of the resulting input samples.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.