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