Aidan Singh
The distinction between the arpeggiator + keyboardd and arpeggiatorMode + keyboardMode functions is that the first two take an integer as an input and have no relation to buttons being pressed, and the “Mode” functions read the buttons and activate the first functions with pitches according to the inputs.
int potValue=0;
int ledPin1 = 28;
int ledPin2 = 29;
int ledPin3 = 30;
int ledPin4 = 31;
int pause=0;
int buttonPin1 = 33;
int buttonPin2 = 34;
int buttonPin3 = 35;
int buttonPin4 = 36;
int buttonPin5 = 37;
int buttonPin6 = 38;
void setup() {
Serial.begin(9600);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(buttonPin4, INPUT);
pinMode(buttonPin5, INPUT);
pinMode(buttonPin6, INPUT);
}
void arpeggio(int note){
pause = potValue;
usbMIDI.sendNoteOn(note,90,1);
digitalWrite(ledPin1, HIGH);
delay(pause);
digitalWrite(ledPin1, LOW);
usbMIDI.sendNoteOff(note,0,1);
usbMIDI.sendNoteOn(note+4,90,1);
digitalWrite(ledPin2, HIGH);
delay(pause);
digitalWrite(ledPin2, LOW);
usbMIDI.sendNoteOff(note+4,0,1);
usbMIDI.sendNoteOn(note+7,90,1);
digitalWrite(ledPin3, HIGH);
delay(pause);
digitalWrite(ledPin3, LOW);
usbMIDI.sendNoteOff(note+7,0,1);
usbMIDI.sendNoteOn(note+11,90,1);
digitalWrite(ledPin4, HIGH);
delay(pause);
digitalWrite(ledPin4, LOW);
usbMIDI.sendNoteOff(note+11,0,1);
}
void keyboardd(int note){
usbMIDI.sendNoteOn(note,90,1);
delay(pause);
usbMIDI.sendNoteOff(note,0,1);
}
void arpeggiatorMode(){
potValue = analogRead(A13);
pause = potValue;
int octave = 0;
if(digitalRead(buttonPin6) == HIGH) {
octave=12;
}
if(digitalRead(buttonPin1) == HIGH) {
arpeggio(60+octave);
}
if(digitalRead(buttonPin2) == HIGH) {
arpeggio(64+octave);
}
if(digitalRead(buttonPin3) == HIGH){
arpeggio(67+octave);
}
if(digitalRead(buttonPin4) == HIGH){
arpeggio(71+octave);
}
}
void keyboardMode(){
potValue = analogRead(A13);
pause = potValue;
int octave = 0;
if(digitalRead(buttonPin6) == HIGH) {
octave=12;
}
if(digitalRead(buttonPin1) == HIGH) {
digitalWrite(ledPin1, HIGH);
keyboardd(60+octave);
digitalWrite(ledPin1, LOW);
}
if(digitalRead(buttonPin2) == HIGH) {
digitalWrite(ledPin2, HIGH);
keyboardd(64+octave);
digitalWrite(ledPin2, LOW);
}
if(digitalRead(buttonPin3) == HIGH){
digitalWrite(ledPin3, HIGH);
keyboardd(67+octave);
digitalWrite(ledPin3, LOW);
}
if(digitalRead(buttonPin4) == HIGH){
digitalWrite(ledPin4, HIGH);
keyboardd(71+octave);
digitalWrite(ledPin4, LOW);
}
}
void loop(){
if(digitalRead(buttonPin5) == HIGH){
keyboardMode();
}
if(digitalRead(buttonPin5) == LOW){
arpeggiatorMode();
}
}