Xradio

I wrote a script (BASH) with a simple UI to play Internet radio stations through xmms2. There are links to it below along with UI description.

I used to be a big xmms fan and had a hard time when most of the Linux distros quit supporting it and switched over to xmms2 which is a daemon, not the client everyone was used to. Lets just say I ignored it for a long time. Eventually, I wore down building xmms from source every new major upgrade and solving all the GTK compatibility problems. So I started using other players (none even touch xmms). Eventually I got over it and started using xmms2. Now I am finding I really like many of its features. I have one of my Raspberry Pi's set up with xmms2 running so I can control it from anywhere in the house via ssh over WiFi (i.e. the couch). The Rpi is plugged into a Bose. It's a pretty sweet setup if you're lazy like me.

Here is the script. And here is my current stations list.

Quickstart guide:

  • radio -l or radio --list will give you a list of stations in the .radiodb file.
  • radio <name> will play the first station in the list that regex matches <name> (name can be an -E regular expression). I put this in there mostly to be able to shorten the control strings.
  • radio -v <ipcnt> or radio --vol <ipcnt> will set the volume to the integer percentage (0-100). This only changes one of the mixer volumes in a Linux system. Depending on your audio setup you may have more gain settings that act on top of this one.
  • radio -m or radio --mute is a toggle that will either mute or unmute your sound.
  • radio -p or radio --pwr is a toggle that will either turn on or off streaming of the current station. (xmms2 daemon is still up)
  • radio -i or radio --info will list info about the station, often including the title of what is being played (depends on the station). Actually, just typing radio will give you the same info.
  • radio -h or radio --help will print a screen of usage information (like this).

The flags can be combined. You have to have the xmms2 daemon already running.

I already know the Bose can play Internet radio. Their interface makes it extremely limited for me (Linux). Plus this is cooler.

Now, I need to write a "Geico Insurance Ad" detector that will auto-change the station whenever it detects an Australian accent. God - I hate those targeted ads that icecast runs. In the US you get Geico ads. They're not frequent, but they're sure annoying. Fortunately, most of the stations aren't icecast.