Replies: 3 comments 3 replies
-
So, I've been running 2.3.0 as a test all day, and noticed that there doesn't seem to be any overlap at all between tracks now... it just plays each track through to completion before starting the next one, no matter what liq_cross_duration / liq_fade_out_delay says in the playlist annotations. The crossfade operator is:
An example playlist line for a track that should start playing the next one 10.1 seconds prior to the current track's completion:
Is it possible to implement the desired behavior in 2.3.0? Thank you. |
Beta Was this translation helpful? Give feedback.
-
Thank you @gAlleb - I tried using the new built-in autocue stuff today instead, but even if I pre-generate the tags with the modified cue_file you pointed me toward, LS segfaults quite often on me with no useful error message (LS 2.3.0 on Ubuntu 24.04.1 on a t3.medium EC2 instance.) So it doesn't look like that's an option at the moment :( I also couldn't get the desired behavior working by using a custom crossfade function with the It used to be that specifying a liq_cross_duration for the overlap period, together with zero fade-in and fade-out times, would accomplish that. In 2.2.5, it also became necessary to add I thought perhaps now I also have to set What's the right way to just get the transition illustrated above in 2.3.0, where the duration is specified by |
Beta Was this translation helpful? Give feedback.
-
@gAlleb Victory! Thank you! It seems the root of all evil was specifying a liq_cross_duration equal to the desired transition time in the annotations. Everything started working as expected when I no longer specified liq_cross_duration in the metadata at all, and just passed 30 seconds into the duration parameter for cross() - together with your other suggested annotations. I'll have to do something special for jingles that are shorter than that, but I think that's solvable. I'll just specify a shorter liq_cross_duration for those tracks, as the "broken" behavior of no transitions is actually what I want in that case. My confusion stems from my copy of the Liquidsoap Book that states pretty clearly that duration / liq_cross_duration does represent the total transition time, and not just the underlying buffer size. I'm not yet sure if my issue arose from liq_cross_duration not being large enough due to the size requirements of that buffer increasing, or if specifying liq_cross_duration at all triggers a bug in 2.3.0. I'll keep the autocue stuff in my back pocket for now; I was assuming the integrated autocue stuff supported tags so that is probably why I segfaulted. Still, it makes me nervous to know my server will crash if I miss tagging any of my tracks or jingles - and a larger instance type with more memory would be cost prohibitive. |
Beta Was this translation helpful? Give feedback.
-
Hi, I've been using @Warblefly 's scripts for pre-processing playlists to achieve smooth transitions. In short, it works by computing the best point to start the next track, overlapping it with the previous one without any fading per se, using liq_cue_in, liq_cross_duration, and an equal value for liq_fade_out_delay in the playlist annotations.
In Liquidsoap 2.2.5, we could specify that the tracks should blend together between the duration until the transition and the end of the track, using the default operator of crossfade:
myplaylist = crossfade(duration=30.0, smart=false, fade_out=0., fade_in=0., default=(fun(a,b)->add(normalize=false,([b, a]))), myplaylist)
However, in 2.3.0, the "default" parameter has been removed from crossfade. Can I rely on the built-in behavior to behave in the same way, or do I need to emulate it via other means?
I know 2.3.0 has its own built-in ability to automate transitions in a similar style, but I can't afford its CPU cost on the EC2 instance I'm running on.
Thank you,
Frank from Radio Calico
Beta Was this translation helpful? Give feedback.
All reactions