# Liquidsoap

## Audio Stream Generation

### complete_case.liq

    #!/usr/bin/liquidsoap

    # Lines starting with # are comments, they are ignored.

    # Put the log file in some directory where
    # you have permission to write.
    set("log.file.path","/tmp/<script>.log")
    # Print log messages to the console,
    # can also be done by passing the -v option to liquidsoap.
    set("log.stdout", true)
    # Use the telnet server for requests
    set("server.telnet", true)

    # A bunch of files and playlists,
    # supposedly all located in the same base dir.

    default = single("~/radio/default.ogg")

    day     = playlist("~/radio/day.pls")
    night   = playlist("~/radio/night.pls")
    jingles = playlist("~/radio/jingles.pls")

    clock   = single("~/radio/clock.ogg")
    start   = single("~/radio/live_start.ogg")
    stop    = single("~/radio/live_stop.ogg")

    # Play user requests if there are any,
    # otherwise one of our playlists,
    # and the default file if anything goes wrong.
    radio = fallback([ request.queue(id="request"),
    	                switch([({ 6h-22h }, day),
    	                        ({ 22h-6h }, night)]),
    	                default])
    # Add the normal jingles
    radio = random(weights=[1,5],[ jingles, radio ])
    # And the clock jingle
    radio = add([radio, switch([({0m0s},clock)])])

    # Add the ability to relay live shows
    full =
      fallback(track_sensitive=false,
               [input.http("http://localhost:8000/live.ogg"),
                radio])

    # Output the full stream in OGG and MP3
    output.icecast.mp3(
      host="localhost",port=8000,password="hackme",
      mount="radio",full)
    output.icecast.vorbis(
      host="localhost",port=8000,password="hackme",
      mount="radio.ogg",full)

    # Output the stream without live in OGG
    output.icecast.vorbis(
      host="localhost",port=8000,password="hackme",
      mount="radio_nolive.ogg",radio)

Download