MIDI - APCmini - Cartwall

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:
image

Ausschnitt aus der MIDI-Befehlsliste:
image

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):
image
Quelle: AKAI-Support

Nähere Informationen bzgl. MIDI/APCmini sind auch unter RBOR (MIDI) mit der mAirList SUCHE zu finden.
Gruß
RBOR

Einige Grafiken sind etwas klein, daher noch einmal nachfolgend:

image

image

Mein PC hat ein Problem, also noch einmal:
image

image

Guten Tag,

Danke es funktioniert gut.
Aber ich habe eine Frage.
Das Ein- und Ausschalten einer Taste funktioniert gut.
Aber wenn 1 Taste blinkt und Sie eine andere Taste drücken und die andere ausschalten möchten, gehen beide Lichter aus (also wieder grün), während 1 weiterhin blinken sollte.
Kann dies eingestellt werden, wenn Sie mehrere Tasten verwenden, die ständig blinken, wenn sie verwendet werden?

Grüße,

Stephan

Hallo Stephan,
man kann jede einzelne Taste abfragen, ob diese gedrückt wurde (mit einen Flag setzen und nicht setzen), ist aber sehr aufwendig in der Programmierung (64 Tasten!). In der Prozedure “procedure OnCartwallPlayerStop” wird dieses für alle 64 Tasten gleichzeitig gemacht. Ansonsten, jede Taste einzeln programmieren.
Viel Erfolg.
Gruß rbor

OK danke.
Aber ich verstehe nicht ganz, wie das im Script aussehen soll?
Ist es möglich, nur 2 Tasten anzuzeigen, wie sie programmiert sind.

Vielen Dank

Hallo Stephan,
sorry, im Moment kann ich nicht weiterhelfen, da ich die Kondition, wann eine Cartwall läuft oder nicht, leider nicht kenne. Vielleicht hat ein anderer User aus der Community eine Idee.
Gruß rbor

Soll ich’s in den Bereich “Scripte” verschieben?

Hallo Uli,
kannst Du gerne in den Bereich “Scripte” verschieben, vielen Dank.
Gruß rbor

In den Bereich “Scripts” verschoben, da es weniger um die Hardware selbst, als vielmehr um ihre Ansteuerung durch individuelle Scripte geht.