Hi Theodric,
no, these values that appear on stdout are already audio samples (PCM to be specific).
That is the "job" of rtl_fm: It takes the complex time-domain baseband samples from the hardware, detects FM (which implies detecting a frequency deviation) and convert that to audio amplitude values. The `aplay` command barely takes these samples and hands them over to the sound card (after resampling to fit possible sampling rates, I guess, as 120 kHz isn't something that sound systems usually operate at).
The `rtl_fm` command takes a couple of parameters. In your case, `-M wbfm` means that it's demodulating FM in a way compatible to broadcast FM; that implies fixed parameters for deviation, emphasis etc.
What you want is really not `rtl_fm`, which primarily is a demo program, not meant to be a flexible do-it-all solution.
What you want, showing deviation of a station, does very much sound like a spectrum visualization. Wouldn't a waterfall or even just an instantaneous spectrum visualization be what you want?
Best regards, Marcus
On Wed, 2018-03-14 at 15:57 -0400, Theodric Young wrote:
Hi,
I'm new to SDR and I have a question about the data values that are generated by the rtl_fm program.
I got rtl_fm running on my system (cygwin running on Windows 7). It is sending a stream of 16-bit signed integer values to stdout which I can redirect to a file or pipe to an audio playback system, such as sox. So when I do this:
rtl_fm -f 88.1M -M wbfm -s 240k -r120k -g 30 | play -t raw -r 120k -b 16 -c 1 -e s -V1 -
I hear sweet, sweet music! Hurray!
But how do these 16-bit integers relate to the modulation level of the carrier? I'm assuming that the values are directly proportional to the instantaneous frequency deviation of the transmitted signal. Is that right? If so, how do I determine that ratio? I'm hoping to use this to build a device that shows total modulation (as a percentage of the maximum modulation of +/- 75kHz) for an FM radio station.
Also, I'm assuming that the sample-rate of the output data stream needs to be at least 120kHz because the baseband signal includes the stereo pilot (19kHz), the stereo subcarrier (38kHz) and an RBDS subcarrier (57 kHz).
Any insight would be appreciated. Thanks in advance,
Theodric Young