PFL Cue mit Midi Encoder

Hallo,

ich würde gerne mit einem Drehregler auf meinem Midi Remote (Behringer X-Touch Compact) die Cue In-Position beim eincuen steuern. Der Encoder sendet bei Data2 $01 beim langsamen drehen und $02-$09 je nachdem wie schnell man ihn nach vorne dreht.

Beim Rückwärtsdrehen ist es ähnlich: Beim langsamen rückwärtsdrehen $41 und dann je nach dem wie schnell man rückwärts dreht $42 - $49.

Wie könnte ich nun Mairlist mitteilen, dass die Sprünge größer werden sollen beim Cuemarker, je nachdem in welcher Geschwindigkeit man den Encoder dreht?

Ich hab die Befehle PFL CUEIN PLUS und PFL CUEIN MINUS gefunden. Grundsätzlich funktioniert es auch - bis auf die Größe der Cue-Sprünge in Relation zur Drehgeschwindigkeit des Encoders.

Hat jemand eine Idee?

Vielen Dank für’s lesen, eure Zeit und für evtl. Hilfe!

Andreas

Die PLUS/MINUS-Befehle akzeptieren keine weiteren Parameter, die Distanz ist fest vorgegeben. Aber du könntest ja einfach mehrere gleichzeitig/nacheinander davon ausführen?

Lieber Torben,

Ja das war auch meine Idee.

Das Problem ist dabei nur, dass offenbar die Scriptabfrage von Mairlist immer wartet, bis eine Midipause entsteht, bevor es den Befehl ausführt. Das heißt wenn ich schnell hintereinander drehe, kommt die Ausführung erst nachdem ich den Encoder kurz loslasse, was für den Moderator etwas verwirrend wäre.

Dann geht es wohl nicht und es muss weiter mit der Maus erfolgen.

Oder hast du noch eine Idee?

Sieht gerade so bei mir aus:

//Encoder fetching

procedure OnMidiMessage(Device: integer; Status, Data1, Data2: byte);
begin

// Slow
if (Status=$BF) and (Data1 = $20) and (Data2= $01) then
ExecuteCommand('PFL CUEIN PLUS');
if (Status=$BF) and (Data1 = $20) and (Data2= $41) then
ExecuteCommand('PFL CUEIN MINUS');

// Med
if (Status=$BF) and (Data1 = $20) and (Data2= $02) then
begin
ExecuteCommand('PFL CUEIN PLUS');
ExecuteCommand('PFL CUEIN PLUS');
ExecuteCommand('PFL CUEIN PLUS');
ExecuteCommand('PFL CUEIN PLUS');
end;
if (Status=$BF) and (Data1 = $20) and (Data2= $42) then
begin
ExecuteCommand('PFL CUEIN MINUS');
ExecuteCommand('PFL CUEIN MINUS');
ExecuteCommand('PFL CUEIN MINUS');
ExecuteCommand('PFL CUEIN MINUS');
end;

// High
if (Status=$BF) and (Data1 = $20) and (Data2 > $02) and (Data2 < $40) then
begin
ExecuteCommand('PFL CUEIN PLUS');
ExecuteCommand('PFL CUEIN PLUS');
ExecuteCommand('PFL CUEIN PLUS');
ExecuteCommand('PFL CUEIN PLUS');
ExecuteCommand('PFL CUEIN PLUS');
ExecuteCommand('PFL CUEIN PLUS');
ExecuteCommand('PFL CUEIN PLUS');
ExecuteCommand('PFL CUEIN PLUS');
end;
if (Status=$BF) and (Data1 = $20) and (Data2> $42) then
begin
ExecuteCommand('PFL CUEIN MINUS');
ExecuteCommand('PFL CUEIN MINUS');
ExecuteCommand('PFL CUEIN MINUS');
ExecuteCommand('PFL CUEIN MINUS');
ExecuteCommand('PFL CUEIN MINUS');
ExecuteCommand('PFL CUEIN MINUS');
ExecuteCommand('PFL CUEIN MINUS');
ExecuteCommand('PFL CUEIN MINUS');
end;


end;
begin
end.

Liebe Grüße

Andreas

Ich verändere nur die Wiedergabeposition, die kann man mittels PFL JUMP <value> beliebig steuern. Habe ich die Stelle gefunden, setze ich den Marker mittels Taste und PFL CUEIN SET. Diesen Marker könnte ich danach noch mittels … PLUS und … MINUS feinjustieren.

Liebe Tondose,

das ist eine super Idee!!

Hab ich jetzt gerade mal so umgesetzt und funktioniert perfekt! Danke!!!

Hier noch der Code:

//Encoder fetching

procedure OnMidiMessage(Device: integer; Status, Data1, Data2: byte);
begin

// Move Play Marker
if (Status=$BF) and (Data1 = $21) and (Data2> $00) and (Data2 <40) then
ExecuteCommand('PFL JUMP 1000');
if (Status=$BF) and (Data1 = $21) and (Data2> $40) then
ExecuteCommand('PFL JUMP -1000');


// Set Cue In
if (Status=$9F) and (Data1 = $21) and (Data2= $7F) then
ExecuteCommand('PFL CUEIN SET');

//Fine Cue
if (Status=$BF) and (Data1 = $20) and (Data2 > $00) and (Data2 < $40) then
ExecuteCommand('PFL CUEIN PLUS');

if (Status=$BF) and (Data1 = $20) and (Data2> $40) then
ExecuteCommand('PFL CUEIN MINUS');

// Save and close
if (Status=$9F) and (Data1 = $20) and (Data2= $7F) then
begin
ExecuteCommand('EXTRAPFL SAVE');
ExecuteCommand('EXTRAPFL CLOSE');
end;

end;
begin
end.
2 Likes