For the past two weeks or so, I’ve been working on constructing the Taylorator. The Taylorator is a piece of software which allows me to flood the FM broadcast band with Taylor Swift’s music. No matter where you tune your radio, you will only be able to listen to her!
Okay, I admit that you could technically use the Taylorator to broadcast whatever music you want, so maybe it’s a bit of a misnomer. But for some reason I figured this would be funnier.
What do I mean by flooding the FM broadcast band? Well, in Canada and the US (and maybe other places too), the FM broadcast band spans 88 MHz – 108 MHz. You can’t broadcast wherever, though. Stations will only appear on odd-numbered frequencies, like 88.1 MHz, 94.5 MHz, 107.3 MHz, etc. There’s a technical reason for this – every FM broadcast takes up about 150 KHz of bandwidth, and spacing the broadcasts like this allows for an extra 50 KHz of wiggle room.
This also works out to 100 different frequencies that we need to populate (with 100 different songs). So, how can we accomplish this?
Software Defined Radio
SDR, or Software Defined Radio, is a paradigm where you do most of your signal processing in software, and then a relatively dumb piece of hardware creates a real-world signal from this virtual signal. It works similarly to a sound card. It takes in a series of samples, and spits out a waveform that matches these samples.
They make SDRs that can transmit, receive, or do both. For this project we don’t care about receive, and only need to be able to transmit. I chose to use a LimeSDR mini, because it can transmit, has a wide enough bandwidth, and I already had it lying around.
One important difference between a sound card and an SDR is that a sound card takes real-valued samples, and an SDR takes complex-valued samples. That is to say, each SDR sample can be presented as a single number a + bi
, where a
an