Brauche Hilfe bei ein paar Script Befehlen

@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 begins und ends 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.