Listening to dozens of Internet radio streams is my contribution to increasing the carbon footprint. But it’s not my fault that everything now is using Internet bandwidth–YouTube videos, Smart TVs, mostly everything that isn’t analog anymore and is not transported by terrestrial radio waves. In the 1980s, TV meant a Yagi antenna, and radio meant AM (LW, MW, SW) and FM (UKW in Germany). And I was a huge listener on SW in addition to the local stations. Nowadays, in this globalized world where the number of radio stations has exploded, the only way I could listen to those I want is the Internet.

Earbuds, headphones or Bluetooth speaker, everything that goes to them comes out of my smartphone. The Internet radio devices are dumb, they lack flexibility, and no one knows of all the station that might interest me, so apps are required. This dumbness extends to all the Android/iOS apps who claim to include databases of 30,000 or 50,000 or even 100,000 radio stations. I don’t care about obscure radio stations when much popular ones are not there! This made me have on my phone about 20 Internet radio apps!

Unless you spent the last part of your life under a rock, you must know that many radio stations, beyond the FM or DAB+ broadcasts–whose content is also available as Internet streams–offer a number of “web radios” that are only available via their website or by using specific apps. Not all such streams are known to “universal” Internet radio apps, not to mention that the URLs change now and then. For an example, from the NRJ group, Chérie FM has 32 web radios in France, Nostalgie has 42 webradios in France and 23 in Belgium; then, JazzRadio.fr has 32 different web radios, M Radio (ex-MFM) has 31 web radios, and so on. (Especially the French are crazy: Les Indés Radios, which also has a good app, indexes almost 400 different radio channels, of which a third are corresponding to local or national FM stations, and the rest are the extra web radios.) Given my interest in radio stations from several countries, I hope it’s obvious that using 20+ apps was a solution that kind of worked, but lacked in practicality.

Yes, I tried all the apps that claim to offer “everything” in a single box. I also tried the various “one app per country” kind of apps. 100% crap, believe me.

Some projects, solutions and apps that are “almost good” include:

  • radio.net, a German company with 15 websites in several languages and a decent app. As expected, it doesn’t include everything I needed, but a decent ~80%.
  • AppMind has mytuner-radio.com and 34 country-specific sites, such as radio-en-ligne.fr, internetradio-horen.de, radio-uk.co.uk, radio-italiane.it, an Android app (plus 44 country-specific apps); under the name AppGeneration, they offer a different, yet very similar app, myTuner Radio.
  • The Community Radio Browser at radio-browser.info, which has roughly 90% of what I wanted, but has a few issues: editing being disabled due to vandalism, the only way to fix a broken station is to add another one. This is why too many duplicates exist, and also broken stations that are not always marked as broken. Then, not always the optimal stream is used–optimal not in terms of bitrate, but in term of the correct URL, e.g. not a .m3u file, but the actual URL. A decent Windows/Mac/Linux app that uses this database is odio, and the best Android app using it is Radio Droid 2 (also on F-DROID).

This doesn’t mean I could use this Radio Droid 2 app and close the topic. Beyond its ugly icon, this app is not practical if one wants to bookmark (add to favorites) something like 200 stations. The issues at hand are similar to those found in other apps too:

  • One has to identify the correct stream out of several homonymous ones. Which one belongs to the desired station without being broken? Is the bit rate visible enough, so one could select AAC 96 or MP3 128 instead of AAC 32, or several clicks need to be made?
  • After the user adds a station to favorites, is the screen returning to the search in the same place, or the search should be done again? This is going to be funny with stations that have 30 web radios, and the app shows 200 results of different bit rates, and some broken. Sometimes, a station has the wrong name or icon.
  • Is the search limited to one country, or worldwide? Both approaches have pros and cons, and usually one cannot add filters to the search results.
  • Can the bookmarked stations be grouped somehow? Usually not, but some apps offer random tags, ratings from 1 to 5 stars and other useless crap.
  • How are the bookmarked stations shown: with icons that are too big and no text, with icons and some text, in vertical lists whose elements take too much space, or more intelligently? (Hint: there’s no intelligent way to display favorites that are more than a few dozens.)

The aforementioned app wasn’t good enough from a practical standpoint. It would have taken half of my life to identify and bookmark the web radios I needed! Then, to sort them, to scroll in the search of the station I wanted to listen–everything was prone to drive me nuts!

If at least the app would accept to import some bookmarks from a decent file–M3U, JSON, XML, CSV, anything. Nope. (Yes, I know, it’s open-source, but I’m not gonna fix it myself.)

I then looked for “bring your own stream” kind of Internet radio player: the kind that doesn’t necessarily access any database, but that at least saves and exports the manually added streams… so that it can also import them from a file!

I finally found something in-between. A certain Vladimir has an Internet Radio Station app that is open source (but I failed to build it). It normally accesses a crappy UberStations directory (meant to allow the user to search for radio stations currently playing the desired song), but it also accepts user-defined stations! It then saves to and retrieves stations from an XML file! Yay!

The way it stores the favorites is rather compact, which is great, as I don’t need icons. It also groups them, and any group can be expanded or closed. The only things that bothered me: the horrendous icon and the fact that when a stream didn’t include ID3 info, the lock screen reads “Metadata not available.” Oh, and if the bit rate is not given, “kbps” is still shown under each station’s name in the favorites.

As I couldn’t build it quickly enough from the source, I decided to use APK Studio to hack the APK version 2.3.2 posted on Google Play Store. Those strings are not shown anymore, and there’s now a new icon.

I then repacked and signed the APK, which is available here (3.9 MB): 💾 io.github.vladimirmi.internetradioplayer-2.3.2_ludditus.apk.

Here’s my “short list” of Internet radio stations I rely upon as yet (I’ll need to update them when something changes and stations get broken): 💾 stations_2020-08-29.xml.

And here’s how the app looks like:

The app is very small and very simple, yet it can display the required info on the lock screen and in the notification area (when the radio station is offering it):

I’m not sure the above list of streams helps anyone. Surely nobody has the same interests as me. My choices are dictated by personal tastes and hates, by the place I was born and the place I’m currently in, by the languages I can understand, by my age, and many other criteria. So… jazz, some classics, tons and tons of old French music and other music from the 60s through the 80s, then the list of countries: DE, RO, IT, CH, BE, FR, UK (plus a single station from GR). It doesn’t sound sound, right?

But at least I’m now using a single Android app for all my Internet radio listening! Beyond that, I’m also using Deezer (no, not Spotify) and Foldplay. Adding SoundHound, it makes for a total of 4 audio-related apps (I disabled Google Play Music, Google Play Movies & TV and some other system apps, such as Google Search and YouTube).

BONUS: Here’s the same set of stations as a file that can be imported in RadioMaximus as favorites: 💾 RadioMaximus_2020-08-29.xml.