De samples staan allemaal in de map "SAMPLE". Ze zijn al gemonteerd.
alvast bedankt,
dirk.

viewtopic.php?f=81&t=2509&start=120#p35502
idd je zeurtdirkafm schreef:alsjeblieft???
Of kan dat niet in SAM Bc.?
Als dat niet kan dan weet ik dat, zeur ik ook niet verder..
alvast bedankt.. Dirk.
Code: Selecteer alles
var Q : TDataSet;
var Song, Liner, nowSong : TSongInfo;
var MustCheck: Boolean = True;
var i,j,current : Integer;
var hh,mm,ss,ms : Integer;
var MustPlay : Boolean;
var StayInLoop : Boolean;
var nextName,nextArtist : String;
var nextFile,tempStr : String;
var nextTime : Integer = 0;
var followingType : String;
var remainTime : Integer;
var aPlayer, iPlayer : TPlayer;
var linerTime : Integer = 0;
var startFade : Integer;
var Spinner : Integer;
var linerPlay : DateTime;
var delayString : String = '+00:00:01';
var Waiting : Boolean = True;
var Intro : Integer = 0;
var duration : Integer = 0;
var GetDuration : Integer = 0;
const MIN_LENGTH = 60*1000; //60 seconds
const LINERS_CATEGORY = 'Artistpromo (all)';
const MIN_WAIT = '+00:07:00'; //Wait 07 minutes between liners
PAL.Loop := True;
PAL.LockExecution;
// Declare variables
var theArtistInQueue, theCountSongs, theSongChooser : TDataSet;
WriteLn('Starting Jingles Script...');
WriteLn('');
// Choose a random song while enforcing the rules and put in queue bottom
//CAT['music (all)'].QueueTop(smRandom, noRules);
// Let's find out the artist and songid we just put in the queue
theArtistInQueue := Query('select TOP 1 title, artist, songID, queuelist.id as queueID ' +
'from songlist, queuelist ' +
'where songlist.id = queuelist.songID '+
'order by queueID asc',[],True);
//Get the category of the upcoming song.
Q := Query('SELECT category.name, songlist.filename, ' +
'songlist.duration, artist, queuelist.songID, songlist.songtype ' +
'FROM category, categorylist, songlist, queuelist ' +
'WHERE (songlist.ID = categorylist.songID) ' +
'AND (songlist.ID = queuelist.songID) ' +
'AND (categorylist.categoryID = category.ID) ' +
'ORDER BY queuelist.sortID ASC',[],True);
Q.First;
if not Q.IsEmpty then
begin
nextName := Q['name'];
nextFile := Q['filename'];
nextArtist := Q['artist'];
nextTime := Q['duration'];
WriteLn('Playing Next Category: ' + nextName );
WriteLn('Playing Next File: ' + nextFile );
WriteLn('Playing Next Artist: ' + nextArtist );
WriteLn('Duration: ' + IntToStr(nextTime) );
WriteLn('xfade='+Q['xfade']);
end;
WriteLn('');
WriteLn('Looking for Jingles for: ' + QuotedStr(Q['artist']));
WriteLn('Looking for Jingles for songid : ' + IntToStr(Q['songID']) );
WriteLn('');
// Let's get a count of the remaining jingles by this artist
theCountSongs := Query('select count(*) as cnt' +
' from songlist' +
' where id <> ' + IntToStr(Q['songID']) +
' and songtype = ''J'' ' +
' and artist = ' + QuotedStr(Q['artist']) +
' and artist <> ''jingle'' ' ,[],True);
WriteLn('There are ' + IntToStr(theCountSongs['cnt']) + ' jingles to choose from');
WriteLn('');
if (theCountSongs['cnt'] = 0) then
begin
WriteLn('ZERO jingles to choose from!');
end
else
if (QuotedStr(Q['artist']) = ' jingle') then
begin
WriteLn('A jingle doesn t have to be presented!');
end
else
begin
WriteLn('Choosing random jingle...');
// Choose a random jingle from the remaining songs by this artist
theSongChooser := Query('select filename' +
' from songlist' +
' where id <> ' + IntToStr(Q['songID']) +
' and songtype = ''J'' ' +
' and artist = ' + QuotedStr(Q['artist']) +
' and artist <> ''jingle'' ' +
' order by rand()',[],True);
// Put random jingle in queue top
// Queue.AddFile(theSongChooser['filename'],ipTop);
{Step1: Queue up the deck, ready for play}
Liner := CAT[LINERS_CATEGORY].ChooseSong(smRandom,NoRules);
if (Liner=nil) then
WriteLn('No valid liner found')
else if (not Aux1.QueueSong(Liner)) then
WriteLn('Failed to queue song: '+Liner['filename']);
{Start playing the liner if the current song matches our rules}
if(Song['songtype']='S') and (duration>=MIN_LENGTH) then
begin
Aux1.Play;
Waiting := False;
end;
Song.Free; Song := nil;
WriteLn('Added: ' + QuotedStr(Q['artist']));
WriteLn(' ' + QuotedStr(Q['title']));
WriteLn('');
// Be nice... Free up the data structures
theSongChooser.Free;
theArtistInQueue.Free;
theCountSongs.Free;
end;
PAL.UnlockExecution;
PAL.WaitForTime(MIN_WAIT);
PAL.WaitForPlayCount(1);
{................................................}
function ExtractIntro(Song : TSongInfo):Integer;
var
P : Integer;
XFade : String;
begin
Result := -1;
XFade := Trim(Song['xfade']);
WriteLn('Decoding XFade string');
WriteLn('XFade: '+XFade);
if XFade = '' then
Result := -1
else
begin
P := Pos('&i=',XFade);
if (P > 0) then
begin
Delete(XFade,1,P+2);
P := Pos('&',XFade);
if (P>0) then
Delete(XFade,P,Length(XFade));
Result := StrToIntDef(XFade,-1);
WriteLn('Intro time detected: '+XFade);
end;
end;
end;
{--------------------------------------------------}
Code: Selecteer alles
var Song, Liner : TSongInfo;
var Track : TSongInfo;
//Track.Free;
Queue.Clear;
const snippet = 'jingle-snippet'; //CAT waar jingle in staat
Liner := CAT[snippet].ChooseSong(smRandom,NoRules);
if (Liner=nil) then
WriteLn('No valid liner found')
else if (not Aux1.QueueSong(Liner)) then
WriteLn('Failed to queue song: '+Liner['filename']);
Track := CAT['Top40new'].ChooseSong(smLRP,EnforceRules);
IdlePlayer.QueueSong(Track);
PAL.WaitForTime ('+00:00:02'); //laadtijd
IdlePlayer.Seek(120000); //zet seekpoint
PAL.WaitForPlayCount(1);
Aux1.Play;
PAL.WaitForTime ('+00:00:15'); //tijd snippet te horen
ActivePlayer.FadeToNext;
PAL.WaitForPlayCount(3);
IdlePlayer.QueueSong(Track);
Track.Free;
Wat moet ie doen dan?ojee66 schreef: Kunnen we hier eens op verder borduren.. wie heeft hie rnog een aanvulling op???
Code: Selecteer alles
IdlePlayer.Seek(120000);
Code: Selecteer alles
ActivePlayer.Seek(120000);
DeckA.Seek(120000);
DeckB.Seek(120000);
Aux1.Seek(120000);
Aux2.Seek(120000);
Aux3.Seek(120000);
Code: Selecteer alles
QueuedPlayer.Seek(120000);
Code: Selecteer alles
var Song, Liner : TSongInfo;
var Track : TSongInfo;
Cat['jingle-snippet'].QueueTop(smLRP,NoRules);
Track := CAT['Top40'].ChooseSong(smLRP,EnforceRules);
Aux1.QueueSong(Track);
PAL.WaitForTime ('+00:00:01'); //laadtijd
Aux1.Seek(120000); //zet seekpoint
PAL.WaitForPlayCount(1);
// check if ons jingle is played
Liner := ActivePlayer.GetSongInfo;
if (Liner<>nil) and (Uppercase(Copy(Liner['artist'],1,3))='SNI') then
Begin
// alle decks moeten ff op pauze uitgezonderd de AUX1
ActivePlayer.FadeToStop;
QueuedPlayer.FadeToStop;
IdlePlayer.FadeToStop;
Aux1.Play;
PAL.WaitForTime ('+00:00:15'); //tijd snippet te horen
Aux1.FadeToStop;
Aux1.Eject;
//queued player weer starten...
QueuedPlayer.Play;
PAL.WaitForPlayCount(3);
IdlePlayer.QueueSong(Track); //track is verdwenen en komt niet meer in de queue terug???
Track.Free;
Liner.Free;
end;
Wat ik uit je verhaal begrijpt, is dat je een aparte map maakt voor nieuwe Top40 nummers.ojee66 schreef: Waarvoor wil je 7 dagen terug in de top40?
Gisterenavond mee bezig geweest.ojee66 schreef: had je dees al lang op de plank liggen of heb je dees nu net ff in elkaar geflanst ?