Introducing go-dj: a cofigurable, command line dj
Often I have wondered how many songs streamed each year are re-streamed. On its face, having your device login to a computer of unknown distance and fetch a song that has already been downloaded before (this is what streaming is after all, downloading something temporarily) and then having to do that each time is extremely wasteful. Given offline modes, caching, and content delivery networks, it may not be as dire as it appears at first blush, but concrete numbers on precisely how many gigabytes of streamed music are hard to find. To me, it seems unlikely that there can't be more resource efficient ways to listen to music.
In addition to concerns about whether it is resource efficient to stream music, this model of music consumption chafes against some other ideas about the role music should play in our lives. The upside, of course, is large libraries of almost always accessible music. The downsides are: a permanent class of music renters, poor artist compensation, and unaccountable curation engines.
A long while ago, at a virtual IndieWeb meetup, while pondering the many dilemmas of streaming and recently inspired by Christine Dunbar Hestar's Low Power to the People. I spent the day building a proof of concept for scheduling audio content -- a configurable command line DJ. My intent was to have an SBC output audio into a talking house, a low-power AM transmitter I found on eBay.
Today, I'm thrilled to announce go-dj. A configurable, command-line DJ written in go. Out of the box, go-dj supports web radio, local files and folders, and podcast RSS feeds. With a simple yaml file, it's possible to make a 24-hour content schedule that is entirely yours.
This experiment does nothing to touch the woes of the music industry, nor can it touch the incentives that encourage companies to create a class of permanent renters. I hope that this highlights the fact that the world can be made differently, and that someone might use this tool to see that demonstrated.
From this point forward, the goals are to fix bugs and make the go-dj setup friendly enough that it could be recommended to a more casual computing audience.
## Hardware
Parts list
- Raspberry Pi
- AM Radio
- Ethernet Cord
- 3.5mm aux cord
- Talking House