#include // Currently always asume with 2 pedals //8 LEDs and Pin is 11 Adafruit_NeoPixel leds = Adafruit_NeoPixel(8, 11, NEO_GRB + NEO_KHZ800); uint16_t gdef = 0; uint16_t rdef = 50; uint16_t bdef = 150; bool oldValues[8] = { 1, 1, 1, 1, 1, 1, 1, 1 }; //byte counter; byte CLOCK = 248; byte START = 250; byte CONTINUE = 251; byte STOP = 252; uint8_t pins[8] = { 17, 16, 15, 14, 2, 4, 3, 5 }; int tempState = 1; int time = 0; int bar = 1; int pedalNote = 10; int clearNote = 9; void tick8() { if (time == 24) time = 0; if (bar >= 8) bar = 0; if (time == 0) { for (uint16_t i = 0; i < leds.numPixels(); i++) { leds.setPixelColor(i, gdef, rdef, bdef); } leds.setPixelColor(bar, 255, 255, 255); leds.show(); } if (time == 0) bar++; time++; } void tickSimple() { if (time == 24) time = 0; if (bar >= 4) bar = 0; if ((time == 0) && (bar == 0)) { leds.setPixelColor(0, 0, 0, 255); leds.setPixelColor(1, 0, 0, 255); leds.show(); } if (time == 3) { leds.setPixelColor(0, 0, 0, 0); leds.setPixelColor(1, 0, 0, 0); leds.show(); } if ((time == 0) && (bar != 0)) { leds.setPixelColor(0, 0, 255, 0); leds.setPixelColor(1, 0, 255, 0); leds.show(); } if (time == 0) bar++; time++; } void goClock() { time = 0; bar = 0; } void stopClock() { for (uint16_t i = 0; i < leds.numPixels(); i++) { leds.setPixelColor(i, gdef, rdef, bdef); } leds.show(); } void RealTimeSystem(byte realtimebyte) { if (realtimebyte == 248) { tick8(); } if (realtimebyte == START || realtimebyte == CONTINUE) { goClock(); } if (realtimebyte == STOP) { stopClock(); } } void setup() { for (int i = 0; i < 8; i++) { pinMode(pins[i], INPUT_PULLUP); } pinMode(13, OUTPUT); //LED //MIDI.begin(MIDI_CHANNEL_OMNI); // MIDI.setHandleClock(tick); //MIDI.setHandleStart(goClock); // // MIDI.setHandleContinue(goClock); //MIDI.setHandleStop(stopClock); //Modeled // digitalWrite(11,HIGH); usbMIDI.setHandleRealTimeSystem(RealTimeSystem); leds.begin(); leds.show(); for (uint16_t i = 0; i < leds.numPixels(); i++) { leds.setPixelColor(i, gdef, rdef, bdef); } leds.show(); } void loop() { usbMIDI.read(); for (int i = 0; i < 8; i++) { //Ned ganz tempState = digitalRead(pins[i]); if (tempState != oldValues[i - 2]) { // debouncetime delay(1); tempState = digitalRead(pins[i]); if (tempState != oldValues[i - 2]) { /* if(i == 10) { if(tempState == 0) MIDI.sendNoteOn(pedalNote, 127, 1); else MIDI.sendNoteOff(pedalNote, 0, 1); } else if(i == 7) { if(tempState == 0){ if(pedalNote == 10) { pedalNote = 11; clearNote = 13; digitalWrite(11,LOW); } else{ pedalNote = 10; clearNote = 9; digitalWrite(11,HIGH); } } } else if(i == 9) { if(tempState == 0) MIDI.sendNoteOn(clearNote, 127, 1); else MIDI.sendNoteOff(clearNote, 0, 1); } else {*/ if (tempState == 0) { usbMIDI.sendNoteOn(i, 127, 1); leds.setPixelColor(i, 0, 255, 0); leds.show(); } else { usbMIDI.sendNoteOff(i, 0, 1); leds.setPixelColor(i, gdef, rdef, bdef); leds.show(); } // } } } oldValues[i - 2] = tempState; } }