Hello,
What does this error mean?
This is an error that I continue receiving on my log from months, and I
think from friday things become unmanageable.
In other words, I run the script, after some minutes, or hours, it
depends it is random, but all become simply silence. The script is
running but no activity is logged, there is the mountpoint /stream with
no song and as I say before, what you can listen is simply silence.
The last entry in the log is the error in the subject.
So now I take a simplest script, with no live, no recordings, only music
and playlist. The script runs but anyway I continue having following errors:
2015/03/30 09:45:38 [buffer_19085:3] Warning: #get called when not
#is_ready! This is normal if an operator using this source has been
unused while the source has gone unavailable. If unsure about this
warning, you are very welcome to report it and ask for clarifications.
I can't understand how it is possible since all the music is stored on
the hard disk and I'm using only playlist.
I past here my script, the simplest script I have, because I think I
should start solving problems from few elements.
Please can you review it?
Thank you!
***
#!/usr/bin/liquidsoap
set
("log.file.path","/home/radio/music.log")
#customized crossfade function
def smart_crossfade (~start_next=5.,~fade_in=1.,~fade_out=3.,
~default=(fun (a,b) -> sequence([a, b])),
~high=-15., ~medium=-32., ~margin=4.,
~width=2.,~conservative=false,s)
fade.out = fade.out(type="sin",duration=fade_out)
fade.in = fade.in(type="sin",duration=fade_in)
add = fun (a,b) -> add(normalize=false,[b, a])
log = log(label="smart_crossfade")
def transition(a,b,ma,mb,sa,sb)
list.iter(fun(x)-> log(level=4,"Before: #{x}"),ma)
list.iter(fun(x)-> log(level=4,"After : #{x}"),mb)
if ma["source"] == "jingle" or mb["source"] == "jingle" then
# log("Old or new file is a jingle: sequenced transition.")
sequence([sa, sb])
elsif
# If A and B are not too loud and close, fully cross-fade them.
a <= medium and b <= medium and abs(a - b) <= margin
then
# log("Old <= medium, new <= medium and |old-new| <= margin.")
# log("Old and new source are not too loud and close.")
# log("Transition: crossed, fade-in, fade-out.")
add(fade.out(sa),fade.in(sb))
elsif
# If B is significantly louder than A, only fade-out A.
# We don't want to fade almost silent things, ask for >medium.
b >= a + margin and a >= medium and b <= high
then
# log("new >= old + margin, old >= medium and new <= high.")
# log("New source is significantly louder than old one.")
# log("Transition: crossed, fade-out.")
add(fade.out(sa),sb)
elsif
# Opposite as the previous one.
a >= b + margin and b >= medium and a <= high
then
# log("old >= new + margin, new >= medium and old <= high")
# log("Old source is significantly louder than new one.")
# log("Transition: crossed, fade-in.")
add(sa,fade.in(sb))
elsif
# Do not fade if it's already very low.
b >= a + margin and a <= medium and b <= high
then
# log("new >= old + margin, old <= medium and new <= high.")
# log("Do not fade if it's already very low.")
# log("Transition: crossed, no fade.")
add(sa,sb)
# What to do with a loud end and a quiet beginning ?
# A good idea is to use a jingle to separate the two tracks,
# but that's another story.
else
# Otherwise, A and B are just too loud to overlap nicely,
# or the difference between them is too large and overlapping would
# completely mask one of them.
# log("No transition: using default.")
default(sa, sb)
end
end
smart_cross(width=width, duration=start_next, conservative=conservative,
transition,s)
end
#time signals definitions
senzajingleotto =
single('/home/radio/timer/senzajingle_segnale_orario_ore_8.mp3')
senzajinglenove =
single('/home/radio/timer/senzajingle_segnale_orario_ore_9.mp3')
senzajingledieci =
single('/home/radio/timer/senzajingle_segnale_orario_ore_10.mp3')
senzajingleundici =
single('/home/radio/timer/senzajingle_segnale_orario_ore_11.mp3')
senzajingledodici =
single('/home/radio/timer/senzajingle_segnale_orario_ore_12.mp3')
senzajingletredici =
single('/home/radio/timer/senzajingle_segnale_orario_ore_13.mp3')
senzajinglequattordici =
single('/home/radio/timer/senzajingle_segnale_orario_ore_14.mp3')
senzajinglequindici =
single('/home/radio/timer/senzajingle_segnale_orario_ore_15.mp3')
senzajinglesedici =
single('/home/radio/timer/senzajingle_segnale_orario_ore_16.mp3')
senzajinglediciassette =
single('/home/radio/timer/senzajingle_segnale_orario_ore_17.mp3')
senzajinglediciotto =
single('/home/radio/timer/senzajingle_segnale_orario_ore_18.mp3')
senzajinglediciannove =
single('/home/radio/timer/senzajingle_segnale_orario_ore_19.mp3')
senzajingleventi =
single('/home/radio/timer/senzajingle_segnale_orario_ore_20.mp3')
senzajingleventuno =
single('/home/radio/timer/senzajingle_segnale_orario_ore_21.mp3')
#playlist paths and secure source definitions
PROGRAMMA_ITALIA_JINGLE =
single('/home/radio/jingle_programmi/modello_italia.mp3')
security = single("/var/www/nvapple.it/suono.mp3")
ITALIAN_MUSIC_PLS = "/home/radio/music/italiane"
HITS_PLS ="/home/radio/music/gold"
ANNI90_PLS = "/home/radio/music/dance90s"
STRANIERA_PLS ="/home/radio/music/straniera"
MODERN_PLS ="/home/radio/modern.m3u"
ANNI60_PLS = "/home/radio/music/60s"
ANNI70_PLS = "/home/radio/music/70s"
ANNI80_PLS = "/home/radio/music/80s"
LIVE_EMOTION_PLS = "/home/radio/music/live"
TALENTONE_MUSIC_PLS = "/home/radio/music/talentone"
JINGLES_PLS = '/home/radio/jingle'
TALENTONE_JINGLE = single('/home/radio/jingle_programmi/talentone.mp3')
#some playlists
NO_STOP =
random([playlist(reload=7200,ITALIAN_MUSIC_PLS),playlist(reload =
7200,HITS_PLS),playlist(reload = 7200, STRANIERA_PLS),playlist(reload =
7200,ANNI60_PLS),playlist(reload = 7200,
ANNI70_PLS),playlist(reload=7200,ANNI80_PLS),playlist(reload=7200,ANNI90_PLS)])
ANNI80_90 = random([playlist(reload = 7200,ANNI90_PLS),playlist(reload =
7200,STRANIERA_PLS)])
#main source definition
default=fallback(track_sensitive = false, [
switch([
({8h05s-10h}, fallback([delay(1200.,
PROGRAMMA_ITALIA_JINGLE),playlist(reload = 7200,ITALIAN_MUSIC_PLS)])),
({10h05s-11h}, playlist(reload = 7200,MODERN_PLS)),
({11h05s-12h}, playlist(reload = 7200,HITS_PLS)),
({12h05s-14h}, NO_STOP),
({14h05s-16h}, playlist(reload = 7200,MODERN_PLS)),
({16h05s-18h}, ANNI80_90),
({18h05s-19h}, playlist(reload = 7200,MODERN_PLS)),
({19h05s-20h},playlist(reload = 7200,LIVE_EMOTION_PLS)),
({20h05s-21h}, sequence([TALENTONE_JINGLE,playlist(reload =
7200,TALENTONE_MUSIC_PLS)])),
({21h05s-22h},playlist( reload = 7200,HITS_PLS)),
({22h-8h}, NO_STOP),
])
])
#put all sources together to complete the radio streaming
radio = fallback(track_sensitive =
false,[request.queue(id="request"),smart_crossfade(eat_blank(max_blank=2.,rotate(weights=[1,2],[playlist(reload
= 7200,mode = 'randomize', JINGLES_PLS),default]))), security])
radio = smooth_add(normal=radio, special =switch([({8h0m0s},
senzajingleotto),
({9h0m0s}, senzajinglenove),
({10h0m0s}, senzajingledieci),
({11h0m0s}, senzajingleundici),
({12h0m0s}, senzajingledodici),
({13h0m0s}, senzajingletredici),
({14h0m0s}, senzajinglequattordici),
({15h0m0s}, senzajinglequindici),
({16h0m0s}, senzajinglesedici),
({17h0m0s}, senzajinglediciassette),
({18h0m0s}, senzajinglediciotto),
({19h0m0s}, senzajinglediciannove),
({20h0m0s}, senzajingleventi),
({21h0m0s}, senzajingleventuno)]))
normalization added here
radio = rewrite_metadata([("title",'"$(title) - test metadata"')], radio)
radio = normalize(radio)
#enable icecast streaming
output.icecast(%mp3(
samplerate=44100,
stereo=true,
bitrate=128),
mount="/stream",
name="NvRadio only music",
host="127.0.0.1",
port=8000,
password="xxx",
genre="Mixed,Various,Other",
url="http://www.nvapple.it/",
description = "Solo musica !!",
public=false,radio)
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users