Code:
int ledPins[4] = {8, 9, 10, 11};
int numLedPins = 4;
int potPins[4] = {A18, A17, A16, A15};
int numPotPins = 4;
int notes[4] = {0, 0, 0, 0};
int mappedNotes[4] = {0, 0, 0, 0};
int delayPot = A14;
int mappedDelay = 0;
int onSwitch = 32;
int backwardSwitch = 31;
int octaveSwitch = 30;
void setup() {
pinMode(onSwitch, INPUT);
pinMode(backwardSwitch, INPUT);
pinMode(octaveSwitch, INPUT);
for (int i = 0; i < numLedPins; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
checkOnSwitch(); //create function that checks on switch
}
void checkOnSwitch() {
mappedDelay = map(analogRead(delayPot), 0, 1023, 100, 1000);
if (digitalRead(onSwitch) == HIGH) {
if (digitalRead(backwardSwitch) == HIGH) {
playForward();
} else {
playBackward();
}
}
}
void playForward() {
for (int i = 0; i < numLedPins; i++) {
notes[i] = analogRead(potPins[i]);
}
for (int i = 0; i < numPotPins; i++) {
mappedNotes[i] = map(notes[i], 0, 1023, 60, 72);
}
if (digitalRead(octaveSwitch) == HIGH) {
for (int i = 0; i < numPotPins; i++) {
mappedNotes[i] = map(notes[i], 0, 1023, 72, 84);
}
}
for (int i = 0; i < numPotPins; i++) {
usbMIDI.sendNoteOn(mappedNotes[i], 127, 1);
digitalWrite(ledPins[i], HIGH);
delay(mappedDelay);
usbMIDI.sendNoteOff(mappedNotes[i], 0, 1);
digitalWrite(ledPins[i], LOW);
}
}
void playBackward() {
for (int i = 0; i < numLedPins; i++) {
notes[i] = analogRead(potPins[i]);
}
for (int i = 0; i < numPotPins; i++) {
mappedNotes[i] = map(notes[i], 0, 1023, 60, 72);
}
if (digitalRead(octaveSwitch) == HIGH) {
for (int i = 0; i < numPotPins; i++) {
mappedNotes[i] = map(notes[i], 0, 1023, 72, 84);
}
}
for (int i = 4; i >= 0; i--) {
usbMIDI.sendNoteOn(mappedNotes[i], 127, 1);
digitalWrite(ledPins[i], HIGH);
delay(mappedDelay);
usbMIDI.sendNoteOff(mappedNotes[i], 0, 1);
digitalWrite(ledPins[i], LOW);
}
}