Doppelklick für Kassentasten: Zweitbelegung mit Timer steuern

Liebe ASSIST-Benutzer,

jetzt, da wir gerade eine nagelneue Timerprozedur bekommen haben,* hier ein kleiner Kniff für Eure Kassentastatur:

In Anlehnung an die Funktion des Hardwarecontrollers beim Ausspielsystem d’Accord

grafik

läßt sich die Taste für den (mAirList-)Befehl PFL END MON doppelt belegen: Drückt man dort während des Vorhörens die Taste End, so springt die Abspielposition kurz vor das Ende des Audios, soweit klar. Ist einem das schon zu weit, könnte man jetzt mit dem Rad zurückleiern. Braucht man aber nicht, denn wenn man innerhalb kurzer Zeit noch einmal die Taste drückt, springt die Position um einen gewissen Betrag zurück. Reicht das immer noch nicht … undsoweiter. Auf diese Weise läßt es sich relativ fix „zurückspulen“, ohne die Hand von der Taste nehmen zu müssen. Das will ich auch!

Und so geht’s:

var
  HoldEnd: boolean;

const
  HOLD = 300;                           // <-- Hier die Aktionszeit in Millisekunden eintragen.

procedure OnLoad;
  HoldEnd := false;

procedure OnTimerEx(ID: string);
begin
  if ID = 'TimerEnd' then begin
    HoldEnd := false;
    DisableTimerEx('TimerEnd');
  end;
end;

procedure OnExecuteCommand(Command: string);
begin
  if Command = 'END' then begin         // <-- Diesen Befehl an Eure eigene Umgebung anpassen!
    if HoldEnd then begin
      ExecuteCommand('PFL JUMP -3000'); // <-- Hier das Rücksprungintervall in Millisekunden eintragen.
      EnableTimerEx('TimerEnd', HOLD);  
    end
    else begin
      ExecuteCommand('PFL END MON');
      HoldEnd := true;
      EnableTimerEx('TimerEnd', HOLD);
    end;
  end;
end;

begin
end.

Beim ersten Tastendruck wird der Timer gestartet, und die Variable HoldEnd merkt sich das. Abhängig davon wird die Bedeutung der Taste umgeschaltet. Ist man schnell genug, dann bewirkt die Taste den Rücksprung der Abspielposition. Warum aber wird auch dann der Timer gestartet? Nun, bei jedem Tastendruck soll die Haltezeit aufs neue loslaufen, damit man jedesmal die gleiche Zeit für den Nachtast hat.

Das geht natürlich für beliebige Funktionen, die (d’Accord-)Taste Begin beispielsweise stellt normalerweise die Abspielposition ganz an den Anfang, ein Doppeltast bewirkt das Löschen einer gesetzten Cue-in-Marke.

DisableTimerEx('TSD')


* Diejenigen mit mAirList früher als 6.2/4112 nehmen einfach das normale TimerEnable/TimerDisable.

Und wozu brauchte man da jetzt die neue Timer-Funktion? :slight_smile:

Als Inspiration und für die, wo schon was blinkt. Oder die Streams aufschalten.

Rechtfertigende Grüße

TSD :upside_down_face:

Aber das wäre dann wohl in einem getrennten Script, oder?

Mehrere Timer waren schon immer möglich, wenn man sich auf einen Timer pro Script beschränkte.

Neu ist jetzt eben: Mehrere Timer in demselben Script.

Das trifft bei mir aber zu. Mein Tastatur-Skript hat beide Funktionen, die ich oben erwähnte (Begin und End). Die neue Funktion hat mir da sehr weitergeholfen. Und wer weiß, was ich mir da noch ausdenke …

Zweifache Grüße

TSD