Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm running an Ubuntu server environment with icecast-2.3.2 and ices-0.4.0 to enable internet-radio streaming.

I have a directory with music files, mostly MP3, let's call it /PATH/TO/MUSIC. I also have directories with jingles and podcasts. /PATH/TO/JINGLES and /PATH/TO/PODCASTS.

So far my server is up and running.

What works:

  • Creating daily random playlists from the music-directory using a script and a cron-job.
  • Running an IceCast2-Server and streaming the playlist file using IceS.

My question now is:

  • How to play podcasts and jingles at specific times? For example every full hour a certain jingle, or every Thursday at 8 p.m. a certain podcast?

I've tried to search the internet on this topic but it seems there is no "one final solution" for this radio-automation issue and it also seems a lot of solutions are rather hacky, aren't they?

Keep in mind this is a server environment, solutions with GUI wont help.

I appreciate any hints and experiences on this topic!

share|improve this question
dear users, thanks for adding this question as a favourite, this shows me that's an interesting topic and people are interested in learning more. so ... why not upvoting it? – 5chdn Jan 24 '13 at 6:12
up vote 1 down vote accepted

The answer is: liquidsoap.

liquidsoap, a swiss-army knife for multimedia streaming, notably used for netradios and webtvs. It has tons of features, it's free and it's open-source!

It took me some days to understand how streams are generated. liquidsoap consists of little scripts which describe the stream parameters. a simple script which loads and plays a mp3-playlist, let's call it basic.liq, is show below:


# load a playlist file
stream = playlist("/path/to/playlist.pls")

# output the playlist to icecast
source = output.icecast(%mp3, host="localhost", port="8000",
         mount="listen.m3u", password="hackme")

test the script with:

$ liquidsoap --check ./basic.liq

and start the script with:

$ liquidsoap ./basic.liq &

but liquidsoap is much more powerful. for example, to play a jingle every full hour, simply add:

# add a jingle every full hour
jingle = single("/path/to/jingle.mp3")

but a lot more features are described at the homepage:

  • static or dynamic playlists
  • time-based selection of the audio source
  • quota- or time-based insertions or mixes of jingles
  • live DJ interventions
  • interactive user requests
  • fully-customizable transitions, e.g. crossfading
  • speech-synthesis of track metadata
  • simple access to remote files
  • and much more

It's worth to take a look at the quick start guide, a more complex example and the documentation.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.