My new Radio VCR

Posted by Tom Moertel Fri, 20 Feb 2004 17:00:00 GMT

I like to listen to NPR, but I often miss interesting shows. So I decided to make a VCR for radio. That way I can record shows and listen to them at my leisure.

I started by taking an old radio and connecting its headphone output to one of my server’s audio-in jacks w/ a 6-foot 1/8” Stereo plug to 1/8” Stereo plug Cord from Radio Shack. Then I installed the Advanced Linux Sound Architecture on the server because it has better support for the server’s built-in audio chip (CS4236B).

Playing around for a while, I managed to get decent recordings to WAV format. Since WAVs are rather large (about 200 MB/hr at the settings I was using) I tried re-encoding the recordings as Ogg Vorbis in various bitrates, but ultimately settled on Speex, which is much better at compressing speech. Final file sizes are about 10 MB/hr, which is fine considering my hard-drive space.

Next, I wrote a small shell script to record a show, compress it, and store it in a library:

#!/bin/bash

# Simple script to record a radio show and save as a Speex-encoded file
# Tom Moertel <tom@moertel.com>
# 20 Feb 2004
#
# Usage: record-show <show-name> <show-duration-in-seconds>

#
# Recordings are saved in the following directory structure:
#
# ~/recordings/<show-name>/2004/02/<show-name>--2004-02-19--Thu--2359.spx
#
# Directories are created as needed.

# Check arguments.

if [ -z "$1" ]; then
    echo 'Usage: record-show show-name show-duration-in-seconds'
    exit 1;
fi

# Set up definitions for use later

show_base="$HOME/recordings" 
show="${1:-recording}" 
duration="${2:-3600}" 
year=$(date +%Y)
month=$(date +%m)
now="$(date +%F--%a--%H%M)" 
showdir="$show_base/$show/$year/$month" 
showfile="$showdir/$show--$now.spx" 

# Make directory to contain the show recording (if necessary)

mkdir -p "$showdir" >&/dev/null

# Record the show and exit with the exit status of speexenc

arecord -q -d $duration -c2 -r16000 -f S16_LE |
  speexenc --vbr --vad --dtx - "$showfile" >&/dev/null
exit $?

Finally, I programmed my “Radio VCR” to record any potentially interesting shows that are broadcast by my local NPR affiliate. This was simple using my script above and the following crontab:

00 06 * * 1-5           record-show morning-edition         3600
00 12 * * 1-5           record-show day-to-day              3600
00 15 * * 1-5           record-show fresh-air               3600
00 17 * * 1-5,6-7       record-show all-things-considered   3600
30 18 * * 1-5           record-show marketplace             1800

00 08 * *     6-7       record-show weekend-edition         3600
00 10 * *     6         record-show car-talk                3600
00 10 * *       7       record-show studio-360              3600
00 11 * *     6         record-show whad-ya-know            7190
00 13 * *     6         record-show wait-wait-dont-tell-me  3600
00 15 * *       7       record-show this-american-life      3600
00 16 * *       7       record-show splendid-table          3600

All in all, this has turned out to be a great hack – simple, fun, and useful.

Posted in
no comments
no trackbacks
Reddit Delicious

Comments

Trackbacks

Use the following link to trackback from your own site:
http://blog.moertel.com/articles/trackback/37

(leave url/email »)

   Comment Markup Help Preview comment