As it seems, we in media monitoring want to record everything. Good part of everything is still in FM radio spectrum (or AM in some flat-land countries). An usually, there are plenty of stations on the air that we have to record, at least a dozen at a given location…
Many many years ago, when I was working in FirePlay (great radio automation company and software) we had a task to produce a recorder that would record ONE channel of radio program 24/7. At that time, encoding MP3 in real-time was some kind of science, and wasn’t available but on most advanced systems that were available (I won’t try to be exact here, but it was something on the lines of Pentium 133Mhz).
So we build FireSave, first version, that was able to handle 1 channel and record it to hard drive, encoded in mp3 format. We even tried to use some obscure GSM codecs to save space even more…
Ancient history, but without dinosaurs
Setup above required live external tuner to be connected to the Sound Blaster (yeah, really). We had some multi-channel cards but they were expensive, and using them to record a confidence and/or compliance recording would be waste of money.
Our need was expanded from one channel to several, say 4. Since we had some expertise running multiple channels, we quickly added more external tuners, replaced Sound Blaster with some multi-channel monster (it was Wave4, then Gina24, then other stuff from EchoAudio, such as Layla 3G) and finally upgraded the software so it could handle multiple channels.
It worked, with 4 external tuners attached to one PC, sometimes more, it looked like an octopus.
Present days (year 2009)
OK, but what if you need and want to record 150 radio station that typical country like Croatia has? You’ll be able to get some audio cards that will have up to 16 audio inputs (even mono sound will be OK), but to have that kind of external tuners, that is and could provide some kind of a problem. And yet still, they can’t all be heard in one place, so you’ll have to have multiple recording sites in order to capture everything you need.
The simple fact is that every good radio station will have its internet stream so it will be heard on the internet. And there is a way to capture that stream of the internet and save it to hard drive as you would record it. There are multiple tools on the internet that would allow you to capture internet audio streams, and you just have to choose one of them, and you’ll be able to record any radio that has its stream. Before we created StreamSink, I was extensively using StationRipper for my own purposes, and that was the inspiration that was needed to create very similar tool. It is similar in the respect that it records internet audio (and video) streams, but one thing is very different: all ‘rippers’ including StationRipper are designed to try to cut audio stream at song boundaries, creating a library of songs for the user. On the other side, our task was to create system to record internet streams in multiple formats in the archive format usable by VideoPhill Player.
It isn’t anything special – just a bunch of files named in some fashion and cut at every five minutes, with special care not to lose single byte of a stream while cutting it.
So with that system, recording 100 radio stations on a single computer is as simple as having an good internet connection present. Of course, every stream will be recorded as reliably as the server and the internet permits, and there is nothing you can do about it. When using that method, you must allow yourself to lose some of the archive sometimes, for the unforeseen facts. Again – better radio stations (the stations that you will need 100% of the archive) will have better sources, better distribution servers, and thus your archive will be better covered.
But what to do when there are NO streams?
Lately (Summer 2011), there was a client that needed to record multiple radio stations as well. However, after initial investigation we concluded that radio stations that needed recording were either badly presented on the internet or not presented at all. So instead of capturing streams, we were aiming to capture radio signal from the FM directly. All we had was the antenna that was dipped in the airwaves that contained our radio stations (8 of them).
Strategy was as follows: I have a tool that can capture streams in the format that my application (the Player) needs, but we haven’t the streams. Let’s create them.
Shoutcast internet radio is on the market for decades. And it has both free and tremendous support, and their software for creating and distributing internet radio streams are as robust as they can be, since they are field tested in possibly millions of usage scenarios.
As I knew how to encode the stream, how to distribute it (locally) for the StreamSink, I just needed to capture FM signal somehow. Using 8 external tuners would be funny for the client, and I’ll probably lose them, so I did a little digging and found a beauty in form of a PCI card:
This little monster (AudioScience ASI8921) is able to capture 8 FM radio channels and give them to the rest of the system in the form of the DirectShow or waveIn API, just what we needed. Only thing left to do is to connect the antenna to the card and configure shoutcast encoder/server as needed, turn on the StreamSink, and we are recording!