Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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