@shorty.xs: Augenblick! Die Prozedur OnExtraPFL(…);
gibt es nicht. Hierzu ein Wort vom Boss:
Es hängt also von Deiner, Robert, weiteren Verwendung ab, ob Du OnPFLOn
oder OnExtPFLOn
verwendest. Für mein perönliches Setup nutze ich überhaupt nie die PFL-Funktion der Player, sondern höre mit ExtraPFL immer nur die Playlistelemente vor. (Cartwall ist was anderes.) Dann (bei mir also) ist es aber auch egal, ob Du mit oder ohne Ext
benutzt. (Für das untige Skript habe ich das „normale“ genommen – weitere Gedanken folgen.)
Etwas ganz grundsätzliches @derrotedj:
Du kannst Dein Skript auf Syntaxfehler prüfen, indem Du es unter mAirList > Script ausführen…
hochlädst. Kommt kein Mecker, sieht es in dieser Hinsicht gut aus. (Was aber nicht heißt, daß das Skript auch funktionieren wird.)
Zu @shorty.xs’ Skript:
Ein bißchen mit begin
s und end
s aufgeräumt und wichtig: Bei der Abfrage nach PFLCount
(der Zahl der geöffneten PFLs: Ist PFLCount = 0
, dann sind alle geschlossen, PFL also sicher aus) hast Du einmal >= 1
und dann <= 1
eingesetzt. Das geht nicht, denn wenn PFLCount = 1
, ist der Zustand nicht eindeutig definiert, es könnte beides zutreffen. Also entweder < 1
oder gleich = 0
.
Ansonsten hätte ich es ähnlich gemacht und schlage @shorty.xs’ Skript, dahingehend korrigiert und etwas formschöner, noch einmal vor:
var
x32pfl : boolean;
// On Script load or on mairlist startup, sync status, set variables to false and switch PFL off.
procedure OnLoad;
begin
x32pfl := false;
MidiOut(1, $B1, $50, $7F);
end;
// On Script unload or on mairlist shutdown, switch PFL off.
procedure OnUnload;
begin
MidiOut(1, $B1, $50, $7F);
end;
//respond to X32 incoming command
procedure OnExecuteCommand(Command: string);
begin
if Command = 'X32 PFL ON' then begin
x32pfl := true;
ExecuteCommand('PLAYLIST 1 EXTRAPFL ON');
end
else if Command = 'X32 PFL OFF' then begin
x32pfl := false;
ExecuteCommand('PLAYLIST 1 EXTRAPFL OFF');
end;
end;
// check if mairlist is on pfl
procedure OnPFLOn(Item: IPlaylistItem; PFLCount: integer);
begin
if (PFLCount >= 1) AND NOT x32pfl then
MidiOut(1, $B1, $50, $00);
end;
procedure OnPFLOff(Item: IPlaylistItem; PFLCount: integer);
begin
if (PFLCount = 0) AND x32pfl then
MidiOut(1, $B1, $50, $7F);
end;
begin
end.
Ich habe noch ein Ausschalten ergänzt, daß, wenn mAirList heruntergefahren wird, PFL am Pult mit ausgeschaltet wird.
@derrotedj: Du mußt vorher noch in der Konfiguration/Systemsteuerung unter Fernsteuerung > Hinzufügen > MIDI
definieren, daß beim drücken von PFL am Pult der Befehl X32 PFL ON
ausgeführt wird (einfach händisch reinschreiben) und umgekehrt mit … OFF
.
Ich mache mal hier eine Zäsur und poste, dann kommt noch ein Gedanke von mir.
Kliffhängende Grüße
TSD
Edit: Ich habe noch die verschachtelte if
-Anweisung zusammengefaßt.