/* NanoSync MIDI Clock --> Nanoloop 1.x sync by Sebastian Tomczak May 2008 */ // Serial Variables int baud = 31250; // MIDI Real Time Bytes byte midi_start = 0xfa; byte midi_stop = 0xfc; byte midi_clock = 0xf8; // Working Variables and Pins int nano_flip = 0; int nano_pin = 2; int play_flag = 0; byte data; // Setup void setup() { Serial.begin(baud); pinMode(nano_pin, OUTPUT); } // Program void loop() { if(Serial.available() > 0) { data = Serial.read(); if(data == midi_start) { play_flag = 1; } else if(data == midi_stop) { play_flag = 0; nano_flip = 0; } else if((data == midi_clock) && (play_flag == 1)) { nanoSync(); } } } // Functions void nanoSync() { if(nano_flip == 0) { digitalWrite(nano_pin, LOW); nano_flip = 1; } else if(nano_flip == 1) { digitalWrite(nano_pin, HIGH); nano_flip = 0; } }