Transmitting an efficient AM Stereo radio signal – Part 1

One of several projects I earmarked for my summer break was to dive deep into my amateur radio hobby. As a radio ham I am able to transmit radio signals containing content from morse code to speech, images, video and digital data across the world.

Specifically I wanted to scratch a technical itch that had been vexing me for years: Take a standard amplitude-modulated (AM) signal of the sort that you find long wave, medium wave and shortwave, and a) improve the sound quality, and b) use it more efficiently by transmitting a stereo sound.

This write-up is in four parts and is for the benefit of my fellow radio geeks!

AM signals are the simplest form of radio signal that carries audio content, explaining their presence across more than 70 years of radio broadcasting. You simply create a ‘carrier’ signal on the transmission frequency, and you vary its strength – amplitude – in accordance with the information signal you wish to transmit, like this (source: Wikimedia):

AM signals are very easy to receive. So easy, in fact, that the first domestic radio receivers consisted of a ‘cats whisker’ crystal which roughly tuned to the frequency of the signal, and a diode that allowed part of the signal through to some headphones. He’s a simple diagram (source: Wikimedia):

What the diode does in this diagram is allow through to the headphones the ‘upper’ part of the AM signal in the diagram above – the section above the solid line. Since the radio frequency is so high it cannot be heard in the headphone, only the audio component ‘modulated’ onto it is heard. You’ll see that the Information Signal in the diagram above is identical to the AM signal above the solid line. The part of the signal below the solid line is discarded, which points to one of the inefficiencies of AM, which is that a lot of transmitted signal just doesn’t get used in receivers.

AM’s inefficiencies become even more stark when you look at the bandwidth it uses up. Below is a view of BBC Radio 4’s 198 KHz LW transmission recorded over a period of 10 seconds (time represented vertically). Along the bottom of this image is a graduated frequency scale with the centre of the signal at 198 KHz. Small vertical lines represent 1 KHz intervals, so the signal actually occupies the radio spectrum from 193 KHz to 203 KHz.

From its appearance the signal appears to have a mirror-image along a bright vertical line in the centre. The left side is an exact copy of the right side. These two sides are called sidebands and the bright central line is the carrier signal. The brighter the pixels in this diagram, the more signal energy is received, so you’ll notice that the carrier uses up an awful lot of transmitter energy yet it does not contain the audio content! With the signal duplicating the audio content in each of the sidebands, all in all this is a highly inefficient use of radio spectrum and transmitter energy.

BBC R4 198 LW

You’ll also notice that, towards the bottom, the signal seems to have narrowed. This is because the radio programme being broadcast when I took the screenshot consisted of a studio presenter speaking, who then handed over to a person on a telephone line replying to a question. The telephone system had limited the audio quality of the caller’s voice (specifically the maximum audio frequency) and so for the duration of the telephone caller speaking, the bandwidth of the BBC signal was reduced. This is a demonstration that, with AM, the higher the maximum audio frequency we want to transit, the more bandwidth the signal has to use.

Indeed, thanks to those two mirroring sidebands, the maximum bandwidth that an AM signal requires is double that of the maximum audio frequency we are allowed to transmit. No wonder AM signals sound bassy and lacking in treble frequencies – allow them to have a higher audio quality and you use up more of the radio spectrum for each radio station!


What if I:

  • Removed the carrier – how is helping an AM receiver?
  • Stopped that sideband duplication and instead transmitted stereo left and right channels on each sideband?
  • Found a way of increasing the audio quality (highest frequency) without using up any more bandwidth?

That was my project, and I armed myself with some great tools to try and achieve it:

  1. Two computers, each with the free GnuRadio computer application installed
  2. A HackRF ONE software-defined radio transceiver that can transmit radio signals
  3. A cheap RTL-SDR compatible ‘DVB’ software radio receiver dongle bought from Amazon for about £20

In Part 2 I’ll start at the beginning by creating a standard broadcast mono AM signal which I’ll receive on a nearby AM radio.

In Part 3 I’ll review the mono AM signal then adjust the flowgraph to create a stereo AM transmission, where each sideband carries either the Left or right stereo channel content.

In Part 4 I review the AM stereo signal from the perspective of listening via a conventional AM radio – is it backwards-compatible? Then, I’ll work out how to receive the AM stereo signal using a second computer with a suitable GnuRadio flowgraph designed to demodulate those differing sidebands back to stereo audio.

In Part 5 I’ll see if I can improve audio quality (specifically, increase the highest audio frequency that can be transmitted) without taking up any more radio bandwidth.

In the meantime you are welcome to follow along – you don’t need to buy anything, just install the powerful and free GnuRadio app on your computer, then you’ll be able to download and try out the GnuRadio flowgraphs from subsequent parts as I publish them. Each download and install of the GnuRadio application is large but well worth it if you are a radio geek like me! GnuRadio is a bit like virtual lego for radio – you can use brick-like modules to build any sort of analogue or digital radio system and transmit / receive signals, even if they are to/from computer files.

  1. Windows – go to and look, in the table, for the row named ‘Windows Installer’ and the column ’64-Bit Any CPU’. Currently the version is v3.7.9.2/v1.1.1 but that can change anytime.
  2. Linux (Ubuntu / Debian / Raspbian on Raspberry Pi 3) go to a command line and type: sudo apt-get install gnuradio
  3. Apple Mac OSX – install MacPorts (link here) then go to the command line and type sudo port install gnuradio