//INCLUDING & INITIALISING MIDI LIBRARY #include #include #include #include #include MIDI_CREATE_INSTANCE(HardwareSerial, Serial, MIDI); //GLOBAL VARIABLES int midi_channel = 1; int vel = 200; int SCALE[64]; int CHORD = 0; int Bend = 0; bool Press = false; int noteDecay[64]; void setup() { //THIS DELAY MAKES SURE YOUR ARDUINO DOESN'T BREAK delay(3000); //BUTTON SETUP pinMode(2, INPUT); pinMode(3, INPUT); pinMode(5, INPUT); pinMode(9, INPUT); pinMode(10, INPUT); pinMode(11, INPUT); pinMode(12, INPUT); pinMode(7, INPUT); pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(A3, INPUT); pinMode(A4, INPUT); pinMode(A5, INPUT); //MIDI SETUP MIDI.begin(midi_channel); Serial.begin(9600); //ALL THE MIDI NOTES IN THE SCALE OF C MAJOR SCALE[0] = 36; SCALE[1] = 38; SCALE[2] = 40; SCALE[3] = 41; SCALE[4] = 43; SCALE[5] = 45; SCALE[6] = 47; SCALE[7] = 36 + 12; SCALE[8] = 38 + 12; SCALE[9] = 40 + 12; SCALE[10] = 41 + 12; SCALE[11] = 43 + 12; SCALE[12] = 45 + 12; SCALE[13] = 47 + 12; SCALE[14] = 36 + 24; SCALE[15] = 38 + 24; SCALE[16] = 40 + 24; SCALE[17] = 41 + 24; SCALE[18] = 43 + 24; SCALE[19] = 45 + 24; SCALE[20] = 47 + 24; SCALE[21] = 48 + 24; SCALE[22] = 50 + 24; SCALE[23] = 52 + 24; } void loop() { //BENDING MELODY NOTES if (digitalRead(3) == HIGH) { Bend = 1; } else if (digitalRead(5) == HIGH) { Bend = -1; } else { Bend = 0; } //PLAYING MELODY NOTES if (digitalRead(9) == HIGH) { MIDI.sendNoteOn(SCALE[CHORD + 7 +Bend], vel, midi_channel); delay(100); MIDI.sendNoteOff(SCALE[CHORD + 7+1], vel, midi_channel); MIDI.sendNoteOff(SCALE[CHORD + 7], vel, midi_channel); MIDI.sendNoteOff(SCALE[CHORD + 7-1], vel, midi_channel);} if (digitalRead(10) == HIGH) { MIDI.sendNoteOn(SCALE[CHORD + 9+Bend], vel, midi_channel); delay(100); MIDI.sendNoteOff(SCALE[CHORD + 9+1], vel, midi_channel); MIDI.sendNoteOff(SCALE[CHORD + 9], vel, midi_channel); MIDI.sendNoteOff(SCALE[CHORD + 9-1], vel, midi_channel);} if (digitalRead(11) == HIGH) { MIDI.sendNoteOn(SCALE[CHORD + 11+Bend], vel, midi_channel); delay(100); MIDI.sendNoteOff(SCALE[CHORD + 11+1], vel, midi_channel); MIDI.sendNoteOff(SCALE[CHORD + 11], vel, midi_channel); MIDI.sendNoteOff(SCALE[CHORD + 11-1], vel, midi_channel);} if (digitalRead(12) == HIGH) { MIDI.sendNoteOn(SCALE[CHORD + 14+Bend], vel, midi_channel); delay(100); MIDI.sendNoteOff(SCALE[CHORD + 14+1], vel, midi_channel); MIDI.sendNoteOff(SCALE[CHORD + 14], vel, midi_channel); MIDI.sendNoteOff(SCALE[CHORD + 14-1], vel, midi_channel);} //CHANGING CHORDS if (digitalRead(A2) == HIGH) { if (CHORD != 0) {MIDI.sendNoteOff(SCALE[1], vel, midi_channel); MIDI.sendNoteOff(SCALE[2], vel, midi_channel); MIDI.sendNoteOff(SCALE[3], vel, midi_channel); MIDI.sendNoteOff(SCALE[4], vel, midi_channel); MIDI.sendNoteOff(SCALE[5], vel, midi_channel); MIDI.sendNoteOff(SCALE[6], vel, midi_channel); MIDI.sendNoteOn(SCALE[0], vel, midi_channel);} CHORD = 0; } if (digitalRead(7) == HIGH) { if (CHORD != 1) {MIDI.sendNoteOff(SCALE[0], vel, midi_channel); MIDI.sendNoteOff(SCALE[2], vel, midi_channel); MIDI.sendNoteOff(SCALE[3], vel, midi_channel); MIDI.sendNoteOff(SCALE[4], vel, midi_channel); MIDI.sendNoteOff(SCALE[5], vel, midi_channel); MIDI.sendNoteOff(SCALE[6], vel, midi_channel); MIDI.sendNoteOn(SCALE[1], vel, midi_channel);} CHORD = 1; } if (digitalRead(A3) == HIGH) { if (CHORD != 2) { MIDI.sendNoteOff(SCALE[0], vel, midi_channel); MIDI.sendNoteOff(SCALE[1], vel, midi_channel); MIDI.sendNoteOff(SCALE[3], vel, midi_channel); MIDI.sendNoteOff(SCALE[4], vel, midi_channel); MIDI.sendNoteOff(SCALE[5], vel, midi_channel); MIDI.sendNoteOff(SCALE[6], vel, midi_channel); MIDI.sendNoteOn(SCALE[2], vel, midi_channel);} CHORD = 2; } if (digitalRead(A0) == HIGH) { if (CHORD != 3) { MIDI.sendNoteOff(SCALE[0], vel, midi_channel); MIDI.sendNoteOff(SCALE[1], vel, midi_channel); MIDI.sendNoteOff(SCALE[2], vel, midi_channel); MIDI.sendNoteOff(SCALE[4], vel, midi_channel); MIDI.sendNoteOff(SCALE[5], vel, midi_channel); MIDI.sendNoteOff(SCALE[6], vel, midi_channel); MIDI.sendNoteOn(SCALE[3], vel, midi_channel);} CHORD = 3; } if (digitalRead(A4) == HIGH) { if (CHORD != 4) { MIDI.sendNoteOff(SCALE[0], vel, midi_channel); MIDI.sendNoteOff(SCALE[1], vel, midi_channel); MIDI.sendNoteOff(SCALE[3], vel, midi_channel); MIDI.sendNoteOff(SCALE[2], vel, midi_channel); MIDI.sendNoteOff(SCALE[5], vel, midi_channel); MIDI.sendNoteOff(SCALE[6], vel, midi_channel); MIDI.sendNoteOn(SCALE[4], vel, midi_channel);} CHORD = 4; } if (digitalRead(A1) == HIGH) { if (CHORD != 5) { MIDI.sendNoteOff(SCALE[0], vel, midi_channel); MIDI.sendNoteOff(SCALE[1], vel, midi_channel); MIDI.sendNoteOff(SCALE[3], vel, midi_channel); MIDI.sendNoteOff(SCALE[4], vel, midi_channel); MIDI.sendNoteOff(SCALE[2], vel, midi_channel); MIDI.sendNoteOff(SCALE[6], vel, midi_channel); MIDI.sendNoteOn(SCALE[5], vel, midi_channel);} CHORD = 5; } if (digitalRead(A5) == HIGH) { if (CHORD != 6) { MIDI.sendNoteOff(SCALE[0], vel, midi_channel); MIDI.sendNoteOff(SCALE[1], vel, midi_channel); MIDI.sendNoteOff(SCALE[3], vel, midi_channel); MIDI.sendNoteOff(SCALE[4], vel, midi_channel); MIDI.sendNoteOff(SCALE[5], vel, midi_channel); MIDI.sendNoteOff(SCALE[2], vel, midi_channel); MIDI.sendNoteOn(SCALE[6], vel, midi_channel);} CHORD = 6; } }