Transmitting an efficient AM Stereo radio signal – Part 4
A great AM Stereo signal is on the air! However, before I use GnuRadio to construct an AM Stereo receiver. I wonder how this signal sounds on a standard AM radio?
Pretty good! The video’s soundtrack reveals some audio distortion coming from the AM radio when I speak my callsign on both channels (again the carrier level is a little low), but then a great sound when voicing on just one or other channel.
This evidence reveals:
My signal is compatible with standard AM radios.
Using my multi-mode amateur radio’s SSB settings, I can hear that the lower sideband (LSB) is receiving a perfectly good Left channel, and the upper sideband (USB) is receiving a perfectly good Right channel.
There’s strong stereo separation with no ‘bleed-over’ of right-audio into the left-sideband and vice versa.
Some interesting conclusions come from this evidence:
AM transmitters could suppress one or other sideband and still be compatible with AM receivers, evidenced by my voice clearly stating ‘Left Channel’ then ‘Right Channel’ when the radio is in standard AM mode.. That would mean that the energy saved from transmitting the second sideband could be re-used to boost the signal power of the carrier and remaining sideband.
We could conclude from 1 that we could fit more AM stations into the broadcast space as they only use half the space they did before! Yes but AM radios are designed to be receptive to a 10KHz-wide signal at any one time. If two stations occupy this bandwidth then that will just cause interference. However, future AM radios could be designed this way.
So now I must design a radio receiver that receives the lower-sideband and sends it to the Left speaker, and upper-sideband and sends it to the Right speaker.
Here’s my first attempt:
Let me walk you through the design:
I set up an additional variable called receive_rate and give it a value of 1800000.
An RTL-SDR Source (a cheap dongle used normally for DVB-T TV reception and costs about £20 on Amazon) receives the signal with the RTL-SDR Source block, with the help of a sliding on-screen control called a QT Gui Range block to tune it into the frequency properly using a short equation: 5100000 + (frequency_delta * 0.1). I enter this equation into the Ch0: Frequency (Hz) box of the RTL-SDR Source and set Sample Rate to receive_rate.
The QT Gui Range has an ID: frequency_delta (which is used in the equation I’ve just shown in step 2), start: –100 to stop: 100 with a step of 1, thus producing a tuning range from 50.99 MHz to 51.01 MHz over 20 KHz – perfect for fine tuning.
The RTL-SDR Source works best at 1800000 samples per second so I take advantage of a Band Pass Filter to both reduce the samples per second down to 48000 samples per second – the optimum output sample rate to the computer’s sound card. I also use this filter to chop out all but 12 KHz of radio spectrum (so my 10KHz-wide signal is just inside but not ‘touched’ by the edges of the filter). To do this, in the Decimation: box I type receive_rate / samp_rate. Out comes the filtered signal at 48000 . Low Cutoff Freq is -6000 and High Cutoff Freq is 6000. Transition Width is 100.
Now I separate those sidebands: I apply a Band Pass Filter from -5 KHz to -100 Hz for the Left channel, and +100 Hz to +5KHz for the Right. I convert from Complex to Float in both channels and feed the result into an Audio Sink set up with 2 channels which sends audio straight to the computer speakers.
How did I do? Let’s listen:https://lansley.com/wp-content/uploads/2016/08/amstereo.mp3
Reality? It sounds pretty awful, even when the tuning is precisely on frequency (the carrier is exactly between the two channels. If it’s not, the carrier is heard a low-pitch drone – and that 1KHz tone is still higher on one channel than the other which points to the fact that I’m still slightly off-frequency).
Hmm… work to do here! More soon.