#1 Le 17/01/2018, à 12:25
- xfailed
smart_crossfade avec liquidsoap
Bonjour,
Je lance une bouteille à la mer concernant une config pour liquidsoap en vu de faire une webradio
Jusque là tout fonctionne avec le script ci dessous.
Je voudrais juste insérer un crossfade pour faire des fondu enchainé, mais je fait tout un tas de test avec des scripts existant, un exemple voir deuxième encadré ci dessous et il ne se passe rien . Je dois louper quelque chose et je n'arrive pas à trouver sur les différentes doc la solution. Il n'y a pas de message d'erreur les mp3 sont lu normalement l'un un à la suite des autres sans transition.
Si quelqu'un peut m'éclairer sur cette Fonction, merci d'avance.
#!/usr/bin/liquidsoap
# FICHIER DE LOG
set("log.file.path","/home/pi/basic-radio.log")
# Musique (repertoire ou se trouve les musiques)
myplaylist = mksafe(playlist(mode="randomize","/media/dance/"))
# Information de diffusion
output.icecast(%mp3(bitrate=128),
host = "aspire1300.home", port = 8000,
name = "Xfailed", description = "Test", genre = "dance", url = "[url]http://xfailed.ddns.net:8000[/url]",
user = "access2",
password = "*******",
mount = "access2",myplaylist)
Si dessous le script pour fair un crossfade fourni par les dévelopeur, mais je n'arrive pas à l’insérer dans mon script.
# Crossfade between tracks,
# taking the respective volume levels
# into account in the choice of the
# transition.
# @category Source / Track Processing
# @param ~start_next Crossing duration, if any.
# @param ~fade_in Fade-in duration, if any.
# @param ~fade_out Fade-out duration, if any.
# @param ~width Width of the volume analysis window.
# @param ~conservative Always prepare for
# a premature end-of-track.
# @param s The input source.
def smart_crossfade (~start_next=5.,~fade_in=3.,
~fade_out=3., ~width=2.,
~conservative=false,s)
high = -20.
medium = -32.
margin = 4.
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
# If A and B and not too loud and close,
# fully cross-fade them.
a <= medium and
b <= medium and
abs(a - b) <= margin
then
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("Transition: crossed, fade-out.")
add(fade.out(sa),sb)
elsif
# Do not fade if it's already very low.
b >= a + margin and a <= medium and b <= high
then
log("Transition: crossed, no fade-out.")
add(sa,sb)
elsif
# Opposite as the previous one.
a >= b + margin and b >= medium and a <= high
then
log("Transition: crossed, fade-in.")
add(sa,fade.in(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: just sequencing.")
sequence([sa, sb])
end
end
smart_cross(width=width, duration=start_next,
conservative=conservative,
transition,s)
end
Modération : merci d'utiliser les balises code (explications ici).
Dernière modification par cqfd93 (Le 17/01/2018, à 14:01)
Hors ligne