KUBE Radio
Keele University Broadcasting Enterprise (KUBE) is an award winning student run radio station based at Keele University in Staffordshire, UK.
Production script
#!/usr/bin/liquidsoap
# .
# . .... ~DMMMM$ .
# 8MMMMMMMMMMMMMMMMMMMD. ..
# .MMMMMMMMMMMMMMMMMMMMMMMMMM~ ..
# ..$MMMMMMMMMMMMMMMMMMMMMMMMM88M.
# . MMMMM$MMMMMMMMMMMM?MMMMMMMMM
# .MMMMMMM$MMM$MMMMMMMMMMMMMMM8.
# .MMMMMMMMMMMMMMMMMMMMMMMMMMM?... . .. ... ... . . .
# MMMMMMMMMMMMMMMMM. MMMM:~MM.D$ .MM..888M$ ..88D8888.
# MMMMMMMM8MMMMMMMM MM$.MMMM.M$ .MM..M.. ~M. MM . ..
# .MMMMMMMM$MMMMMMMM. M .MMMMM M?. MM..M. . M. MM.
# ~MMMMMMM$MMMMMMMM.. MMMMMMM.M?. .MM .MMMMM: MMMMMMM..
# ..MMMMMMM$MMMMMMMM. M.?MMMMM.M$. MM..M .. M8.MM . .
# MMMMMMM$MMMMMMMM .MM MMM$ MM.. M8 M. .$M.MM. .
# ...MMMMMM$MMMMMMMM MMM. MM . MM ~MM. .M$$8MM .MM88888.
# MMMMM8MMMMMMMMMMMMMMMMM.. ~~ ..... . .. . .
# .~MMMMMMMMMMMMMMMMMM$ . . . . . . ..
# .MMMMMMMMMMMMMM..
# MMMMMMMMM ....
# ..MMM?....
# . ...
#
# KUBERadio.com
set("log.file.path","/home/liquidsoap/logs/main.log")
set("frame.size",4704)
################
# Sources
studioInput = input.alsa(id="studioInput",bufferize=false)
sustainList = playlist("/home/kube/kube-music/sustain/play.m3u")
###############
################
# KUBE Settings
kubeHost="localhost"
kubePort=8000
kubeUser="source"
kubePassword="OMITTED FOR SECURITY"
kubeGenre="Student radio"
kubeUrl="kuberadio.com"
kubeDesc="Keele University student radio"
#################
studioInput=rewrite_metadata([("artist", "KUBE Radio"),
("title","LIVE Stream,TEXT the studio from kuberadio.com OR TXT KUBE followed by your message to 60300")],studioInput)
#################
# Processing
sustain = nrj(sustainList)
radio = fallback.skip(strip_blank(threshold=-35.,length=15.,studioInput),sustain)
radio=mksafe(radio)
################
#################
# ICECAST MOUNTS
output.icecast(%mp3,radio,mount="kube",id="kubeMP3",name="KUBE Radio HIGH bandwidth",quality=8,bitrate=128,
host=kubeHost,port=kubePort,user=kubeUser,password=kubePassword,genre=kubeGenre,url=kubeUrl,description=kubeDesc)
output.icecast(%mp3,radio,mount="kube-low",id="kubeMP3Low",name="KUBE Radio LOW bandwidth",quality=5,bitrate=64,
host=kubeHost,port=kubePort,user=kubeUser,password=kubePassword,genre=kubeGenre,url=kubeUrl,description=kubeDesc)
output.icecast(%vorbis, radio,mount="kube-low.ogg",id="kubeOggLow",name="KUBE Radio LOW bandwidth",quality=2.,
host=kubeHost,port=kubePort,user=kubeUser,password=kubePassword,genre=kubeGenre,url=kubeUrl,description=kubeDesc)
output.icecast(%vorbis, radio,mount="kube.ogg",id="kubeOggHigh",name="KUBE Radio HIGH bandwidth",quality=8.,
host=kubeHost,port=kubePort,user=kubeUser,password=kubePassword,genre=kubeGenre,url=kubeUrl,description=kubeDesc)
output.icecast(%vorbis, radio,mount="kube-archive.ogg",id="kubeOggLow",name="KUBE Radio Archive stream",quality=10.,public=false,
host=kubeHost,port=kubePort,user=kubeUser,password=kubePassword,genre=kubeGenre,url=kubeUrl,description=kubeDesc)
#################
output.alsa(id="officeOutput",bufferize=false,device="hw:0")
Development script
#!/usr/bin/liquidsoap
# KUBERadio.com script
set("frame.size",4704)
set("log.file.path","/home/liquidsoap/new/log/kube.log")
###########################################
# SOURCES
jingle = single("/home/liquidsoap/new/media/jingles/main.mp3")
news = single("/home/liquidsoap/new/media/news/news-01.mp3")
jingleTop=single("/home/liquidsoap/new/media/jingles/top/week1.mp3")
advertFirst=single("/home/liquidsoap/new/media/adverts/firstBuses.mp3")
sustainList = playlist("/home/kube/kube-music/sustain/play.m3u")
input=input.alsa(bufferize=false)
input=rewrite_metadata([("artist","KUBE Radio"),
("title","LIVE Stream"),
("comment","http://kuberadio.com")],input)
news=rewrite_metadata([
("artist","KUBE Radio"),
("title","NEWS")
],news)
topOfTheHour=sequence(merge=true,[
news,
advertFirst,
jingleTop
])
sustain=sequence(merge=true,[
jingle,
sustainList
])
####
###########################################
# PROCESSING
topOfTheHour=smart_crossfade(fade_out=0.5,fade_in=0.5,topOfTheHour)
sustain=nrj(sustain)
#####
##########################################
# TRIGGERS
def isTopOfHour ()
if 59m30s then
system("date >> /home/liquidsoap/new/triggers/topOfHour")
true
else
false
end
end
##########################################
inputTrigger=input
sustainTrigger=sustain
main=fallback.skip(
strip_blank(threshold=-35.,length=15.,inputTrigger),
sustainTrigger
)
def getTop()
add([
sequence(merge=true,
[
blank(duration=30.),
topOfTheHour
]
)])
end
altSw=switch(track_sensitive=true,[(isTopOfHour,getTop())])
radio = fallback.skip(
strip_blank(threshold=-35.,length=0.2,altSw)
,main)
radio = mksafe(radio)
##Outputs omitted for security