A couple of months ago, I wrote a post on remotely broadcasting during the lockdown, and explained my concept for virtualised remote broadcasting in a remote VM using Discord.
A little while after writing that post, the coronavirus situation got a little better, and people could resume to doing shows from the studio’s, however with people going in and out of isolation etc, we still couldn’t, and didn’t want to rely on using the physical studio we have access to.
My system could easily be adapted to use Myriad on our playout machines, however, some people were and are still using the studio’s, and the Universities ICT Policies doesn’t seem to allow for remote connections via Chrome remote desktop, as expected.
In the meantime, I’ve put together a new system for remote broadcasting, which aside from a few very minor specific to Brayford Radio issues, works pretty well and is 100% up and running. So for fellow stations, techies, and those interested, this is how we’re currently running:
From the official GitHub page:
‘LibreTime makes it easy to run your own online or terrestrial radio station. It is a community managed fork of the AirTime project. It is managed by a friendly inclusive community of stations from around the globe that use, document and improves LibreTime.’ (https://github.com/LibreTime)
Libretime playout is like a telephone switchboard for radio stations, I’ve never come across a similar platform. The software is designed to run on a very lightweight Linux server, of which I’m running a Ubuntu 18.04 server with only 1vCore and 2GB RAM in the cloud, making it cheap enough to run for a voluntary radio station.
The software runs by effectively hosting three different Icecast audio points on one server. An Icecast server is designed for streaming multimedia to many users across the internet, effectively the home of the audio for your radio station. It is the place the listeners connect to when tuning in online to your radio station. (unless you use a proxy relay or CDN.)
Here’s a diagram of how I have Libretime setup:
We only use two of the Icecast points, for audio ingest/input and built-in scheduled output only.
Libretime in itself has music and voice link scheduling, so for our pre-recorded shows (of which we have more than I’d like of at the minute, due to our team having to work from home) – our presenters and producers can log in and set-up, manage and watch their own shows go out, just like scheduling within Myriad Playout or many other playout systems. Pretty neat.
Furthermore, multiple accounts for different presenters or ‘DJ’s’ can be set up to give permissions for different people to schedule at certain times too.
This is extremely useful as before, our presenters would have to send us or upload their show content to an online share, and one of the staff team would have to remotely login via TeamViewer and drop the content into Myriad. We don’t, and probably will never have, a big enough Teamviewer license to be able to give it out to all our team, it’s super expensive! (*in my opinion, when considering free tools such as Chromes RDP or Microsofts RDP.)
Because LibreTime hosts its own Apache Server (that’s a simple webserver), presuming you have a static IP address or a DNS (or Dynamic DNS – check out https://www.noip.com/) nameserver setup, you can simply host Libretime on your radio stations website, or directly off the static IP of the Libretime Linux server and create logins for all your team.
Without sounding like too much of an advert for Libretime, it’s super easy to install too, you just need a blank Linux VM – I’m using OVHCloud to host it all for less than £5 a month. If your station is part of an SU however, I believe you can apply for Microsoft’s non-profit Azure program too (at time of writing).
So, what are the icecast servers for?
I should note, I’m using the term ‘icecast server’ very loosely, and would perhaps be better off saying ‘icecast mountpoint’. Libretime as a whole can act as a public Icecast SERVER to serve your radio stations broadcast audio to your listeners. At Brayford, we’re not using Libretime as our public icecast server, as we already have a hosted server linked to all our web-players elsewhere, so we’re just directing Libretime to stream to the input of that external 3rd party server, a little like using Libretime as a gateway proxy server for our main radio stream.
In terms of this post, I’m regarding one icecast point as the built-in playout of Libretime, one for the ‘MASTER Audio’ input and one for the ‘SHOW Audio’ input. All of these do slightly different things. Each different mount point has a different address and port number to connect to from any external audio encoders.
Usually, the MASTER input could be the main studio feed for the radio station, and the SHOW feed could be from external sources, such as people broadcasting at home, which could automatically detect when a client (or Radio DJ) connects and switch over, although as Brayford has to share its studio’s with the University – turning the stream on and off has always been annoying, to say the least, so we don’t use the master feed at all.
Automating Stream Switchovers (the big selling point for me…):
Using the SHOW mount point, Libretime can be told (by scheduling within the control panel) which presenters should be allowed to connect and where from, ensuring not only that the correct people can only log in at the correct times, but also that the studio playout machine gets kicked off when the time’s right. Obviously, we can’t keep the studio at the University connected during the day or we could end up broadcasting all kinds of things…
By using ‘Libretime Authentication’ under the live stream input section, it matches the stream input servers login credentials (the details you input into the broadcast encoder software) to the DJ or Presenters login used to access Libretime on the internet.
You can even add images, set metadata for external players, auto-create podcasts from shows, and colour code in the scheduler so your admin team can easily see at a glance who’s broadcasting from which location. At Brayford Radio, we use four colours in our scheduler:
Blue – Feed coming from our main rented studio at the University
Pink – Feed coming from the built-in playout on Libretime (pre-recorded or VT’d show)
Orange – Feed coming from an external source outside of our control, such as the syndicated SRA Chart Show feed that we play out on Sundays from 2PM.
Green – Feed set to be received directly from one of our presenters. (Live from home)
At the end of each block on the schedule, the software confirms who’s supposed to be broadcasting and adjusts the username and password for the stream connection details accordingly. This is perfect for when your team needs to connect to broadcast from home, or you need your studio PC’s to get kicked off at certain times.
Unfortunately, when the software checks the credentials are in sync to allow people to disconnect and connect, the station appears to go to dead air for about 5-10 seconds. If you were using the MASTER source Icecast point as intended, I presume this wouldn’t be an issue, however. I may rethink this slightly for our use case soon. Luckily, this only happens at the end of blocked scheduling (usually TOH), so although a little annoying, is not deal-breaking for me – and I suspect a very niche problem since most stations don’t have to share studios and have to worry about them being infiltrated by a load of first-year students shouting inappropriate things down the microphones.
Live from home:
Personally, I much prefer live radio content over pre-recorded or ‘voice tracked’ material. Amongst other things, the possibility of live interaction with the audience I regard as one of the key features of listening to the radio. Using Libretime, we can accept audio streams from just about anywhere; although as I mentioned when designing BrayfordAnywhere v1 over the Summer break, routing audio to an encoder when you’re not a little bit of a geek like me can be tricky, so I set out to find the easiest way of doing it possible, without sacrificing quality.
Let the playout software wars commence.
RadioDJ Playout Automation
RadioDJ, my trusted radio playout software of choice for home use, (mainly because it’s free) is a very solid bit of software and has some fantastic features for a free piece of software. You could run an entire 24/7 automated station off this software – which may actually be a drawback for some people because of how complex it can be to set up and configure.
I’ve used it many times before, and personally, I really enjoy using it to broadcast. It even has a built-in Icecast/Shoutcast streamer to send its audio directly to Libretime, and a MIC input channel, making it very versatile and easy to broadcast with remotely.
At the time of writing though, I’m recommending Mixxx to broadcast from home. Despite my initial thinking of ‘Why an earth would you recommend people get a piece of software not designed for radio?’ Mixxx is a great free piece of software and is very easy to use and install. Unlike RadioDJ, Mixxx doesn’t need a MySQL database to run off, making for fewer things to go wrong and for people to worry about in the long run. It also (and this is really the selling point for me at this stage) allows users to drag and drop audio files from anywhere on their PC into a player, and hit play. Simple, fast, reliable – a little like the old days of using vinyl records to broadcast, but slightly easier thanks to playlists.
On the topic of using records to play though, Mixxx works best I feel for fully live shows and is very hands-on. This matches my presenting style, however, if you’d like more of a run through setlist for your show, then RadioDJ is the way to go.
Both software have built in Mic/Line channels and support built-in streaming to icecast/shoutcast (the libretime platform). If you broadcast on a Mac, I’d recommend also checking out QLabs (I’ve used it recently for a project, and will post about it soon…) – QLab I found to be very useful for following a setlist, however, you’d probably want an additional cart player/wall if you’re going down that route.
I often find myself working on all sorts of audiovisual projects, so I started this blog to share some of what I do with the world, in the hope that all the info and experiments I find can help out other broadcasters, engineers and people interested in media-related projects. I try my best to make sure everything I write is correct, but nobodies perfect, right? – some information may be inaccurate.
Let me know if any of this was helpful and let me know how your station is running! 😀