[quote=“isanhagen, post:172, topic:2848”]Nun möchte ich, dass bei einer Laufzeit kleiner z.B. 1 Min. nicht der nächste Titel
gespielt wird, sondern ein Brückenelement. Also beispielsweise ein Instrumentalstück
o.ä., aus der Datenbank oder einem Verzeichnisordner.[/quote]
Hi!
Ein kleiner Tip, der aber nur funktioniert wenn Du jede Stunde mit einer extra Playlist fährst.
Buche das Brückenelement mit softer Fixzeit auf XX:59 als letztes Element in der Playlist.
Dann geht´s auch ohne Script.
Also bei mir funktionierts. Es gibt in mAirListConfig unter Playlist ->GUI-optionen einen haken “Elementspezifische Farben haben Vorrang vor Skin”. Der sollte gesetzt sein.
so, hier ein script, das schaut, welches element als erstes nicht mehr in die laufende stunde passt, und dann an diese stelle ein zufälliges “brückenelement” aus den angegebenen pfaden einfügt an.
für mehr hab ich keine zeit gerade.
[code]{um mehr brückenelemente hinzuzufügen einfach #1. array erweitern #2. pfad[id] := ‘pfad’ hinzufügen #3. bei url den ‘max-wert’ ändern #4. ggf die if bedingung ändern, rauslöschen, je nach anwendung #5. fertig
#—Stand: 13.04.2008— michi
}
procedure Einfuegen(index: Integer);
var i : Integer;
pfad: Array[0…3] of string; //
begin
pfad[0] := ‘C:\test.mp3’;
pfad[1] := ‘C:\test.mp3’;
pfad[2] := ‘C:\test.mp3’;
pfad[3] := ‘C:\test.mp3’;
i := Random(3);
try
SYstemLog(IntToStr(index));
CurrentPlaylist.InsertFile(index, pfad[i], eaNone);
except
SystemLog(‘Fehler beim Einfügen.’);
end;
end;
var //variabeln fuer die suche nach dem letzten element der laufenden Stunde
nextHour: TDateTime;
jetzigeStunde: Integer;
jetzt: TDateTime;
sekBisNextHour: Integer;
i: Integer;
summe: Integer;
farbig: boolean; //
begin
farbig:=false;
jetzigeStunde := StrToInt(FormatDateTime(‘h’, now));
jetzt:=now;
nextHour :=Date;
nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0)+ + 0.0416666666;
sekBisNextHour := Round((nextHour-jetzt)*86400);
summe:=0;
for i:=0 to CurrentPlaylist.GetCount-1 do begin
summe:=summe+CurrentPlaylist.GetItem(i).GetEffectiveDuration/10000000;
if (summe > (sekBisNextHour)) and (farbig = false) then begin
Einfuegen(i);
farbig:=true;
end;
end;
end.
Habe schon einmal Zuhause probiert, leider wird das Element an die falsche Stelle gesetzt.
es wird micht als letztes Element vorm Stundenwechsel eingefügt, sondern
als vorletztes. Somit wird doch der letzte nur angespielt. Noch ne Frage:
Wo kann ich die Sekunden einstellen, ab denen dann ein Brückenelement einstellen kann?
Ist das hier " summe:=0; " ?
[quote=“isanhagen, post:187, topic:2848”]Habe schon einmal Zuhause probiert, leider wird das Element an die falsche Stelle gesetzt.
es wird micht als letztes Element vorm Stundenwechsel eingefügt, sondern
als vorletztes. Somit wird doch der letzte nur angespielt.[/quote]
Also bei mir wurde es an die richtige stelle gesetzt. Es dürfte ja klar sein, dass das brückenelement so lang sein muss, dass es über den stundenwechsel hinausgeht… also als Faustregel: das Brückenelement muss mindestens so lang sein, wie der längste track, den es in der playlist gibt.
[quote=“isanhagen, post:187, topic:2848”]Noch ne Frage:
Wo kann ich die Sekunden einstellen, ab denen dann ein Brückenelement einstellen kann?
Ist das hier " summe:=0; " ?[/quote]
Anscheinend reden wir leider aneinander vorbei
Wir laden zu jeder vollen Stunde eine Datenbank Playlist.
Diese Playlist ist natürlich länger als 60 Min (Sicherheitshalber ca. 65-70 Min.)
Angenommen es ist nun 18.59 Uhr und 10s.
Nun würde der nächste Song 50 s gespielt werden.
Zur vollen Stunde (19 Uhr) zieht mAirList die nächste Playlist (Zeitansage usw.)
Ich möchte nun erreichen, dass bei einer Restzeit kleiner z.B. 1 Min.
bis zur nächsten vollen Stunde, nicht der Titel gespielt wird der an der Reihe wäre
sondern ein Brückenelement.
Besser die letzten Sekunden bis zum Stundenwechel ein solches Element spielen,
als einen regulären Song anspielen und ausblenden.
War das verständlicher?
[code]{um mehr brückenelemente hinzuzufügen einfach #1. array erweitern #2. pfad[id] := ‘pfad’ hinzufügen #3. bei url den ‘max-wert’ ändern #4. ggf die if bedingung ändern, rauslöschen, je nach anwendung #5. fertig
#—Stand: 13.04.2008— michi
}
procedure Einfuegen(index: Integer);
var i : Integer;
pfad: Array[0…3] of string; //
begin
pfad[0] := ‘C:\test.mp3’;
pfad[1] := ‘C:\test.mp3’;
pfad[2] := ‘C:\test.mp3’;
pfad[3] := ‘C:\test.mp3’;
i := Random(3);
try
SYstemLog(IntToStr(index));
CurrentPlaylist.InsertFile(index, pfad[i], eaNone);
except
SystemLog(‘Fehler beim Einfügen.’);
end;
end;
var //variabeln fuer die suche nach dem letzten element der laufenden Stunde
nextHour: TDateTime;
jetzigeStunde: Integer;
jetzt: TDateTime;
sekBisNextHour: Integer;
i: Integer;
summe: Integer;
farbig: boolean; //
begin
farbig:=false;
jetzigeStunde := StrToInt(FormatDateTime(‘h’, now));
jetzt:=now;
nextHour :=Date;
nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0)+ + 0.0416666666;
sekBisNextHour := Round((nextHour-jetzt)*86400);
summe:=0;
for i:=0 to CurrentPlaylist.GetCount-1 do begin
summe:=summe+CurrentPlaylist.GetItem(i).GetEffectiveDuration/10000000;
if (summe > (sekBisNextHour)) and (farbig = false) and (CurrentPlaylist.GetItem(i).GetStartTime < (nextHour-0.000694444)) then begin
Einfuegen(i);
farbig:=true;
end;
end;
end.
[/code]
edit: warte mal ;)… GetStartTime benötigt einen parameter. (function GetStartTime ( iType : TStartTimeType ) : TDateTime )
[quote=“isanhagen, post:172, topic:2848”]…D.h.: Es ist z.B. 03.58h und 50s. Einen Titel zu starten wäre Quatsch-
Gesang setzt ein , Stunde ist voll, Uhrzeitansage, und und und.
So läuft es aber z.Z.
Nun möchte ich, dass bei einer Laufzeit kleiner z.B. 1 Min. nicht der nächste Titel
gespielt wird, sondern ein Brückenelement …[/quote]
[quote=“flashlighter, post:191, topic:2848”]probier das mal (ungetestet):
[code]{um mehr brückenelemente hinzuzufügen einfach #1. array erweitern #2. pfad[id] := ‘pfad’ hinzufügen #3. bei url den ‘max-wert’ ändern #4. ggf die if bedingung ändern, rauslöschen, je nach anwendung #5. fertig
#—Stand: 13.04.2008— michi
}
procedure Einfuegen(index: Integer);
var i : Integer;
pfad: Array[0…3] of string; //
begin
pfad[0] := ‘C:\test.mp3’;
pfad[1] := ‘C:\test.mp3’;
pfad[2] := ‘C:\test.mp3’;
pfad[3] := ‘C:\test.mp3’;
i := Random(3);
try
SYstemLog(IntToStr(index));
CurrentPlaylist.InsertFile(index, pfad[i], eaNone);
except
SystemLog(‘Fehler beim Einfügen.’);
end;
end;
var //variabeln fuer die suche nach dem letzten element der laufenden Stunde
nextHour: TDateTime;
jetzigeStunde: Integer;
jetzt: TDateTime;
sekBisNextHour: Integer;
i: Integer;
summe: Integer;
farbig: boolean; //
begin
farbig:=false;
jetzigeStunde := StrToInt(FormatDateTime(‘h’, now));
jetzt:=now;
nextHour :=Date;
nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0)+ + 0.0416666666;
sekBisNextHour := Round((nextHour-jetzt)*86400);
summe:=0;
for i:=0 to CurrentPlaylist.GetCount-1 do begin
summe:=summe+CurrentPlaylist.GetItem(i).GetEffectiveDuration/10000000;
if (summe > (sekBisNextHour)) and (farbig = false) and (CurrentPlaylist.GetItem(i).GetStartTime < (nextHour-0.000694444)) then begin
Einfuegen(i);
farbig:=true;
end;
end;
end.
[/code]
edit: warte mal ;)… GetStartTime benötigt einen parameter. (function GetStartTime ( iType : TStartTimeType ) : TDateTime )
Torben, kannst du mir sagen, was das bedeutet?[/quote]
[code]{um mehr brückenelemente hinzuzufügen einfach #1. array erweitern #2. pfad[id] := ‘pfad’ hinzufügen #3. bei url den ‘max-wert’ ändern #4. ggf die if bedingung ändern, rauslöschen, je nach anwendung #5. fertig
#—Stand: 13.04.2008— michi
}
procedure Einfuegen(index: Integer);
var i : Integer;
pfad: Array[0…3] of string; //
begin
pfad[0] := ‘C:\test.mp3’;
pfad[1] := ‘C:\test.mp3’;
pfad[2] := ‘C:\test.mp3’;
pfad[3] := ‘C:\test.mp3’;
i := Random(3);
try
SYstemLog(IntToStr(index));
CurrentPlaylist.InsertFile(index, pfad[i], eaNone);
except
SystemLog(‘Fehler beim Einfügen.’);
end;
end;
var //variabeln fuer die suche nach dem letzten element der laufenden Stunde
nextHour: TDateTime;
jetzigeStunde: Integer;
jetzt: TDateTime;
sekBisNextHour: Integer;
i: Integer;
summe: Integer;
farbig: boolean; //
begin
farbig:=false;
jetzigeStunde := StrToInt(FormatDateTime(‘h’, now));
jetzt:=now;
nextHour :=Date;
nextHour := nextHour + EncodeTime(jetzigeStunde,0,0,0)+ + 0.0416666666;
sekBisNextHour := Round((nextHour-jetzt)*86400);
summe:=0;
for i:=0 to CurrentPlaylist.GetCount-1 do begin
summe:=summe+CurrentPlaylist.GetItem(i).GetEffectiveDuration/10000000;
if (summe > (sekBisNextHour)) and (farbig = false) and (CurrentPlaylist.GetItem(i).GetStartTime(sttEstimated) < (nextHour-0.000694444)) then begin
Einfuegen(i);
farbig:=true;
end;
end;
end.[/code]