GTA: San Andreas Radio Earns Six-Star Wanted Level

[Raphaël Yancey] wanted to be able to jam to Bounce FM and Radio:X all the time, without having to steal a car or a street sweeper in San Andreas. As people who like to put on the sad piano building music from The Sims and write Hackaday posts, we can totally relate.

But this isn’t just another one of those jam-a-Pi-into-a-vintage-radio-and-call-it-a-sandwich projects (not that there’s anything wrong with those). This thing acts like a real radio. All the stations play continuously whether you’re tuned in or not, and they bleed into each other as you go up and down the dial.

After much trial and error, [Raphaël] found a Python mixer that would work, but it was no longer maintained. He forked it, squashed a bug or two, and wrote a module for KY040 rotary encoders to make them play nice with the Pi. The snake charming doesn’t stop there: the rock star of this project is [Raphaël]’s virtual radio software, which handles the audio blending as he tunes between stations. A step-by-step tutorial is coming soon, so watch [Raphaël]’s site for updates. Tune past the break to give it a listen.

Adventures in Raspi radio-ing don’t have to be one-way. Here’s how you can turn one into an AM/FM+ transmitter using a DVB-T dongle and SDR.

Via Raspberry Pi blog

14 thoughts on “GTA: San Andreas Radio Earns Six-Star Wanted Level

  1. From his blog:

    “I’d have gladly used an Arduino-like (…) But to play tens of files at the same time requires some guts so I settled on the Raspberry Pi single-board computer.”

    While straightforward, it feels horribly wasteful to me to have a dozen audio streams playing simultaneously. One only needs to blend between two audio streams and keep track of the time to jump in and out of the audio files at the correct positions, no?

    1. My thoughts exactly. I would generate a psuedo random tracklist order for each “station” at startup seeded from something like user button press time count and then generate a timestamp lookup to translate total current listening time to what the appropriate time to switch into the next station at the correct track number from that. That way only one channel is really playing at a time but it would switch to the correct time in the next station’s playlist effectively giving the illusion of real-time radio. This way even a lowly arduino with mp3 player shield and sd card loaded with mp3s would be able to be used in place of the pi.

      1. How about a RPI’s streaming actual FM and not modding the radio at all? :)
        Assuming the various FM Tx libs out there can do multiple frequencyes else you’ll need an RPI0 cluster of them.

      2. Well, I get his intention to have the radio stations fade into each other while changing the station. However, this still only requires two simultaneous streams to fade between, not _all of them_.

        From his github page he intends to do just that. But he also intends to create “static noise” when changing, so this probably can be done with only one real audio stream and a tiny static one.

        It seems like he’s started at an unneccesarily complicated place and step by step goes back to a simple audio player that keeps track of playtime.

      1. The stations have a defined frequency, so you could actually link the original station indicator to the tuning encoder through the original mechanism, or if you were so inclined build a circuit to convert the original tuning variable capacitor into an analog value which you could then use to put the stations into their correct location on the dial.

  2. Been a while since I’ve played San Andreas, but as I recall there was some radio static when changing stations. Even if I’m mistaken, that would add a nice touch of authenticity IMO. Really like this project concept, and +1 for embracing the open source ideal

  3. This stuff sounds so cool. Can’t wait to see other renditions from other games as well as GTA 5. I woild love to hear the West Coast Classics and Radio Mirror Park on that.

Leave a Reply to danjovicCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.