1. The PAL script you posted, doesn't that create an infinite loop of silence? At first there is a track playing, then you add silence track next up. Then you wait for the silence track to play and end the script. Then the script loops and will add a silence track next up right after the silence track and wait for the silence track to finish before starting over. In the end you have one actual track and an infinite loop of silence.
Your PAL.WaitForPlayCount(1) should actually be PAL.WaitForPlayCount(2); because you only want the script to start again after both the current track and the silence track have been played.
var NextUp : TSongInfo;
PAL.Loop := True;
NextUp := TSongInfo.Create;
NextUp := ActivePlayer.GetSongInfo;
PAL.WaitForPlayCount(1); // wait for the current track to finish and the silence to play before changing the Encoder title
PAL.WaitForPlayCount(1); // Wait for the silence to finish before starting over
I just found out this is actually even easier than what I described above.
The TitleStreamBanners.pal has pretty good description comments.
So this PAL above creates a new, empty TSongInfo object on every iteration, sets it's details to the same as the track currently playing, then adds your silence track and when the silence track starts playing it tells the encoder the just finished song's details instead.
As per 1. I added another PAL.WaitForPlayCount(1); here so you don't end up with an infinite loop of silence.