The Open Source community has really exploded in the last few years, and GitHub is really at the centre of this – making it incredibly easy to share software and collaborate with others.
When you think of Open Source, you may think of large projects like Linux, WordPress or maybe Audacity. However, most open source software these days isn’t what you’d consider huge – it’s mostly small scripts designed to fulfil a specific task.
It turns out there’s a fair few Broadcast-centric projects on GitHub, many of which are small projects designed to fulfil specific needs. Let’s take a look at some of them…
Studio Clocks & Displays
Every radio studio needs a good heads-up display. Why buy a clock and on-air light, when you can use a $50 RaspberryPi and a cheap TV? There are currently two projects to fill this void.
PirsClock is the first one I came across, and I’ve played around with it a bit. It uses the GPIO on the Raspberry Pi to trigger four indicator lights. Because it’s open source, I’ve created a version which receives GPIO from Livewire.
Saschaludwig’s OnAirScreen is similar, but it a bit more configurable and allows you to control it via UDP commands.
Playout & Automation Software
Pretty much every radio station these days has a computerised playout system. There’s a few free ones, plenty of expensive commercial system, but not many Open Source Radio Playout Systems.
Rivendell is a Linux-based automation system. Like many systems, it’s designed to handle the acquisition, management, scheduling and playout of audio content. Rivendell has been around for a long time, and there’s a lot of people who use it.
Sidenote: What’s a fork? When the community gets dissatisfied with the direction of the project, they can create a fork. This is basically a copy they can do their own thing with. Generally, it needs to maintain the licence of the original project (and stay open source). This happened with AirTime. Forks can still be merged back, and aren’t always a bad thing.
AzuraCast is a similar system to AirTime. It’s a web-based radio management system that allows you to create and stream auto-generated music playlists.
Back in the good ol’ days, everyone used EdCast as a stream encoder. The project’s been shut down several times, and revived, and shut down again. These days, it’s available as AltaCast. It works with Icecast (also on GitHub). The people who created Icecast are also advocates of open source codecs such as Opus.
DAB+ Encoding, Muxing, and Decoding
Who needs racks of proprietary equipment (well, servers with various cards in them) when you can encode DAB+ end-to-end with open source software?! Enter Open Digital Radio – developers of open source software to Encode, create PAD, Mux, and Modulate.
What if you don’t have the licence to transmit DAB+? Well, you can receive it with open source software too. Welle is just one of many Software Defined Radio packages, designed to receive and decode DAB+ signals. There’s actually a tonne of SDR projects on GitHub – check them out.
Need an iOS app for your radio station? GitHub has got you covered. Try Swift Radio Pro – a template radio app that’s ready to configure and release. It supports multiple stations and even gets Album Art from the iTunes Store!
Audio over IP
Want to transmit a FM station from a RaspberryPi with RDS? Of course you do! Try the aptly named PiFmRds. The PWM generator on the Pi is capable of outputting FM signals, so four people have worked on an FM transmitter with in-built RDS.
Only want to decode RDS and store everything in a database? I’ve written a little Python script to decode the RDS from the Pira FM Analyser. For a while, it was powering @SydneyRDS on Twitter. Alas, I have reception issues at my house – so the code lies dormant for now.
Dead Air Alerting
If you have Livewire, you can WMFO’s Livewire Silence Detector to detect when you’re off-air.
If you want to trigger automatic phone calls, try my Twilio Caller. This application allows you to send phone calls based on alarm conditions (you need to trigger it via Pira’s Silence Detector, or Pathfinder – neither of which are open source).
Axia Livewire Interfaces & Tools
There’s a surprising amount of tools on GitHub for Livewire.
- Need to interface Node.JS with Pathfinder? Naxxfish has you covered.
- Want to send a Livewire stream directly to Icecast? Check out Neil Betham’s Livewire Streamer.
- Want to play a Livewire stream on Linux? Kylophone will fulfil all your desires with xPlay (a Linux version of iPlay).
- How about LUFS Loudness Metering for Livewire. Bam! Kylophone to the rescue (again).
- Want to convert Livewire Stream Numbers to Multicast Addresses, and vice-versa? There’s a Python module for that.
- What happens if you have a whole heap of free time on your hands, and want to create your own routing control system? You can with the Python Livewire Routing Protocol Client.
- Need a simple Studio Delegation Switcher? I built one of those.
It doesn’t seem like there’s as much open source software for AES67, which I hope will change as the standard become more widely adopted. As AES67 and Livewire are both based on RTP, some of the above tools (such as xPlay and Livewire Streamer) should work on both.
GitHub isn’t just for software – any text files can be stored, versioned, and published. WMFO (a College Radio Station) has published all their documentation as a Github-powered Wiki.
The technology team at Insanity Radio are using WordPress to power their online engineering blog, which contains information on their projects and setup instructions for some of their tools.
Media Library with Playout System Integration
The student-led team at Insanity Radio have built their own Media Library system, which integrates with their playout system (Myriad). It seems a bit of a work-in-progress, but interesting none the less.
Companies building in the open
Lawo are also building their new Ember control protocol in the open.
Making a Commitment to Open Source
The broadcast industry is slowly being eaten by software. As I have the fortunate position of being both a Broadcast Technician and Software Developer, I’ve been slowly trying to package and release the tools I build and release them whenever it’s appropriate to do so.
I sincerely hope many others will do the same. Software is eating our industry, and developing in the open it better for everyone.