Code:
const int channel = 1; // MIDI channel
const int D_PINS = 13; // number of Digital PINS for swith on/off
const int L_PINS = 10; // number of Digital PINS for swith on1/off/on2
// define the pins and notes
const int SW2[D_PINS] = {36, 34, 32, 30, 33, 35, 3, 17, 20, 7, 5, 23, 4};
const int MIDI_SW2[D_PINS] = {95, 94, 93, 92, 90, 89, 88, 87, 86, 85, 84, 83 ,82 };
const int SW3_1[L_PINS] = {16, 39, 41, 24, 26, 37, 18, 22, 19, 29};
const int SW3_2[L_PINS] = {9, 25, 15, 14, 38, 27, 6, 21, 8, 31};
const int MIDI_SW3[L_PINS] = {96, 97, 98, 99, 100, 101, 106, 107, 111, 102};
const int SW4_1 = 1; // SW4_1/SW4_2 is logic control for VCF (12db/24db/hp/bp)
const int SW4_2 = 2; //Switch on1/on2/on3/on4
const int MIDI_SW4 = 112; //note for Switch (12db/24db/hp/bp)
const boolean toggled = true;
boolean state[D_PINS];
void setup() {
usbMIDI.setHandleControlChange(OnControlChange);
for (int i=0;i<D_PINS;i++){
pinMode(SW2[i], OUTPUT);
digitalWrite(SW2[i], LOW); // Toutes les pins out ont pour valeur LOW
}
for (int j=0;j<L_PINS;j++){
pinMode(SW3_1[j], OUTPUT);
digitalWrite(SW3_1[j], LOW); // Toutes les pins out ont pour valeur LOW
pinMode(SW3_2[j], OUTPUT);
digitalWrite(SW3_2[j], LOW);
pinMode(SW4_1, OUTPUT);
pinMode(SW4_2, OUTPUT);
digitalWrite(SW4_1, LOW);
digitalWrite(SW4_2, LOW);
}
}
void loop() {
usbMIDI.read();
}
void OnControlChange(byte channel, byte controller, byte value)
{ for (int i = 0; i < D_PINS ; i++)
{ if (MIDI_SW2[i] == controller)
{ if (value >= 64)
{ digitalWrite(SW2[i], HIGH);
state[i] = true;
} else {
digitalWrite(SW2[i], LOW);
state[i] = false;
}
}
}
for (int j = 0; j < L_PINS ; j++)
{ if (MIDI_SW3[j] == controller)
{ if (value >= 84)
{ digitalWrite(SW3_1[j], HIGH);
digitalWrite(SW3_2[j], LOW);
state[j] = true;
}
else if (value < 84 && value > 42)
{ digitalWrite(SW3_1[j], LOW);
digitalWrite(SW3_2[j], LOW);
state[j] = false;
}
else if (value < 42)
{ digitalWrite(SW3_1[j], LOW);
digitalWrite(SW3_2[j], HIGH);
state[j] = true;
}
}
}
{ if (MIDI_SW4 == controller)
{ if (value >= 96)
{ digitalWrite(SW4_1, HIGH);
digitalWrite(SW4_2, LOW);
}
else if (value < 96 && value > 64)
{ digitalWrite(SW4_1, LOW);
digitalWrite(SW4_2, LOW);
}
else if (value < 64 && value > 32)
{ digitalWrite(SW4_1, LOW);
digitalWrite(SW4_2, HIGH);
}
else if (value < 32)
{ digitalWrite(SW4_1,HIGH);
digitalWrite(SW4_2, HIGH);
}
}
}
}