From: Jean-Francois M. <je...@ra...> - 2010-01-28 16:05:26
|
Hello, I'm using dynamic request to play radios on my server but I allow DJ to connect via input.harbor. Everything is running fine but (there is always a "but") when he finishes his live mix liquidsoap play the remaining buffer before doing a new dynamic request. Is it possible to delete the buffer and force liquidsoap to make a dynamic request at the end of the live broadcast ? My live is set up like this live = fallback (track_sensitive=false,transitions=[customfade,customfade], [live, input2]) input2 is my dynamic request live is my input.harbor Moreover if the fade is good when the dj arrives it's not when he leaves. My customfade is set up as def customfade(previous,next) add([fade.in(duration=2.,next),fade.final(duration=2.,previous)]) end Any idea there ? Thanks in advance, Jef |
From: David B. <dav...@gm...> - 2010-01-28 16:46:57
|
Hi Jean-François, On Thu, Jan 28, 2010 at 10:04 AM, Jean-Francois Mauguit <je...@ra...> wrote: > Is it possible to delete the buffer and force liquidsoap to make a dynamic request > at the end of the live broadcast ? What you want is to abort the song that was ongoing when the live started. You need to skip when you're done with it. This can be done by using the source.skip() function in a transition. This is how fallback.skip() is implemented in utils.liq. But fallback.skip() isn't enough for you because it wouldn't let you keep your current transition; instead you need to tweak your existing transition. You should be able to find examples by searching "skip", "transition", "fallback"/"switch" in this list; I remember Romain talked about it not long ago. > Moreover if the fade is good when the dj arrives it's not when he leaves. I wonder if it can be related to a known bug, signaled on this mailing list, where transitions don't work well with input.http(). I haven't come back to it yet. Cheers, -- David |
From: Jean-Francois M. <je...@ra...> - 2010-01-28 19:59:51
|
hello, I did def livefade(previous,next) add([fade.in(duration=2.,next),fade.final(duration=2.,previous)]) end def backlivefade(previous,next) source.skip(next) sequence([previous,next]) end live = fallback (track_sensitive=false,transitions=[livefade,backlivefade], [live, input2]) It kills the source but it still play 2 seconds of the input2 old file before playing the new one (as there is a buffer to empty somewhere). So it's close to the trick but not yes, If someone has an idea, TIA, Jef On 28 Jan 2010, at 17:46, David Baelde wrote: > Hi Jean-François, > > On Thu, Jan 28, 2010 at 10:04 AM, Jean-Francois Mauguit > <je...@ra...> wrote: >> Is it possible to delete the buffer and force liquidsoap to make a dynamic request >> at the end of the live broadcast ? > > What you want is to abort the song that was ongoing when the live > started. You need to skip when you're done with it. This can be done > by using the source.skip() function in a transition. This is how > fallback.skip() is implemented in utils.liq. But fallback.skip() isn't > enough for you because it wouldn't let you keep your current > transition; instead you need to tweak your existing transition. You > should be able to find examples by searching "skip", "transition", > "fallback"/"switch" in this list; I remember Romain talked about it > not long ago. > >> Moreover if the fade is good when the dj arrives it's not when he leaves. > > I wonder if it can be related to a known bug, signaled on this mailing > list, where transitions don't work well with input.http(). I haven't > come back to it yet. > > Cheers, > -- > David |
From: Romain B. <to...@ra...> - 2010-01-28 22:19:37
|
Le jeudi 28 janvier 2010 13:59:17, Jean-Francois Mauguit a écrit : > hello, Hello Jeff ! > I did > > def livefade(previous,next) > add([fade.in(duration=2.,next),fade.final(duration=2.,previous)]) > end > > def backlivefade(previous,next) > source.skip(next) > sequence([previous,next]) > end > > live = fallback (track_sensitive=false,transitions=[livefade,backlivefade], > [live, input2]) > > It kills the source but it still play 2 seconds of the input2 old file > before playing the new one (as there is a buffer to empty somewhere). > > So it's close to the trick but not yes, Yes, indeed, you're very close to a possible solution ! When I try it here with 0.9.2, it works very well, though. I am using a playlist for the input, perhaps it depends on the source.. Anyway, you may want to use a fade.in on the next source (or perhaps better a fade.initial, since this operator does not care about track limits). If you use an exponential shape, the begining of the source will be almost zero and it will quickly increase. Something on these lines: def livefade(previous,next) add([fade.in(duration=2.,next), fade.final(duration=2.,previous)]) end def backlivefade(previous,next) source.skip(next) add([fade.in(duration=2.,type="exp",next), previous]) end Also, I can confirm that the fade.out transition does not work on harbor. I suspect this comes from the fact that the fallback does no see enough in advance to be able to trigger the transition on time.. Raising the buffer of the harbor input does not help apparently... Romain |