Andy Piper<p><em>tl;dr</em> I created an extension for the GNOME desktop on Linux, so that folks can stream and listen to music from <a href="https://theindiebeat.fm" rel="nofollow noopener noreferrer" target="_blank">The Indie Beat</a> – an online radio station powered by independent musicians sharing music in the Fediverse, via <a href="https://bandwagon.fm" rel="nofollow noopener noreferrer" target="_blank">Bandwagon</a>.</p><p><strong>Background</strong></p><p>Independent musicians, creatives, artists, makers – these are all folk who often struggle to connect with audiences, and where retail and tech platforms tend towards squeezing their ability to make money from their work (see the excellent <em><a href="https://chokepointcapitalism.com/" rel="nofollow noopener noreferrer" target="_blank">Chokepoint Capitalism</a></em> by <a href="https://mamot.fr/@pluralistic" rel="nofollow noopener noreferrer" target="_blank">Cory Doctorow</a> – <strong><em>essential</em></strong> reading for today’s world and understanding how it systematically squeezes creatives). Over the Christmas period, I finally deleted my Spotify account, after <a href="https://harpers.org/archive/2025/01/the-ghosts-in-the-machine-liz-pelly-spotify-musicians/" rel="nofollow noopener noreferrer" target="_blank">reading about yet more awful ways</a> that company is destroying authentic creativity for their own profit.</p><blockquote><p>Cancelled Spotify. One of those things I'd allowed to roll far too long for no good reason (not paying attention), and the "ghost artists" stuff has made me feel particularly unfriendly towards the platform. <a href="https://harpers.org/archive/2025/01/the-ghosts-in-the-machine-liz-pelly-spotify-musicians/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">harpers.org/archive/2025/01/th</span><span class="invisible">e-ghosts-in-the-machine-liz-pelly-spotify-musicians/</span></a></p><p> — Andy Piper (<a rel="nofollow noopener noreferrer" class="u-url mention" href="https://macaw.social/@andypiper" target="_blank">@<span>andypiper</span></a>) <a class="" href="https://macaw.social/@andypiper/113702146008159379" rel="nofollow noopener noreferrer" target="_blank">2024-12-23T12:31:01.894Z</a> </p></blockquote><p>I’ve been a huge fan of independent artists for a very long time. Back in the MySpace / MP3 / Napster days I came across folks who I now count as friends, amazing musicians such as <a href="https://www.cindyalexander.com/" rel="nofollow noopener noreferrer" target="_blank">Cindy Alexander</a>, and <a href="https://alexcornishmusic.com/" rel="nofollow noopener noreferrer" target="_blank">Alex Cornish</a>. </p><p>Up until recently there was a <em>wonderful</em> streaming station, <a href="https://radiofreefedi.net/" rel="nofollow noopener noreferrer" target="_blank">RadioFreeFedi</a>, that offered music from artists who had a presence in the Fediverse. Sadly, <a href="https://neilzone.co.uk/2024/11/reflections-on-radiofreefedi/" rel="nofollow noopener noreferrer" target="_blank">that has now gone away</a>.</p><p>Over the past couple of years I’ve been attending <a href="https://fediforum.org/projects/" rel="nofollow noopener noreferrer" target="_blank">Fediforum</a>, an online conference where people building in the Fediverse gather to share projects and ideas. During the events in 2024, I came across two fantastic people with an interest in making things better for artists and musicians: <a href="https://mastodon.social/@benpate" rel="nofollow noopener noreferrer" target="_blank">Ben Pate</a>, builder of the <a href="https://emissary.social/home" rel="nofollow noopener noreferrer" target="_blank">Emissary platform</a>, which has a music-centric edition called <a href="https://bandwagon.fm" rel="nofollow noopener noreferrer" target="_blank">Bandwagon</a>; and <a href="https://mastodon.social/@mizkirsten" rel="nofollow noopener noreferrer" target="_blank">Kirsten Lambertsen</a>, a multi-talented web creative who runs <a href="https://patronhunt.com/" rel="nofollow noopener noreferrer" target="_blank">Patron Hunt</a>, and who spun up an alternative streaming station, <a href="https://theindiebeat.fm" rel="nofollow noopener noreferrer" target="_blank">The Indie Beat</a>. </p><blockquote><p>Happy New Year fedifriends!</p><p>I'm excited to officially announce the launch of TheIndieBeat.fm, a streaming radio station showcasing indie #music from the Fediverse. </p><p>The Indie Beat Radio is made possible through a collaboration with Bandwagon.fm / <span class="h-card" translate="no"><a href="https://mastodon.social/@benpate" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>benpate</span></a></span> </p><p>Music artists who upload their work to Bandwagon.fm have the option to make tracks available for streaming on TheIndieBeat.fm</p><p>Our goal is to use federation to make less work for artists — upload once; distribute infinitely.</p><p> — MizKirsten (<a rel="nofollow noopener noreferrer" class="u-url mention" href="https://mastodon.social/@mizkirsten" target="_blank">@<span>mizkirsten</span></a>) <a class="" href="https://mastodon.social/@mizkirsten/113760653630014273" rel="nofollow noopener noreferrer" target="_blank">2025-01-02T20:30:17.360Z</a> </p></blockquote><p>The Indie Beat builds on Bandwagon, so artists who share their music in the Fediverse via Bandwagon, can also choose to add them to rotation on The Indie Beat.</p><p><strong>Some inspirations</strong></p><p>I was nerd-sniped, I mean, <em>inspired</em>, to make something with The Indie Beat, in part through <a href="https://neilzone.co.uk/2025/01/adding-the-indie-beat-radio-fm-to-lyrion-music-server-mpd-and-jellyfin/" rel="nofollow noopener noreferrer" target="_blank">a nice blog post shared by Neil Brown</a> (which was apparently prompted by me, so that’s nice and circular!) about how to add the streams from The Indie Beat into Linux music apps such as <code>mpd</code>.</p><p>I don’t use <code>mpd</code>, and to be honest I most often live on Apple platforms (but I do keep a Plex server, which I intend to move to Jellyfin this year as I work on improving my self-hosting and homelab situations). I was pretty sure that I’d seen a taskbar music player for GNOME, though. I usually run GNOME on my Linux systems – the exception being <a href="https://andypiper.co.uk/?s=pocket+reform" rel="nofollow noopener noreferrer" target="_blank">my MNT Pocket Reform</a>, which is Sway with a minimal set of other desktop apps.</p><p>The player I was thinking of is the <a href="https://extensions.gnome.org/extension/1237/somafm-internet-radio/" rel="nofollow noopener noreferrer" target="_blank">SomaFM internet radio extension</a>, which is a menubar app that lists the SomaFM station streams, and allows the user to choose between them.</p><p><strong>The process</strong></p><p>The first iteration was a straightforward copy/edit hack of the SomaFM extension, replacing the list of channel streams with the equivalent ones from The Indie Beat. Easy!</p><p>I excitedly sent a screenshot to Kirsten to show off!</p><p>There were quite a few things that I felt I could do better, though. First of all, the artwork was missing. Also, I knew that the whole point of The Indie Beat was to be a showcase for the artists on Bandwagon, and that there was supposed to be metadata in the stream header that contained their link information.</p><p>After a lot of poking at the MP3 stream, I realised that The Indie Beat is built on a streaming server called <a href="https://www.azuracast.com/" rel="nofollow noopener noreferrer" target="_blank">Azura Cast</a>, which has <a href="https://www.azuracast.com/docs/developers/now-playing-data/" rel="nofollow noopener noreferrer" target="_blank">an API</a> – and <a href="https://azura.theindiebeat.fm/docs/api/" rel="nofollow noopener noreferrer" target="_blank">The Indie Beat API</a> had that data, and a whole lot more that I could use. In order to use it all though, I had to fully re-think how the extension would work.</p><p>So, I started over, from scratch.</p><ul><li>I hand-traced the “catellite” artwork and made a minified icon for the GNOME top bar – the full design was not great at a tiny size.</li><li>I kept a similar look-and-feel to the SomaFM extension – an icon, a player, a list of channels – but, I removed the settings and favourites options from my scope, to keep things simple. I also have the menu expand to fit the channel names, which I don’t love as it means it changes size, but it works.<ul><li>a little thing that I’m fond of is that the extension uses the configured accent colour – recently added in GNOME 47 – for some of the text.</li></ul></li><li>I did a lot of reading and poking around at GNOME Shell and gjs, the JavaScript API that enables extensions to be built. I also learned a lot about GStreamer, the engine that GNOME apps use for access to audio and video media. This was all a long, <em>long</em> way from my past work coding for GNOME, <a href="https://andypiper.co.uk/2001/09/03/anjuta-progress/" rel="nofollow noopener noreferrer" target="_blank">~20 years ago, back in early Anjuta days</a>! I’m not naturally a JavaScript person at all, so I made a lot of mistakes here.<ul><li>huge shout-out to the author of the JustPerfection extension, who carefully and helpfully reviewed my submissions to the GNOME Extensions site. This thing would be a lot more crashy and messy without that oversight!</li></ul></li><li>the extension contains a small cached implementation of the Azura Cast API, which enables the extension to query the available channels, rather than needing to have a static internal list of streams updated if a channel came along or went away (a concept of “mixtapes” is on <a href="https://theindiebeat.fm/roadmap/" rel="nofollow noopener noreferrer" target="_blank">the roadmap for The Indie Beat</a> in the future).<ul><li>I needed to add a way to access an artist’s page, which comes from a property that’s stored in the now playing data, so building an API layer that sits parallel to the radio stream player seemed to work nicely.</li></ul></li></ul><p>The Indie Beat is evolving – within a few days of starting work on this side project, Kirsten switched the branding from pink to green, so I updated the artwork. She also added a Bonk Wave channel – and the extension seamlessly picked it up! That was a nice win.</p><blockquote><p>Not What I Call Radio Bonk Wave is a new radio station from The Indie Beat Radio, curated by bonkwave.org and playing music which may be #BonkWave. Or may be #NotBonkWave. </p><p>Listen here:</p><p><a href="https://not.what.i.call.radio.bonkwave.org/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">not.what.i.call.radio.bonkwave</span><span class="invisible">.org/</span></a></p><p>or here:</p><p><a href="https://theindiebeat.fm/not-what-i-call-radio-bonk-wave/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">theindiebeat.fm/not-what-i-cal</span><span class="invisible">l-radio-bonk-wave/</span></a></p><p>—</p><p>Bonk Wave contributors – did you know you can submit any of your tracks to the station? </p><p><a href="https://bonkwave.org/board/index.php?topic=134.0" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">bonkwave.org/board/index.php?t</span><span class="invisible">opic=134.0</span></a></p><p>(Bonk Wave Contributors only – if you're not signed up to the board, create an account and we'll add you to the group)</p><p> — keef (<a rel="nofollow noopener noreferrer" class="u-url mention" href="https://mastodon.online/@keefmarshall" target="_blank">@<span>keefmarshall</span></a>) <a class="" href="https://mastodon.online/@keefmarshall/113885110335954369" rel="nofollow noopener noreferrer" target="_blank">2025-01-24T20:01:15.978Z</a> </p></blockquote><p><strong>OK… so what does it do?</strong></p><p>I’ve posted a short video which covers the basic features: choose between channels, play/stop, open the Bandwagon page of the currently playing artist in a web browser, or directly jump to Bandwagon’s Explore page or The Indie Beat main page. I’ve aimed for simple and clean, as befits the GNOME philosophy.</p><p></p><p><strong>Where to get it</strong></p><p>The extension is available to install <a href="https://extensions.gnome.org/extension/7822/the-indie-beat-fediverse-radio/" rel="nofollow noopener noreferrer" target="_blank">here</a>. </p><p>You can <a href="https://makertube.net/w/3qSQBQSwPLqGyYtopiTAk4" rel="nofollow noopener noreferrer" target="_blank">watch the demo video on my MakerTube</a>. </p><p>You can <a href="https://github.com/andypiper/theindiebeat-gnome-ext" rel="nofollow noopener noreferrer" target="_blank">follow development on GitHub</a>.</p><p>If you like it, a <a href="https://extensions.gnome.org/extension/7822/the-indie-beat-fediverse-radio/" rel="nofollow noopener noreferrer" target="_blank">comment / review on the GNOME Extensions page</a> would be very welcome. If you have issues or ideas, do leave those <a href="https://github.com/andypiper/theindiebeat-gnome-ext" rel="nofollow noopener noreferrer" target="_blank">on the GitHub project</a>. </p><p>There is a donation button in the GNOME Extensions page, the use of which is entirely optional.</p><p>Don’t forget to click over to Bandwagon, and check out the artists you hear that you like.</p><p><strong>What’s the future?</strong></p><p>The world and the internet are kind of bleak right now, but actually – we’ve got the power to make it better.</p><p><a href="https://www.youtube.com/watch?v=MTaeVVAvk-c" rel="nofollow noopener noreferrer" target="_blank">Watch Molly White’s talk from XOXO</a> and get inspired.</p><p>Also, this:</p><p><a href="https://andypiper.co.uk/2024/08/29/the-web-made-by-humans/" rel="nofollow noopener noreferrer" target="_blank">https://andypiper.co.uk/2024/08/29/the-web-made-by-humans/</a></p><p>There’s a lot of opportunity for creatives in the Fediverse!</p><p><a href="https://castopod.com/" rel="nofollow noopener noreferrer" target="_blank">Castopod</a> is a great way to self-host a podcast with native ActivityPub federation. Bandwagon exists, where you can create a Fediverse profile for yourself and your music. You can share it through The Indie Beat. I’ve personally got my eye on <a href="https://libre.fm/" rel="nofollow noopener noreferrer" target="_blank">Libre.FM</a> (like Last.FM, but free, and with a renewed / reinvigorated interest in building new features like ActivityPub and IndieWeb support – <a href="https://libre.fm/user/andypiper" rel="nofollow noopener noreferrer" target="_blank">here’s my profile</a>). Beyond those, there is also <a href="https://simonrepp.com/faircamp/" rel="nofollow noopener noreferrer" target="_blank">Faircamp</a>, a static site generator that helps musicians self-host their content and avoid <em>enshittification</em> through other channels and platforms. I’m excited! We can work together to make our spaces better for musicians and other artists!</p><p><strong>More features for the extension?</strong></p><p>This has been a fun side project!</p><p>I’ve got a few barely-formed ideas for things I can do with this in the future, as both Bandwagon and The Indie Beat evolve. Stay tuned. 📡</p><p>Oh, and through making this extension, I found and purchased <a href="https://bandwagon.fm/677e2164545bd480665b848e" rel="nofollow noopener noreferrer" target="_blank">an album I’m obsessed with</a>, which has inspired me to do some other new things… so watch this space.</p> <p><strong>Update 26/02</strong> – since posting this, folks have made me aware of some other fantastic options in this space. Hopefully, we can see more collaborations between these platforms / sites / curators, to grow the opportunity for everyone.</p><ul><li><a href="https://nham.co.uk/about/" rel="nofollow noopener noreferrer" target="_blank">NHAM</a> shares monthly online mixtapes of music from Fediverse musicians</li><li><a href="https://www.audiointerface.org/" rel="nofollow noopener noreferrer" target="_blank">Audio Interface</a>, a set of radio shows for independent artists</li><li>the <a href="https://faircamp.webr.ing/directory.html" rel="nofollow noopener noreferrer" target="_blank">Faircamp Webring</a> collects together many of the artists using Faircamp for their sites</li><li><a href="https://mirlo.space/" rel="nofollow noopener noreferrer" target="_blank">Mirlo</a> (there’s an <a href="https://github.com/funmusicplace/mirlo/discussions/530" rel="nofollow noopener noreferrer" target="_blank">open issue</a> proposing that they add ActivityPub / Fediverse support)</li><li><a href="https://ampwall.com/" rel="nofollow noopener noreferrer" target="_blank">Ampwall</a> </li></ul><p><strong>Update 26/02</strong> – I wanted a simple app to play The Indie Beat on my MNT Pocket Reform, too, so I made a <a href="https://github.com/andypiper/theindiebeat-simple-player" rel="nofollow noopener noreferrer" target="_blank">more basic system tray app</a>, that should work on most Linux desktops (written in Python)</p> <p><strong>Where do I get those stickers?</strong></p><p>Come find me at <a href="https://fosdem.org/2025/schedule/track/social-web/" rel="nofollow noopener noreferrer" target="_blank">FOSDEM</a> 2025 in Brussels next weekend, I’ll have Bandwagon+The Indie Beat stickers to share 👍🏻</p> Share this post from your <a href="https://jointhefediverse.net/" rel="nofollow noopener noreferrer" target="_blank">fediverse</a> server <p></p> <span class="">https://</span> Share <p>This server does not support sharing. Please visit .</p><p><a href="https://andypiper.co.uk/2025/01/25/the-indie-beat-on-your-linux-desktop/" class="" rel="nofollow noopener noreferrer" target="_blank">https://andypiper.co.uk/2025/01/25/the-indie-beat-on-your-linux-desktop/</a></p><p><a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/100daystooffload/" target="_blank">#100DaysToOffload</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/art/" target="_blank">#art</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/bandwagon/" target="_blank">#bandwagon</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/coding/" target="_blank">#Coding</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/creativity/" target="_blank">#creativity</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/development/" target="_blank">#development</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/fediverse/" target="_blank">#fediverse</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/gnome/" target="_blank">#GNOME</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/javascript/" target="_blank">#javascript</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/linux/" target="_blank">#Linux</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/music/" target="_blank">#Music</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://andypiper.co.uk/tag/the-indie-beat/" target="_blank">#TheIndieBeat</a></p>