Advertisement
Guest User

volume levels jumping when skipping a track

a guest
Feb 12th, 2013
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.63 KB | None | 0 0
  1. #!/usr/bin/liquidsoap
  2.  
  3. set("log.stdout", true);
  4. set("server.telnet", true);
  5.  
  6. # is skipped flag
  7. track.isSkipped = ref false;
  8.  
  9. # transition func
  10. def transition(from, to)=
  11.     if (!track.isSkipped) then
  12.         track.isSkipped := false;
  13.         add([fade.initial(to), fade.final(from)]);
  14.     else
  15.         add(normalize = false, [to, from]);
  16.     end
  17. end
  18.  
  19. # extended crossfade
  20. def crossfade.switch(~id = "", ~conservative = true, ~start_next = 10., ~fade_in = 5., ~fade_out = 5., s)
  21.   # i've tried to remove following two lines - but there were no effect (volume levels were still jumping)
  22.   s = fade.in(duration = fade_in, s);
  23.   s = fade.out(duration = fade_out, s);
  24.   cross(id = id, conservative = conservative, duration = start_next, transition, s);
  25. end
  26.  
  27. # security track
  28. security = single("/home/security.mp3");
  29.  
  30. # external script just returns random track from folder
  31. # add your script name here
  32. playlist = request.dynamic(conservative = true, fun () -> request.create(list.hd(get_process_lines("external script"))))
  33.  
  34. # apply crossfade (we need it really only for tracks in playlist)
  35. playlist = crossfade.switch(playlist);
  36.  
  37. # create main source
  38. radio    = fallback(track_sensitive = false, [playlist, security]);
  39.  
  40. # output source
  41. output.icecast(mount = "testme", host = "localhost", port = 80, password = "hackme", %mp3, radio)
  42.  
  43. # Updates program timeout, server command
  44. def server.source.skip(unused) =
  45.   track.isSkipped := true;
  46.   source.skip(radio);
  47.   "done"
  48. end
  49.  
  50. # Register server command
  51. server.register(namespace = "source",
  52.   description = "Skips current track",
  53.   usage = "skip", "skip", server.source.skip);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement