MIDI - APCmini - Cartwall

Kann man die denn Upgraden?

Upgraden sollte gehen, wende dich dafür mal an sales@mairlist.com

2 Likes

Upgrade erledigt. Jetzt müss ich den Script scheinbar auf den APCmini mkII angepasst werden

1 Like

Moin, habe jetzt das Script angepasst und esläuft perfekt.

Jetzt nochmal eine Frage: wie bekomme ich die Tasten zum blinken, wenn eine Scene auf dem Midi Controller bzw. Cartwall läuft.

Hat jemend eine Lösung.

Nach meiner Kenntnis (Midi-Mapping) ersetze

MidiOut (1, $96, i, 96);

durch

MidiOut (1, $9B, i, 96);
MidiOut (1, $9C, i, 96);
.
.
.
MidiOut (1, $9F, i, 96);

je nach Blinkfrequenz.

Super!

Könntest Du den Code hier auch als formatierten Code posten, damit andere ihn ebenfalls einfach nutzen können?

Hilfe dazu hier:

var
   i: integer;

Procedure ACPminibeleuchten;
begin

MidiOutOpen(1)

// Alle Tasten aus  

   for i:= 0 to 128 do
      MidiOut(1, $96, i, 00);

// 76 Grün Cartwall

   for i:= 40 to 63 do
      MidiOut(1, $96, i, 76);

// 106 Rot Cartwall

   for i:= 24 to 39 do
      MidiOut(1, $96, i, 106);

// 45 Blau Cartwall

   for i:= 8 to 23 do
      MidiOut(1, $96, i, 45);
 
// 96 Orange Cartwall
   
   for i:= 0 to 7 do
      MidiOut(1, $96, i, 96); 

// Untere Tasten

 MidiOut(1, $90, 100, 01)
 MidiOut(1, $90, 101, 01)
 MidiOut(1, $90, 106, 01)
 MidiOut(1, $90, 107, 01)

MidiOutClose(1)

end;

// Programm starten  

 begin
   ACPminibeleuchten;
 end.

Hier erstmal der Code

1 Like

So Blinken die Tasten durchgehend, ich möchte das Blinken aber nur wenn zB. ein Jingle auf der Cartwall läuft. Sonst sollen die Tasten nicht blinken.

Na ja, das mußt Du halt in Deinem Skript so schreiben. Oder hapert’s genau daran?

Genau daran hapert´s

Probiere dies:

var
  i: integer;


procedure Taste(Index, Mode: integer);
var
  Colour: integer;
begin
  if (Index >= 0) AND (Index < 8) then
    Colour := 96
  else if (Index >=  8) AND (Index < 24) then
  else if (Index <=  8) AND (Index < 24) then
    Colour := 45
  else if (Index >= 24) AND (Index < 40) then
    Colour := 106
  else if (Index >= 40) AND (Index < 63) then
    Colour := 76
  else if (Index >= 64) AND (Index < 128) then
    Colour := 0
  else
    exit;
    
  case Mode of
    1: Mode := $96;
    2: Mode := $9D;
  else
    begin
      Mode := $96;
      Colour := 0;
    end;
  end;
  
  MidiOut(1, Mode, Index, Colour);
end;


procedure OnLoad;
begin
  MidiOutOpen(1); 
  
  ExecuteCommand('CARTWALL ALL STOP');
  
  for i := 0 to 127 do
    Taste(i, 1);
    
  MidiOut(1, $90, 100, 01);
  MidiOut(1, $90, 101, 01);
  MidiOut(1, $90, 106, 01);
  MidiOut(1, $90, 107, 01);
end;

procedure OnUnload;
begin
  for i := 0 to 127 do
    Taste(i, 0);
    
  MidiOutClose(1);
end;


procedure OnCartwallPlayerStateChange(PlayerIndex: integer;
  OldState: TPlayerState; NewState: TPlayerState;
  Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem;
  OnAirMode: TCartwallOnAirMode);
begin
  if NewState = psPlaying then
    Taste(PlayerIndex, 2)
  else if NewState = psStopped then
    Taste(PlayerIndex, 1);
end;


begin
end.

Mangels Gerät ungetestet.

Cool es blink, leider nicht die richtigen Tasten aber so komme ich bestimmt weiter.

Danke

Du hattest Dich leider nicht über die Belegung geäußert …

Machst Du folgendes:

function Zuordnung(Index: integer): integer;
begin
  case Index of
    1: Result := 99;
    2: Result := 54;
    // ... usw.
end;


procedure OnCartwallPlayerStateChange(PlayerIndex: integer;
  OldState: TPlayerState; NewState: TPlayerState;
  Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem;
  OnAirMode: TCartwallOnAirMode);
var
  Index: integer;
begin
  if NewState = psPlaying then
    Taste(Zuordnung(PlayerIndex), 2)
  else if NewState = psStopped then
    Taste(Zuordnung(PlayerIndex), 1);
end;

So kannst Du Deine Tasten den Playern beliebig zuordnen. Oder findest halt einen passenden Algorithmus.

1 Like

0 - 63 sind sind belegt und sollten wenn ich selbige drücke blinken.

bzw. 00 - 3F sind belegt.

Diese Zeile musste raus.

Ah, jetzt ja. Sorry.

Tatsächlich ist es so:

Drücke ich 57 blinkt 2
Drücke ich 58 blinkt 3

Drücke ich 32 blinkt 25

Ich steige nicht durch.

Es kommt darauf an, welche Cartplayer Du den einzelnen Tasten zugeordnet hast. Das weißt nur Du. Noch nicht einmal mAirList weiß es. Deshalb mußt Du, wenn Du einen bestimmten Cartplayer gestartet hast, mAirList sagen, welche Lampe/Taste es blinken lassen soll.

Das ist meine Cartwall

und das Die Belegung vom AKAI

Kann ich die Reihenfolge bei mAirList änder, weil am Controller geht es nicht.

[Etwas Off-Topic, sorry:]
Wenn man doch nur mal das Erscheinungsbild der Carts sinnvoll gestalten könnte. Es ist eine immense Platzverschwendung, wie man sieht.
[OT OFF]