Code:
int led1 = 8;
int led2 = 9;
int led3 = 10;
int led4 = 11;
int pot1 = A18;
int pot2 = A17;
int pot3 = A16;
int pot4 = A15;
int delayPot = A14;
int mappedDelay = 0;
int note1 = 0;
int note2 = 0;
int note3 = 0;
int note4 = 0;
int onSwitch = 32;
int octaveSwitch = 31;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(onSwitch, INPUT);
pinMode(octaveSwitch, INPUT);
}
void loop() {
checkOnSwitch(); //create function that checks on switch
}
void checkOnSwitch() { //on switch controls the rest of the code
if (digitalRead(onSwitch) == HIGH and digitalRead(octaveSwitch) == HIGH) { //create functions for octave switch
octaveHigh();
} if (digitalRead(onSwitch) == HIGH and digitalRead(octaveSwitch) == LOW) {
octaveLow();
}
}
void octaveHigh() {
mappedDelay = map(analogRead(delayPot), 0, 1023, 100, 1000); //this controls the delay pot which controls the speed of the sequencer
note1 = map(analogRead(pot1), 0, 1023, 60, 72); //tell all four pots to control a specific note and then turn it off
usbMIDI.sendNoteOn(note1 + 12, 127, 1); //+12 for one octave higher
digitalWrite(led1, HIGH);
delay(mappedDelay);
usbMIDI.sendNoteOff(note1 + 12, 0, 1);
digitalWrite(led1, LOW);
note2 = map(analogRead(pot2), 0, 1023, 60, 72);
usbMIDI.sendNoteOn(note2 + 12, 127, 1);
digitalWrite(led2, HIGH);
delay(mappedDelay);
usbMIDI.sendNoteOff(note2 + 12, 0, 1);
digitalWrite(led2, LOW);
note3 = map(analogRead(pot3), 0, 1023, 60, 72);
usbMIDI.sendNoteOn(note3 + 12, 127, 1);
digitalWrite(led3, HIGH);
delay(mappedDelay);
usbMIDI.sendNoteOff(note3 + 12, 0, 1);
digitalWrite(led3, LOW);
note4 = map(analogRead(pot4), 0, 1023, 60, 72);
usbMIDI.sendNoteOn(note4 + 12, 127, 1);
digitalWrite(led4, HIGH);
delay(mappedDelay);
usbMIDI.sendNoteOff(note4 + 12, 0, 1);
digitalWrite(led4, LOW);
}
void octaveLow() {
mappedDelay = map(analogRead(delayPot), 0, 1023, 100, 1000); //this function is the same as the octaveHigh function
note1 = map(analogRead(pot1), 0, 1023, 60, 72); //but does not include the +12 on each note
usbMIDI.sendNoteOn(note1, 127, 1);
digitalWrite(led1, HIGH);
delay(mappedDelay);
usbMIDI.sendNoteOff(note1, 0, 1);
digitalWrite(led1, LOW);
note2 = map(analogRead(pot2), 0, 1023, 60, 72);
usbMIDI.sendNoteOn(note2, 127, 1);
digitalWrite(led2, HIGH);
delay(mappedDelay);
usbMIDI.sendNoteOff(note2, 0, 1);
digitalWrite(led2, LOW);
note3 = map(analogRead(pot3), 0, 1023, 60, 72);
usbMIDI.sendNoteOn(note3, 127, 1);
digitalWrite(led3, HIGH);
delay(mappedDelay);
usbMIDI.sendNoteOff(note3, 0, 1);
digitalWrite(led3, LOW);
note4 = map(analogRead(pot4), 0, 1023, 60, 72);
usbMIDI.sendNoteOn(note4, 127, 1);
digitalWrite(led4, HIGH);
delay(mappedDelay);
usbMIDI.sendNoteOff(note4, 0, 1);
digitalWrite(led4, LOW);
}