Launchpad.mls
· 20 KiB · Text
Surowy
// Launchpad Script
// Written by Thomas Mongstad.
// Inspired by Thomas "Kloppi" Kloppholzs' Mairlist-Launchpad-Script
// https://github.com/Lexorius/Mairlist-Launchpad-Script
// Version 0.1.1
// https://www.youtube.com/watch?v=BHzI3VjI2l8
/////////////////////////////////////////////////////////////////////
const
testing = 1;
Launchpad_Device = 4;
// Setup LED colours
cOff = 12; // LED - OFF
cLowRed = 13; // LED low Red
cHighRed = 15; // LED High Red
cBlinkRed = 11; // LED Blink RED
cLowGreen = 28; // LED low Green
cHighGreen = 60; // LED HIGH Green
cBlinkGreen = 56; // LED BlInK Green
cLowAmber = 29; // LED low Amber
cHighAmber = 63; // LED High Amber
cBlinkAmber = 59; // LED Blink Amber
cBlinkYellow = 58; // LED Blink Yellow
cHighYellow = 62; // LED High Yellow
var
Buttons: array[-1..100] of integer;
RightButtons: array[-1..8] of integer;
TopButtons: array[-1..8] of integer;
Countdown: integer;
PlayerPad : array[-1..10] of array[-1..64] of integer;
Cartwall : array[-1..64] of integer;
function initializeLaunchpad(value:integer):boolean;
var
i: integer;
begin
i:=0;
// Listing Midi devices to Log
MidiOutListdevices;
// Connecting to Launchpad
midioutopen(Launchpad_Device);
// Clear old LEDs
midiout(Launchpad_Device, 176, 0, 0);
// Set Timer
midiout(Launchpad_Device, 176, 0, 40);
// Initialize buttons on the right
RightButtons[0] := 8;
RightButtons[1] := 24;
RightButtons[2] := 40;
RightButtons[3] := 56;
RightButtons[4] := 72;
RightButtons[5] := 88;
RightButtons[6] := 104;
RightButtons[7] := 120;
// Initialize buttons on the top
TopButtons[0] := 104;
TopButtons[1] := 105;
TopButtons[2] := 106;
TopButtons[3] := 107;
TopButtons[4] := 108;
TopButtons[5] := 109;
TopButtons[6] := 110;
TopButtons[7] := 111;
// Initialize buttons
// Row 1
for i := 0 to 7 do
begin
Buttons[i] := i;
end;
// Row 2
for i := 8 to 15 do
begin
Buttons[i] := i+8;
end;
// Row 3
for i := 16 to 23 do
begin
Buttons[i] := i+16;
end;
// Row 4
for i := 24 to 31 do
begin
Buttons[i] := i+24;
end;
// Row 5
for i := 32 to 39 do
begin
Buttons[i] := i+32;
end;
// Row 6
for i := 40 to 47 do
begin
Buttons[i] := i+40;
end;
// Row 7
for i := 48 to 55 do
begin
Buttons[i] := i+48;
end;
// Row 8
for i := 56 to 63 do
begin
Buttons[i] := i+56;
end;
// Player Pad 1
PlayerPad[0][0] := Buttons[32]
PlayerPad[0][1] := Buttons[33]
PlayerPad[0][2] := Buttons[34]
PlayerPad[0][3] := Buttons[35]
PlayerPad[0][4] := Buttons[40]
PlayerPad[0][5] := Buttons[41]
PlayerPad[0][6] := Buttons[42]
PlayerPad[0][7] := Buttons[43]
PlayerPad[0][8] := Buttons[48]
PlayerPad[0][9] := Buttons[49]
PlayerPad[0][10] := Buttons[50]
PlayerPad[0][11] := Buttons[51]
PlayerPad[0][12] := Buttons[56]
PlayerPad[0][13] := Buttons[57]
PlayerPad[0][14] := Buttons[58]
PlayerPad[0][15] := Buttons[59]
// Player Pad 2
PlayerPad[1][0] := Buttons[36]
PlayerPad[1][1] := Buttons[37]
PlayerPad[1][2] := Buttons[38]
PlayerPad[1][3] := Buttons[39]
PlayerPad[1][4] := Buttons[44]
PlayerPad[1][5] := Buttons[45]
PlayerPad[1][6] := Buttons[46]
PlayerPad[1][7] := Buttons[47]
PlayerPad[1][8] := Buttons[52]
PlayerPad[1][9] := Buttons[53]
PlayerPad[1][10] := Buttons[54]
PlayerPad[1][11] := Buttons[55]
PlayerPad[1][12] := Buttons[60]
PlayerPad[1][13] := Buttons[61]
PlayerPad[1][14] := Buttons[62]
PlayerPad[1][15] := Buttons[63]
// Cartwall Row 1
Cartwall[1] := Buttons[0]
Cartwall[2] := Buttons[1]
Cartwall[3] := Buttons[2]
Cartwall[4] := Buttons[3]
Cartwall[5] := Buttons[4]
Cartwall[6] := Buttons[5]
Cartwall[7] := Buttons[6]
Cartwall[8] := Buttons[7]
// Cartwall Row 2
Cartwall[9] := Buttons[8]
Cartwall[10] := Buttons[9]
Cartwall[11] := Buttons[10]
Cartwall[12] := Buttons[11]
Cartwall[13] := Buttons[12]
Cartwall[14] := Buttons[13]
Cartwall[15] := Buttons[14]
Cartwall[16] := Buttons[15]
result:=true;
end;
function triggerAssistLED(value:integer):boolean;
var
i: integer;
begin
for i := 0 to 7 do
begin
midiout(Launchpad_Device, 176, TopButtons[i], cHighGreen);
end;
end;
function triggeronairLED(value:integer):boolean;
var
i: integer;
begin
midiout(Launchpad_Device, 144, RightButtons[2], cHighRed);
end;
// Called when script is loaded
procedure OnLoad;
begin
initializeLaunchpad(0);
triggerAssistLED(0);
triggeronairLED(0);
Countdown := 0;
//Uncomment to light single button based on button ID
//midiout(Launchpad_Device, 144, RightButtons[0], cHighRed);
end;
// Turn "ON Air" button red
procedure OnOnAir;
begin
midiout(Launchpad_Device, 144, RightButtons[2], cHighRed);
end;
// Turn "ON Air" button off
procedure OnOffAir;
begin
midiout(Launchpad_Device, 144, RightButtons[2], cOff);
end;
// Turn TopButtons Red if Auto mode is active
procedure OnAutomationOn(PlaylistIndex: integer);
var
i: integer;
begin
// Loop for all 8 buttons
for i := 0 to 7 do
begin
midiout(Launchpad_Device, 176, TopButtons[i], cHighRed);
systemlog('Script notification: Trigged Auto Mode');
end;
end;
// Turn TopButtons Green if Assist mode is active
procedure OnAutomationOff(PlaylistIndex: integer);
var
i: integer;
begin
// Loop for all 8 buttons
for i := 0 to 7 do
begin
midiout(Launchpad_Device, 176, TopButtons[i], cHighGreen);
systemlog('Script notification: Trigged Assist Mode');
end;
end;
// Called when (playlist) player changes its state
procedure OnPlayerStateChange(PlaylistIndex: integer; PlayerIndex: integer; OldState: TPlayerState; NewState: TPlayerState; Item: IPlaylistItem);
var p:integer;
begin
if (OldState = psStopped) then
begin
for p := 0 to 15 do
begin
midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cHighAmber);
end;
end
else if (NewState = psLoaded) then
begin
for p := 0 to 15 do
begin
midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cHighGreen);
end;
end
else if (NewState = psEmpty) then
begin
for p := 0 to 15 do
begin
midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cOff);
end;
end
else if (NewState = psPlaying) then
begin
for p := 0 to 15 do
begin
midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cHighRed);
end;
end
else if (NewState = psFading) then
begin
for p := 0 to 15 do
begin
midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cBlinkRed);
end;
end
else if (NewState = psError) then
begin
for p := 0 to 15 do
begin
midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cBlinkYellow);
end;
end
else if (NewState = psLoading) then
begin
for p := 0 to 15 do
begin
midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cBlinkGreen);
end;
end;
end;
// Called when a Cartwall has a State Change
procedure OnCartwallPlayerStateChange(PlayerIndex: integer;
OldState: TPlayerState; NewState: TPlayerState;
Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem;
OnAirMode: TCartwallOnAirMode);
begin
if (OldState = psStopped) then
begin
midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cHighAmber);
end
else if (NewState = psLoaded) then
begin
midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cLowGreen);
end
else if (NewState = psEmpty) then
begin
midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cOff);
end
else if (NewState = psPlaying) then
begin
midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cHighRed);
end
else if (NewState = psFading) then
begin
midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cBlinkRed);
end
else if (NewState = psLoading) then
begin
midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cBlinkGreen);
end
else if (NewState = psStopped) then
begin
midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cHighGreen);
end;
end;
// Called when a MIDI message is received
procedure OnMidiMessage(Device: integer; Status, Data1, Data2: byte);
var
row, i, i_div:integer;
begin
row := 0
i := 0
i_div := 0
// Uncomment to see Data1 value of Data1
//systemlog(Inttostr(Data1));
if(Status = 176) then
begin
// Toggle between AUTO and ASSIST
if (Data1 = 104) and (Data2 = 127) then
begin
ExecuteCommand('AUTOMATION 1 ON/OFF');
end
else if (Data1 = 105) and (Data2 = 127) then
begin
ExecuteCommand('AUTOMATION 1 ON/OFF');
end
else if (Data1 = 106) and (Data2 = 127) then
begin
ExecuteCommand('AUTOMATION 1 ON/OFF');
end
else if (Data1 = 107) and (Data2 = 127) then
begin
ExecuteCommand('AUTOMATION 1 ON/OFF');
end
else if (Data1 = 108) and (Data2 = 127) then
begin
ExecuteCommand('AUTOMATION 1 ON/OFF');
end
else if (Data1 = 109) and (Data2 = 127) then
begin
ExecuteCommand('AUTOMATION 1 ON/OFF');
end
else if (Data1 = 110) and (Data2 = 127) then
begin
ExecuteCommand('AUTOMATION 1 ON/OFF');
end
else if (Data1 = 111) and (Data2 = 127) then
begin
ExecuteCommand('AUTOMATION 1 ON/OFF');
end
end;
if(Status = 144) then
begin
// If any of right button are pressed
if (Data1 = 8) and (Data2 = 127) then
begin
systemlog('Ingen funksjon satt opp');
end
else if (Data1 = 24) and (Data2 = 127) then
begin
systemlog('Ingen funksjon satt opp');
end
else if (Data1 = 40) and (Data2 = 127) then
begin
ExecuteCommand('ON/OFF AIR');
end
else if (Data1 = 56) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL SHOW/HIDE');
end
else if (Data1 = 72) and (Data2 = 127) then
begin
systemlog('Ingen funksjon satt opp');
end
else if (Data1 = 88) and (Data2 = 127) then
begin
systemlog('Ingen funksjon satt opp');
end
else if (Data1 = 104) and (Data2 = 127) then
begin
systemlog('Ingen funksjon satt opp');
end
else if (Data1 = 120) and (Data2 = 127) then
begin
systemlog('Ingen funksjon satt opp');
end
// If any of Row 1 Cartwall are pressed
else if (Data1 = 0) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 1 CLICK');
end
else if (Data1 = 1) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 2 CLICK');
end
else if (Data1 = 2) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 3 CLICK');
end
else if (Data1 = 3) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 4 CLICK');
end
else if (Data1 = 4) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 5 CLICK');
end
else if (Data1 = 5) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 6 CLICK');
end
else if (Data1 = 6) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 7 CLICK');
end
else if (Data1 = 7) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 8 CLICK');
end
// If any of row 2 Cartwall are pressed
else if (Data1 = 16) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 9 CLICK');
end
else if (Data1 = 17) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 10 CLICK');
end
else if (Data1 = 18) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 11 CLICK');
end
else if (Data1 = 19) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 12 CLICK');
end
else if (Data1 = 20) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 13 CLICK');
end
else if (Data1 = 21) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 14 CLICK');
end
else if (Data1 = 22) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 15 CLICK');
end
else if (Data1 = 23) and (Data2 = 127) then
begin
ExecuteCommand('CARTWALL 16 CLICK');
end
// If any of Player 1 Playerpads are pressed
else if (Data1 = 64) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 65) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 66) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 67) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 80) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 81) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 82) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 83) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 96) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 97) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 98) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 99) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 112) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 113) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 114) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
else if (Data1 = 115) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-1 START/FADEOUT');
end
// If any of Player 2 Playerpads are pressed
else if (Data1 = 68) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 69) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 70) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 71) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 84) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 85) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 86) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 87) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 100) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 101) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 102) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 103) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 116) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 117) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 118) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
else if (Data1 = 119) and (Data2 = 127) then
begin
ExecuteCommand('PLAYER 1-2 START/FADEOUT');
end
end;
end;
begin
end.
| 1 | // Launchpad Script |
| 2 | // Written by Thomas Mongstad. |
| 3 | // Inspired by Thomas "Kloppi" Kloppholzs' Mairlist-Launchpad-Script |
| 4 | // https://github.com/Lexorius/Mairlist-Launchpad-Script |
| 5 | // Version 0.1.1 |
| 6 | // https://www.youtube.com/watch?v=BHzI3VjI2l8 |
| 7 | ///////////////////////////////////////////////////////////////////// |
| 8 | |
| 9 | |
| 10 | const |
| 11 | testing = 1; |
| 12 | |
| 13 | Launchpad_Device = 4; |
| 14 | |
| 15 | // Setup LED colours |
| 16 | cOff = 12; // LED - OFF |
| 17 | |
| 18 | cLowRed = 13; // LED low Red |
| 19 | cHighRed = 15; // LED High Red |
| 20 | cBlinkRed = 11; // LED Blink RED |
| 21 | |
| 22 | cLowGreen = 28; // LED low Green |
| 23 | cHighGreen = 60; // LED HIGH Green |
| 24 | cBlinkGreen = 56; // LED BlInK Green |
| 25 | |
| 26 | cLowAmber = 29; // LED low Amber |
| 27 | cHighAmber = 63; // LED High Amber |
| 28 | cBlinkAmber = 59; // LED Blink Amber |
| 29 | |
| 30 | cBlinkYellow = 58; // LED Blink Yellow |
| 31 | cHighYellow = 62; // LED High Yellow |
| 32 | |
| 33 | var |
| 34 | Buttons: array[-1..100] of integer; |
| 35 | RightButtons: array[-1..8] of integer; |
| 36 | TopButtons: array[-1..8] of integer; |
| 37 | Countdown: integer; |
| 38 | PlayerPad : array[-1..10] of array[-1..64] of integer; |
| 39 | Cartwall : array[-1..64] of integer; |
| 40 | |
| 41 | |
| 42 | function initializeLaunchpad(value:integer):boolean; |
| 43 | var |
| 44 | i: integer; |
| 45 | begin |
| 46 | i:=0; |
| 47 | // Listing Midi devices to Log |
| 48 | MidiOutListdevices; |
| 49 | |
| 50 | // Connecting to Launchpad |
| 51 | midioutopen(Launchpad_Device); |
| 52 | |
| 53 | // Clear old LEDs |
| 54 | midiout(Launchpad_Device, 176, 0, 0); |
| 55 | |
| 56 | // Set Timer |
| 57 | midiout(Launchpad_Device, 176, 0, 40); |
| 58 | |
| 59 | // Initialize buttons on the right |
| 60 | RightButtons[0] := 8; |
| 61 | RightButtons[1] := 24; |
| 62 | RightButtons[2] := 40; |
| 63 | RightButtons[3] := 56; |
| 64 | RightButtons[4] := 72; |
| 65 | RightButtons[5] := 88; |
| 66 | RightButtons[6] := 104; |
| 67 | RightButtons[7] := 120; |
| 68 | |
| 69 | // Initialize buttons on the top |
| 70 | TopButtons[0] := 104; |
| 71 | TopButtons[1] := 105; |
| 72 | TopButtons[2] := 106; |
| 73 | TopButtons[3] := 107; |
| 74 | TopButtons[4] := 108; |
| 75 | TopButtons[5] := 109; |
| 76 | TopButtons[6] := 110; |
| 77 | TopButtons[7] := 111; |
| 78 | |
| 79 | // Initialize buttons |
| 80 | // Row 1 |
| 81 | for i := 0 to 7 do |
| 82 | begin |
| 83 | Buttons[i] := i; |
| 84 | end; |
| 85 | |
| 86 | // Row 2 |
| 87 | for i := 8 to 15 do |
| 88 | begin |
| 89 | Buttons[i] := i+8; |
| 90 | end; |
| 91 | |
| 92 | // Row 3 |
| 93 | for i := 16 to 23 do |
| 94 | begin |
| 95 | Buttons[i] := i+16; |
| 96 | end; |
| 97 | |
| 98 | // Row 4 |
| 99 | for i := 24 to 31 do |
| 100 | begin |
| 101 | Buttons[i] := i+24; |
| 102 | end; |
| 103 | |
| 104 | // Row 5 |
| 105 | for i := 32 to 39 do |
| 106 | begin |
| 107 | Buttons[i] := i+32; |
| 108 | end; |
| 109 | |
| 110 | // Row 6 |
| 111 | for i := 40 to 47 do |
| 112 | begin |
| 113 | Buttons[i] := i+40; |
| 114 | end; |
| 115 | |
| 116 | // Row 7 |
| 117 | for i := 48 to 55 do |
| 118 | begin |
| 119 | Buttons[i] := i+48; |
| 120 | end; |
| 121 | |
| 122 | // Row 8 |
| 123 | for i := 56 to 63 do |
| 124 | begin |
| 125 | Buttons[i] := i+56; |
| 126 | end; |
| 127 | |
| 128 | |
| 129 | // Player Pad 1 |
| 130 | PlayerPad[0][0] := Buttons[32] |
| 131 | PlayerPad[0][1] := Buttons[33] |
| 132 | PlayerPad[0][2] := Buttons[34] |
| 133 | PlayerPad[0][3] := Buttons[35] |
| 134 | PlayerPad[0][4] := Buttons[40] |
| 135 | PlayerPad[0][5] := Buttons[41] |
| 136 | PlayerPad[0][6] := Buttons[42] |
| 137 | PlayerPad[0][7] := Buttons[43] |
| 138 | PlayerPad[0][8] := Buttons[48] |
| 139 | PlayerPad[0][9] := Buttons[49] |
| 140 | PlayerPad[0][10] := Buttons[50] |
| 141 | PlayerPad[0][11] := Buttons[51] |
| 142 | PlayerPad[0][12] := Buttons[56] |
| 143 | PlayerPad[0][13] := Buttons[57] |
| 144 | PlayerPad[0][14] := Buttons[58] |
| 145 | PlayerPad[0][15] := Buttons[59] |
| 146 | |
| 147 | // Player Pad 2 |
| 148 | PlayerPad[1][0] := Buttons[36] |
| 149 | PlayerPad[1][1] := Buttons[37] |
| 150 | PlayerPad[1][2] := Buttons[38] |
| 151 | PlayerPad[1][3] := Buttons[39] |
| 152 | PlayerPad[1][4] := Buttons[44] |
| 153 | PlayerPad[1][5] := Buttons[45] |
| 154 | PlayerPad[1][6] := Buttons[46] |
| 155 | PlayerPad[1][7] := Buttons[47] |
| 156 | PlayerPad[1][8] := Buttons[52] |
| 157 | PlayerPad[1][9] := Buttons[53] |
| 158 | PlayerPad[1][10] := Buttons[54] |
| 159 | PlayerPad[1][11] := Buttons[55] |
| 160 | PlayerPad[1][12] := Buttons[60] |
| 161 | PlayerPad[1][13] := Buttons[61] |
| 162 | PlayerPad[1][14] := Buttons[62] |
| 163 | PlayerPad[1][15] := Buttons[63] |
| 164 | |
| 165 | // Cartwall Row 1 |
| 166 | Cartwall[1] := Buttons[0] |
| 167 | Cartwall[2] := Buttons[1] |
| 168 | Cartwall[3] := Buttons[2] |
| 169 | Cartwall[4] := Buttons[3] |
| 170 | Cartwall[5] := Buttons[4] |
| 171 | Cartwall[6] := Buttons[5] |
| 172 | Cartwall[7] := Buttons[6] |
| 173 | Cartwall[8] := Buttons[7] |
| 174 | |
| 175 | // Cartwall Row 2 |
| 176 | Cartwall[9] := Buttons[8] |
| 177 | Cartwall[10] := Buttons[9] |
| 178 | Cartwall[11] := Buttons[10] |
| 179 | Cartwall[12] := Buttons[11] |
| 180 | Cartwall[13] := Buttons[12] |
| 181 | Cartwall[14] := Buttons[13] |
| 182 | Cartwall[15] := Buttons[14] |
| 183 | Cartwall[16] := Buttons[15] |
| 184 | |
| 185 | result:=true; |
| 186 | |
| 187 | end; |
| 188 | |
| 189 | function triggerAssistLED(value:integer):boolean; |
| 190 | var |
| 191 | i: integer; |
| 192 | begin |
| 193 | for i := 0 to 7 do |
| 194 | begin |
| 195 | midiout(Launchpad_Device, 176, TopButtons[i], cHighGreen); |
| 196 | end; |
| 197 | end; |
| 198 | |
| 199 | function triggeronairLED(value:integer):boolean; |
| 200 | var |
| 201 | i: integer; |
| 202 | begin |
| 203 | midiout(Launchpad_Device, 144, RightButtons[2], cHighRed); |
| 204 | end; |
| 205 | |
| 206 | |
| 207 | // Called when script is loaded |
| 208 | procedure OnLoad; |
| 209 | begin |
| 210 | initializeLaunchpad(0); |
| 211 | triggerAssistLED(0); |
| 212 | triggeronairLED(0); |
| 213 | Countdown := 0; |
| 214 | |
| 215 | //Uncomment to light single button based on button ID |
| 216 | //midiout(Launchpad_Device, 144, RightButtons[0], cHighRed); |
| 217 | |
| 218 | end; |
| 219 | |
| 220 | // Turn "ON Air" button red |
| 221 | procedure OnOnAir; |
| 222 | begin |
| 223 | midiout(Launchpad_Device, 144, RightButtons[2], cHighRed); |
| 224 | end; |
| 225 | |
| 226 | // Turn "ON Air" button off |
| 227 | procedure OnOffAir; |
| 228 | begin |
| 229 | midiout(Launchpad_Device, 144, RightButtons[2], cOff); |
| 230 | end; |
| 231 | |
| 232 | // Turn TopButtons Red if Auto mode is active |
| 233 | procedure OnAutomationOn(PlaylistIndex: integer); |
| 234 | var |
| 235 | i: integer; |
| 236 | begin |
| 237 | // Loop for all 8 buttons |
| 238 | for i := 0 to 7 do |
| 239 | begin |
| 240 | midiout(Launchpad_Device, 176, TopButtons[i], cHighRed); |
| 241 | systemlog('Script notification: Trigged Auto Mode'); |
| 242 | |
| 243 | end; |
| 244 | end; |
| 245 | |
| 246 | // Turn TopButtons Green if Assist mode is active |
| 247 | procedure OnAutomationOff(PlaylistIndex: integer); |
| 248 | var |
| 249 | i: integer; |
| 250 | begin |
| 251 | // Loop for all 8 buttons |
| 252 | for i := 0 to 7 do |
| 253 | begin |
| 254 | midiout(Launchpad_Device, 176, TopButtons[i], cHighGreen); |
| 255 | systemlog('Script notification: Trigged Assist Mode'); |
| 256 | end; |
| 257 | end; |
| 258 | |
| 259 | |
| 260 | // Called when (playlist) player changes its state |
| 261 | procedure OnPlayerStateChange(PlaylistIndex: integer; PlayerIndex: integer; OldState: TPlayerState; NewState: TPlayerState; Item: IPlaylistItem); |
| 262 | var p:integer; |
| 263 | begin |
| 264 | |
| 265 | if (OldState = psStopped) then |
| 266 | begin |
| 267 | for p := 0 to 15 do |
| 268 | begin |
| 269 | midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cHighAmber); |
| 270 | end; |
| 271 | end |
| 272 | else if (NewState = psLoaded) then |
| 273 | begin |
| 274 | for p := 0 to 15 do |
| 275 | begin |
| 276 | midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cHighGreen); |
| 277 | end; |
| 278 | end |
| 279 | else if (NewState = psEmpty) then |
| 280 | begin |
| 281 | for p := 0 to 15 do |
| 282 | begin |
| 283 | midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cOff); |
| 284 | end; |
| 285 | end |
| 286 | else if (NewState = psPlaying) then |
| 287 | begin |
| 288 | for p := 0 to 15 do |
| 289 | begin |
| 290 | midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cHighRed); |
| 291 | end; |
| 292 | end |
| 293 | else if (NewState = psFading) then |
| 294 | begin |
| 295 | for p := 0 to 15 do |
| 296 | begin |
| 297 | midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cBlinkRed); |
| 298 | end; |
| 299 | end |
| 300 | else if (NewState = psError) then |
| 301 | begin |
| 302 | for p := 0 to 15 do |
| 303 | begin |
| 304 | midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cBlinkYellow); |
| 305 | end; |
| 306 | end |
| 307 | |
| 308 | else if (NewState = psLoading) then |
| 309 | begin |
| 310 | for p := 0 to 15 do |
| 311 | begin |
| 312 | midiout(Launchpad_Device, 144, PlayerPad[PlayerIndex][p], cBlinkGreen); |
| 313 | end; |
| 314 | end; |
| 315 | |
| 316 | end; |
| 317 | |
| 318 | // Called when a Cartwall has a State Change |
| 319 | procedure OnCartwallPlayerStateChange(PlayerIndex: integer; |
| 320 | OldState: TPlayerState; NewState: TPlayerState; |
| 321 | Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; |
| 322 | OnAirMode: TCartwallOnAirMode); |
| 323 | begin |
| 324 | |
| 325 | if (OldState = psStopped) then |
| 326 | begin |
| 327 | midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cHighAmber); |
| 328 | end |
| 329 | else if (NewState = psLoaded) then |
| 330 | begin |
| 331 | midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cLowGreen); |
| 332 | end |
| 333 | else if (NewState = psEmpty) then |
| 334 | begin |
| 335 | midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cOff); |
| 336 | end |
| 337 | else if (NewState = psPlaying) then |
| 338 | begin |
| 339 | midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cHighRed); |
| 340 | end |
| 341 | else if (NewState = psFading) then |
| 342 | begin |
| 343 | midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cBlinkRed); |
| 344 | end |
| 345 | else if (NewState = psLoading) then |
| 346 | begin |
| 347 | midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cBlinkGreen); |
| 348 | end |
| 349 | else if (NewState = psStopped) then |
| 350 | begin |
| 351 | midiout(Launchpad_Device,144, Cartwall[PlayerIndex],cHighGreen); |
| 352 | end; |
| 353 | |
| 354 | end; |
| 355 | |
| 356 | |
| 357 | |
| 358 | |
| 359 | // Called when a MIDI message is received |
| 360 | procedure OnMidiMessage(Device: integer; Status, Data1, Data2: byte); |
| 361 | var |
| 362 | row, i, i_div:integer; |
| 363 | begin |
| 364 | row := 0 |
| 365 | i := 0 |
| 366 | i_div := 0 |
| 367 | |
| 368 | // Uncomment to see Data1 value of Data1 |
| 369 | //systemlog(Inttostr(Data1)); |
| 370 | |
| 371 | if(Status = 176) then |
| 372 | begin |
| 373 | // Toggle between AUTO and ASSIST |
| 374 | if (Data1 = 104) and (Data2 = 127) then |
| 375 | begin |
| 376 | ExecuteCommand('AUTOMATION 1 ON/OFF'); |
| 377 | end |
| 378 | else if (Data1 = 105) and (Data2 = 127) then |
| 379 | begin |
| 380 | ExecuteCommand('AUTOMATION 1 ON/OFF'); |
| 381 | end |
| 382 | else if (Data1 = 106) and (Data2 = 127) then |
| 383 | begin |
| 384 | ExecuteCommand('AUTOMATION 1 ON/OFF'); |
| 385 | end |
| 386 | else if (Data1 = 107) and (Data2 = 127) then |
| 387 | begin |
| 388 | ExecuteCommand('AUTOMATION 1 ON/OFF'); |
| 389 | end |
| 390 | else if (Data1 = 108) and (Data2 = 127) then |
| 391 | begin |
| 392 | ExecuteCommand('AUTOMATION 1 ON/OFF'); |
| 393 | end |
| 394 | else if (Data1 = 109) and (Data2 = 127) then |
| 395 | begin |
| 396 | ExecuteCommand('AUTOMATION 1 ON/OFF'); |
| 397 | end |
| 398 | else if (Data1 = 110) and (Data2 = 127) then |
| 399 | begin |
| 400 | ExecuteCommand('AUTOMATION 1 ON/OFF'); |
| 401 | end |
| 402 | else if (Data1 = 111) and (Data2 = 127) then |
| 403 | begin |
| 404 | ExecuteCommand('AUTOMATION 1 ON/OFF'); |
| 405 | end |
| 406 | |
| 407 | end; |
| 408 | |
| 409 | if(Status = 144) then |
| 410 | begin |
| 411 | // If any of right button are pressed |
| 412 | if (Data1 = 8) and (Data2 = 127) then |
| 413 | begin |
| 414 | systemlog('Ingen funksjon satt opp'); |
| 415 | end |
| 416 | else if (Data1 = 24) and (Data2 = 127) then |
| 417 | begin |
| 418 | systemlog('Ingen funksjon satt opp'); |
| 419 | end |
| 420 | else if (Data1 = 40) and (Data2 = 127) then |
| 421 | begin |
| 422 | ExecuteCommand('ON/OFF AIR'); |
| 423 | end |
| 424 | else if (Data1 = 56) and (Data2 = 127) then |
| 425 | begin |
| 426 | ExecuteCommand('CARTWALL SHOW/HIDE'); |
| 427 | end |
| 428 | else if (Data1 = 72) and (Data2 = 127) then |
| 429 | begin |
| 430 | systemlog('Ingen funksjon satt opp'); |
| 431 | end |
| 432 | else if (Data1 = 88) and (Data2 = 127) then |
| 433 | begin |
| 434 | systemlog('Ingen funksjon satt opp'); |
| 435 | end |
| 436 | else if (Data1 = 104) and (Data2 = 127) then |
| 437 | begin |
| 438 | systemlog('Ingen funksjon satt opp'); |
| 439 | end |
| 440 | else if (Data1 = 120) and (Data2 = 127) then |
| 441 | begin |
| 442 | systemlog('Ingen funksjon satt opp'); |
| 443 | end |
| 444 | |
| 445 | // If any of Row 1 Cartwall are pressed |
| 446 | else if (Data1 = 0) and (Data2 = 127) then |
| 447 | begin |
| 448 | ExecuteCommand('CARTWALL 1 CLICK'); |
| 449 | end |
| 450 | else if (Data1 = 1) and (Data2 = 127) then |
| 451 | begin |
| 452 | ExecuteCommand('CARTWALL 2 CLICK'); |
| 453 | end |
| 454 | else if (Data1 = 2) and (Data2 = 127) then |
| 455 | begin |
| 456 | ExecuteCommand('CARTWALL 3 CLICK'); |
| 457 | end |
| 458 | else if (Data1 = 3) and (Data2 = 127) then |
| 459 | begin |
| 460 | ExecuteCommand('CARTWALL 4 CLICK'); |
| 461 | end |
| 462 | else if (Data1 = 4) and (Data2 = 127) then |
| 463 | begin |
| 464 | ExecuteCommand('CARTWALL 5 CLICK'); |
| 465 | end |
| 466 | else if (Data1 = 5) and (Data2 = 127) then |
| 467 | begin |
| 468 | ExecuteCommand('CARTWALL 6 CLICK'); |
| 469 | end |
| 470 | else if (Data1 = 6) and (Data2 = 127) then |
| 471 | begin |
| 472 | ExecuteCommand('CARTWALL 7 CLICK'); |
| 473 | end |
| 474 | else if (Data1 = 7) and (Data2 = 127) then |
| 475 | begin |
| 476 | ExecuteCommand('CARTWALL 8 CLICK'); |
| 477 | end |
| 478 | |
| 479 | // If any of row 2 Cartwall are pressed |
| 480 | else if (Data1 = 16) and (Data2 = 127) then |
| 481 | begin |
| 482 | ExecuteCommand('CARTWALL 9 CLICK'); |
| 483 | end |
| 484 | else if (Data1 = 17) and (Data2 = 127) then |
| 485 | begin |
| 486 | ExecuteCommand('CARTWALL 10 CLICK'); |
| 487 | end |
| 488 | else if (Data1 = 18) and (Data2 = 127) then |
| 489 | begin |
| 490 | ExecuteCommand('CARTWALL 11 CLICK'); |
| 491 | end |
| 492 | else if (Data1 = 19) and (Data2 = 127) then |
| 493 | begin |
| 494 | ExecuteCommand('CARTWALL 12 CLICK'); |
| 495 | end |
| 496 | else if (Data1 = 20) and (Data2 = 127) then |
| 497 | begin |
| 498 | ExecuteCommand('CARTWALL 13 CLICK'); |
| 499 | end |
| 500 | else if (Data1 = 21) and (Data2 = 127) then |
| 501 | begin |
| 502 | ExecuteCommand('CARTWALL 14 CLICK'); |
| 503 | end |
| 504 | else if (Data1 = 22) and (Data2 = 127) then |
| 505 | begin |
| 506 | ExecuteCommand('CARTWALL 15 CLICK'); |
| 507 | end |
| 508 | else if (Data1 = 23) and (Data2 = 127) then |
| 509 | begin |
| 510 | ExecuteCommand('CARTWALL 16 CLICK'); |
| 511 | end |
| 512 | |
| 513 | |
| 514 | // If any of Player 1 Playerpads are pressed |
| 515 | else if (Data1 = 64) and (Data2 = 127) then |
| 516 | begin |
| 517 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 518 | end |
| 519 | else if (Data1 = 65) and (Data2 = 127) then |
| 520 | begin |
| 521 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 522 | end |
| 523 | else if (Data1 = 66) and (Data2 = 127) then |
| 524 | begin |
| 525 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 526 | end |
| 527 | else if (Data1 = 67) and (Data2 = 127) then |
| 528 | begin |
| 529 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 530 | end |
| 531 | else if (Data1 = 80) and (Data2 = 127) then |
| 532 | begin |
| 533 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 534 | end |
| 535 | else if (Data1 = 81) and (Data2 = 127) then |
| 536 | begin |
| 537 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 538 | end |
| 539 | else if (Data1 = 82) and (Data2 = 127) then |
| 540 | begin |
| 541 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 542 | end |
| 543 | else if (Data1 = 83) and (Data2 = 127) then |
| 544 | begin |
| 545 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 546 | end |
| 547 | else if (Data1 = 96) and (Data2 = 127) then |
| 548 | begin |
| 549 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 550 | end |
| 551 | else if (Data1 = 97) and (Data2 = 127) then |
| 552 | begin |
| 553 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 554 | end |
| 555 | else if (Data1 = 98) and (Data2 = 127) then |
| 556 | begin |
| 557 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 558 | end |
| 559 | else if (Data1 = 99) and (Data2 = 127) then |
| 560 | begin |
| 561 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 562 | end |
| 563 | else if (Data1 = 112) and (Data2 = 127) then |
| 564 | begin |
| 565 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 566 | end |
| 567 | else if (Data1 = 113) and (Data2 = 127) then |
| 568 | begin |
| 569 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 570 | end |
| 571 | else if (Data1 = 114) and (Data2 = 127) then |
| 572 | begin |
| 573 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 574 | end |
| 575 | else if (Data1 = 115) and (Data2 = 127) then |
| 576 | begin |
| 577 | ExecuteCommand('PLAYER 1-1 START/FADEOUT'); |
| 578 | end |
| 579 | |
| 580 | |
| 581 | // If any of Player 2 Playerpads are pressed |
| 582 | else if (Data1 = 68) and (Data2 = 127) then |
| 583 | begin |
| 584 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 585 | end |
| 586 | else if (Data1 = 69) and (Data2 = 127) then |
| 587 | begin |
| 588 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 589 | end |
| 590 | else if (Data1 = 70) and (Data2 = 127) then |
| 591 | begin |
| 592 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 593 | end |
| 594 | else if (Data1 = 71) and (Data2 = 127) then |
| 595 | begin |
| 596 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 597 | end |
| 598 | else if (Data1 = 84) and (Data2 = 127) then |
| 599 | begin |
| 600 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 601 | end |
| 602 | else if (Data1 = 85) and (Data2 = 127) then |
| 603 | begin |
| 604 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 605 | end |
| 606 | else if (Data1 = 86) and (Data2 = 127) then |
| 607 | begin |
| 608 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 609 | end |
| 610 | else if (Data1 = 87) and (Data2 = 127) then |
| 611 | begin |
| 612 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 613 | end |
| 614 | else if (Data1 = 100) and (Data2 = 127) then |
| 615 | begin |
| 616 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 617 | end |
| 618 | else if (Data1 = 101) and (Data2 = 127) then |
| 619 | begin |
| 620 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 621 | end |
| 622 | else if (Data1 = 102) and (Data2 = 127) then |
| 623 | begin |
| 624 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 625 | end |
| 626 | else if (Data1 = 103) and (Data2 = 127) then |
| 627 | begin |
| 628 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 629 | end |
| 630 | else if (Data1 = 116) and (Data2 = 127) then |
| 631 | begin |
| 632 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 633 | end |
| 634 | else if (Data1 = 117) and (Data2 = 127) then |
| 635 | begin |
| 636 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 637 | end |
| 638 | else if (Data1 = 118) and (Data2 = 127) then |
| 639 | begin |
| 640 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 641 | end |
| 642 | else if (Data1 = 119) and (Data2 = 127) then |
| 643 | begin |
| 644 | ExecuteCommand('PLAYER 1-2 START/FADEOUT'); |
| 645 | end |
| 646 | end; |
| 647 | end; |
| 648 | |
| 649 | |
| 650 | begin |
| 651 | end. |