OnAirHope V3 is the latest iteration of my on-air metadata management system, built originally for Hope Media. In simple terms, it takes data from our on-air playout software, transforms it, and send it to a variety of outputs such as our website, mobile apps and RDS.

Update: I’ve created an easy way to get Now Playing information from your automation system to websites, RDS, and more. Check out MetaRadio.

Update 2: A lot has changed since 2015. Read about some of the new features I’ve added since this first article was published. And find out how OnAirHope is driving content syndication to regional radio stations.

I had the pleasure of creating OnAirHope V1 in 2010. Built in VB.NET, it was originally designed to be a drop-in replacement for a software utility from our playout vendor. We iterated quickly and ended up with a very stable V2 release which has been in production for a number of years (there have been quite a few point releases in there too).

Version 1 of OnAirHope

Version 1 of OnAirHope

OnAirHope V2

Version 2 of OnAirHope

However, times change and it came time to do a complete re-write and turn it into a much more powerful web-based application. What we have now is not just a simple metadata utility, but a full database of our audio metadata, on-air schedules, and third-party data matches (we match songs to iTunes, Spotify and a number of other services).

There is a client application which receives all the raw metadata from the playout system (Dalet 5.1 and RCS Zetta are currently supported, but adding additional systems is fairly easy) and sends it to an endpoint on the web server. On the web server we:

  1. Try and match the audio with an existing database entry, or create a new entry
  2. Try and match against a number of third-party services, such as:
    1. iTunes
    2. Spotify
    3. Last FM
    4. Musicbrainz
  3. Merge song data with on-air schedules
  4. Send the data to a variety of outputs, such as:
    1. FTP Server
    2. RDS Encoder
    3. DAB+ Mux
    4. TuneIn Radio Broadcaster API
    5. Icecast Song Data API
    6. OnAirHope JSON API

The last point is the most important one. We have created a API which new applications pull data directly from. It’s also cached heavily in MemCache, so performance is always top-notch.

There is also a drag-and-drop schedule editor, which allows us to create on-air schedules to be displayed on the web. A web content editor can very easily edit the schedule for a specific day, or the default schedule for a station.

This system acts as a CMS for audio metadata. We can add extra fields and other third-party matches. We can add additional output formats and API endpoints.

What this means is that we can now iterate online music-focused services quite quickly. If we decide to add extra music functionality to the website, we either already have the data or can get it easily. It we decide to release products using the Spotify API or some other online service, we can.

OnAirHope V3: Playlists Screenshot OnAirHope V3: Schedule Editor Screenshot

I’m quite proud of my work on OnAirHope, seeing it grow from nothing to a substantial application serving realtime data to many thousands of clients every day.