This is a known issue with the way Liquidsoap queues tracks for playback; it's not a bug, exactly, but it's obviously not the desired behavior. Basically what happens is when Liquidsoap starts playing a new track, it only waits a short period of time before asking Centova Cast what track to play next. It does this in the interest of being able to preload and prepare the track in advance.
Normally that works fine, but in situations where a track is unusually long (say, an hour or more), what happens is something like this:
- User configures Track A, a one-hour mix, to play at 10:00
- User configures Track B to play at 11:00 after track A ends
- at 10:00 Liquidsoap starts playing Track A
- at 10:10 Liquidsoap asks Centova Cast what track to play next; Centova Cast realizes it's not 11:00 yet so it doesn't tell Liquidsoap to play Track B; instead, it assumes something has gone wrong with Track A (or the DJ has clicked 'skip song') so it gives Liquidsoap the name of a random general rotation track (Track X)
- at 11:00 Liquidsoap finishes playing track A, and already has Track X queued up, so it plays track X
- while track X is playing, Liquidsoap asks Centova Cast what track to play next, and Centova Cast realizes it's after 11:00 so it instructs Liquidsoap to play Track B next
- after Track X finishes, Liquidsoap plays Track B
Enabling a feature called "Conservative Mode" in Liquidsoap is *supposed* to fix this and force Liquidsoap to only ask for tracks when it's due to play them. Unfortunately in my testing, it doesn't always work, and I'm not certain why. But it *usually* works, and you're welcome to enable it going into the settings for a stream, clicking "Raw configuration", selecting "Liquidsoap", and making sure the following entry exists:
So the last few lines of the configuration should look like this:
Then save your changes and stop and start the stream, and the problem should in theory be fixed.