Frage: wie kann man am MIDI-Controller APCmini von AKAI alle 64 rechteckigen Tasten leuchtend mit der Farbe “grün” im Ruhezustand und beim Betätigen einer der Tasten in den Zustand “gelb-blinkend” versetzen, solange, wie das Jingle (Cartwall Taste) läuft. Nach Ablauf des Jingles (Cartwall Ende) soll wieder der Ruhezustand “grün” auf der betätigten Taste leuchten.
Ein kleines “Hintergrundprogramm” kann die Anforderung lösen.
Voraussetzungen hierfür sind:
- Anzahl Cartwall Tasten sind im Konfigurationsprogramm von mAirList definiert.
- Cartwall Tasten sind mit Jingles, Musikbetten, … belegt
- Midi Controller ist installiert und funktionsfähig
Die Befehlsfolgen der Cartwall-Tasten (unter “Fernsteuerung”, “Midi”,“Befehle”) sollten folgende Daten je Cartwall Taste enthalten:
Ausschnitt aus der MIDI-Befehlsliste:
Das nachfolgende “Hintergund-Script” (es sind nur die ersten 3 Tasten von oben links beginnend auf dem APCmini als DEMO programmiert) kann dann unter “Hintergrund-Scripts” aktiviert werden:
Der Programm-Code für das Hintergrund-Script lautet:
// AKAI "APCmini": LED-Steuerung fuer die Cartwall
// Status: 14.12.2021
// Autor: RBOR
// Hinweis: es werden beim APCmini alle der 64 rechteckigen Tasten fuer die Cartwall eingesetzt.
const // Zuordnung der Farben des AKAI "APCmini"-Controllers
off = 00;
green = 01;
green_blink = 02;
red = 03;
red_blink = 04;
yellow = 05;
yellow_blink = 06;
APCMini = 1; // Konstante fuer USB-Controller APCmini (MIDI-Betrieb), meist ist es die 1
var // Gobale Variablen fuer ALLE Prozeduren
i: integer;
// ** Diese Prozedur wird beim START von mAirList ausgefuehrt **
procedure OnLoad;
begin
MidiOutOpen(APCMini); // MIDI Device ZENTRAL oeffnen
// Zeige aktuelle Devives in SYSTEMLOG, nur bei Bedarf einschalten
MidiOutListDevices;
// ** Grundfarben bei Programmstart setzen **
// ** Grundfarbe: 00 (off) --> alle 99 Tasten AUS
for i:= 0 to 99 do MidiOut(APCmini, $90, i, off); // device, status, data1, data2
// ** Grundfarbe: 01 (green) --> nur die 64 Cartwall Tasten
for i:= 0 to 63 do MidiOut(APCmini, $90, i, green);
end;
// ** Procedure OnCartwallPlayerStop **
// Called when cart player is stopped
procedure OnCartwallPlayerStop(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; Duration:TTimeValue);
begin
for i:= 0 to 63 do MidiOut(APCmini, $90, i, green); // alle Farben der Tasten wieder auf 'green' setzen
end;
// ** Procedure OnExecuteCommand **
// Verschiedene Kommandos aus dem MIDI-Tasten-Bereich auswerten und ausfuehren
procedure OnExecuteCommand(Command: string);
begin
If Command = 'CARTWALL 1 START/STOP' then begin
MidiOut(APCmini, $90, 56, yellow_blink); // Taste dezimal = 56 (oben links, 1.Zeile. 1.Taste)
end;
If Command = 'CARTWALL 2 START/STOP' then begin
MidiOut(APCmini, $90, 57, yellow_blink); // Taste dezimal = 57 (oben links, 1.Zeile. 2.Taste)
end;
// Copy Start, nur die naechsten 3 Zeilen ...
If Command = 'CARTWALL 3 START/STOP' then begin
MidiOut(APCmini, $90, 58, yellow_blink); // Taste dezimal = 58 (oben links, 1.Zeile. 3.Taste)
end;
// Copy Ende ...
// ... usw. mit allen der 64 genutzten Tasten ... --> Zaehlung von 0 bis 63 !!!
end;
// ** Procedure OnUnLoad **
// Diese Prozedur wird beim BEENDEN von mAirList ausgefuehrt
procedure OnUnLoad;
begin
// APCmini Grundfarben loeschen bei Programmende
// Grundfarbe: 00 (off) --> alle 99 Tasten AUS
for i:= 0 to 99 do MidiOut(APCmini, $90, i, off); // device, status, data1, data2
MidiOutClose(APCMini); // --> MIDI Device ZENTRAL schliessen
end;
// Main Program
begin
end.
HINWEIS: das kleine DEMO-Programm ist sofort zum Test lauffähig, sofern keine anderen Hintergrundprogramme den Lauf verhindern. Die Tasten 56, 57 und 58 sind zur Demonstration im Script-Programm programmiert.
Nachfolgende noch die Tastenbelegung des APCmini (vom Hersteller vorgegeben):
Quelle: AKAI-Support
Nähere Informationen bzgl. MIDI/APCmini sind auch unter RBOR (MIDI) mit der mAirList SUCHE zu finden.
Gruß
RBOR