User:Andre Castro/prototyping/1.2/liquidsoap-noites
Liquid Soap
http://savonet.sourceforge.net/doc-1.0.0/quick_start.html
Liquidsoap is a programming language for describing multimedia streaming systems
Sources
A stream is built with Liquidsoap by using or creating sources. A source is an annotated audio stream. In a Liquidsoap script, you build source objects
Possible Liquid Soap Setups
Request information on a file
liquidsoap -r http://www.archive.org/download/moonstone_0802_librivox/moonstone_01_collins.ogg
Request resolved.
title="01 - First Period: Chapter I"
temporary="true"
decoder="OGG"
artist="Wilkie Collins"
kind="{audio=0+;video=0+;midi=0+}"
rid="0"
initial_uri="http://www.archive.org/download/moonstone_0802_librivox/moonstone_01_collins.ogg"
status="ready"
filename="/tmp/liq452673.ogg"
album="The Moonstone"
Computing duration: 384.86 sec.
Playlists
LS can play playlists in both .pls and .M3U formats
it can play both local and remote files
.pls playlist
liquidsoap 'out(playlist("playlist.pls"))
[playlist]
numberofentries=2
Title1=File1 - archiveORg
File1=/home/andre/Documents/PZI/prototyping/blind-archive/sf-archive_frech/03actuel.ogg
Title2=File2 - archiveORG2
File2=/home/andre/Documents/PZI/prototyping/blind-archive/sf-archive_frech/04comporte.ogg
Playing mono files
liquidsoap is set to stereo, so does not play mono files!
So what needs to be done is converting the mono into stereo Weĺl do through this .liq script:
#!/usr/bin/liquidsoap
mono_playlist = playlist("/home/andre/Documents/PZI/prototyping/blind-archive/liquidsoap/playlist-blind-remote-mono.pls")
mono_playlist_s = audio_to_stereo(mono_playlist)
out(mono_playlist_s)
SWITCHING PLAYLISTS
- liquidsoap script that schedules when playlists are to be played (can also allow for mixer jingles, time information, at precise or random intervals)
- a schedule can be drawn (look at radios timetables!)
( liquid-test-severalPL.liq )
#!/usr/bin/liquidsoap
#based on example: http://savonet.sourceforge.net/doc-1.0.0/complete_case.html
set("log.stdout", true) # Print log messages to the console
p_code = playlist("/home/andre/Documents/PZI/prototyping/blind-archive/liquidsoap/playlist_code.pls")
p_cooking = playlist("/home/andre/Documents/PZI/prototyping/blind-archive/liquidsoap/playlist_cooking.pls")
p_french = playlist("/home/andre/Documents/PZI/prototyping/blind-archive/liquidsoap/playlist_french.pls")
p_news = playlist("/home/andre/Documents/PZI/prototyping/blind-archive/liquidsoap/playlist_news.pls")
radio = fallback([ request.queue(id="request"),
switch([
({ 0m-5m }, p_code), ({ 5m-10m }, p_cooking), ({ 10m-15m }, p_french), ({ 20m-25m }, p_news) ])
])
# switch to given playlis within the minuts estipulated.
# to switch a unique time: 8h0m0s-8h40m30s
out(audio_to_stereo((radio:source(*+1,0,0))))
Future
Make LS display metadata of the file on the stream!
Some hints maybe here: http://savonet.sourceforge.net/doc-0.3.8/radio-nova.html