Ik ben inmiddels aan het "spelen" met enkele PAL scriptjes die jingles afspelen;
Optie 1: De Jingle speelt af na een x- aantal minuten; hij wordt dan als eerste in de queue gezet wanneer de ingestelde tijd verstreken is
Code: Selecteer alles
PAL.Loop:=True;
cat['Jingles (All)'].QueueTop(smLrp,NoRules);
PAL.WaitForTime(T['+00:15:00']);
Code: Selecteer alles
PAL.Loop:=True;
PAL.WaitForPlayCount(4); //wacht 4 platen en speelt daarna een jingle.
cat['Jingles (All)'].QueueTop(smLrp,NoRules);
Optie 1: de jingles worden "opgestapeld" in de queue zodra de tijd verstreken is en er nog steeds een nummer aan het spelen is, denk hierbij aan een flinke mix.
Optie 2: In combinatie met het script om voor een request een bepaalde jingle af te spelen, krijg je na enkele requests een stroom van jingles achter elkaar; elke jingle wordt gezien als een playcount en telt dus ook mee, dus na verloop lijk je mij vast te komen zitten in een loopje van jingles.
(even terzijde: het script om voor een request een bepaalde jingle af te spelen, plaatst de request gelijk bovenin de lijst; luisteraar A vraagt aan, luisteraar B vraagt vervolgens aan en toch wordt luisteraar B eerder gespeeld. Niet helemaal eerlijk

Code: Selecteer alles
PAL.Loop := True;
PAL.LockExecution;
var AQuery : TDataSet;
var Song : TSongInfo;
AQuery := Query('SELECT songlist.*, requestlist.*, requestlist.ID as requestID '
+' FROM songlist, requestlist '
+' WHERE (requestlist.ETA<:now) AND (requestlist.status=''new'') AND (songlist.ID=requestlist.songID) '
+ 'ORDER BY requestlist.ETA ASC '
+' LIMIT 1 ',[Now],True);
if not(AQuery.BOF and AQuery.EOF) then
begin
Song := TSongInfo.Create();
Song['ID'] := AQuery['ID'];
Song['filename'] := AQuery['filename'];
Song['artist'] := AQuery['artist'];
Song['title'] := AQuery['title'];
Song['duration'] := AQuery['duration'];
Song['requestID'] := AQuery['requestID'];
Queue.Add(Song,ipTop);
WriteLn('Request handled: '+Song['artist']+' - '+Song['title']);
Queue.AddFile('d:\Jingles\Requestjingle\Studio 26 Radio - Request Jingle.mp3',ipTop);
ExecSQL('UPDATE requestlist SET status=:status WHERE (songID = :songID) AND ((status=''new'') OR (status=''pending'')) ',['pending',song['ID']]);
end
else
WriteLn('No request found');
PAL.UnLockExecution;
AQuery.Free;
Song.Free;
Ik hanteer een vaste tijd wanneer de lange mixen gespeeld worden (liefst zou ik het ook nog per dag kunnen instellen)
Wellicht dat er ook een oplossing is voor het "niet eerlijk afspelen" van de requests ?
Ik ben al met allerlei knip en plak werk beziggeweest maar het ontbreekt mij simpelweg aan de kennis van PAL scripts

Alvast bedankt!
Richard