EOF an Player angepasst

Im Background Script Template finde ich lediglich die Bedingung OnPlayerEOFWarning. Gibt es dies auch playbezogen? OnPlayer1EOFWarning gab bei mir leider einen Error.

Merci :slight_smile:

Was hast du denn vor? Der Befehl kann schon Playerseitig unterscheiden:

procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer); begin end;

Mit PlayerIndex liefert dir die Prozedur die Info mit, welcher Player gerade vom EOF betroffen ist.

Wo trage ich dann die 1 bzw. 2 ein? Ich möchte playerbezogen eine EOF-Warnung an mein MIDI-Gerät senden, Skript habe ich auch dazu.

var sollBlinkenEOF: boolean; istAn: boolean;

procedure OnTimer;
begin
if sollBlinkenEOF then begin
istAn := not istAn;
if istAn then
midiOut(1, $90, $28, 127)
else
midiOut(1, $90, $28, 0);
end;
end;

procedure OnLoad;
begin
sollBlinkenEOF := false;
EnableTimer(500);
MidiOutOpen(1);
end;

procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
sollBlinkenEOF := true;
end;

procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);
begin
sollBlinkenEOF := false;
midiOut(1, $90, $28, 0);
end;

begin
end.

Funktioniert auch, bekomme jedoch beim ausführen ein “List index out of bounds (6)”.

Was willst du denn genau machen? Zwei Start/Stop Buttons vom Midi-Geräten zum Blinken bringen?

Genau, wenn Player1 EOF geht, dann soll Lampe x blinken, wenn Player2 EOF geht, soll Lampe y blinken :slight_smile:

Wie lauten denn die unterschiedlichen Bezeichnungen der beiden Tasten beim midiOut?

Player1: $90, $28
Player2 $88, $26

rein als Idee, wobei es mit Sicherheit auch eleganter geht.

Warum machst du nicht zwei Scripte? Mit unterschiedlichen MidiOut-Befehlen und änderst unten:

[code]procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
sollBlinkenEOF := true;
end;

procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);
begin
sollBlinkenEOF := false;
midiOut(1, $90, $28, 0);
end;[/code]

in

[code]procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
if PlayerIndex = 0 then
sollBlinkenEOF := true;
end;

procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);
begin
if PlayerIndex = 0 then
sollBlinkenEOF := false;
midiOut(1, $90, $28, 0);
end;[/code]

und

[code]procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
if PlayerIndex = 1 then
sollBlinkenEOF := true;
end;

procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);
begin
if PlayerIndex = 1 then
sollBlinkenEOF := false;
midiOut(1, $88, $26, 0);
end;[/code]

Keine Ahnung, ob das klappt, ist nur ein Schuss ins Blaue und besonders elegant ist es auch nicht.