From 2c493f7dec89678f3297d590c9ca81cc92d08669 Mon Sep 17 00:00:00 2001 From: Jakob Bak Date: Sat, 25 Aug 2012 20:12:02 +0200 Subject: [PATCH] Fixed MIDI implementation to correspond to actual MIDI --- .DS_Store | Bin 6148 -> 6148 bytes Software/Arduino/CFO/CFOMidi.h | 5 ++++- Software/Arduino/CFO/CFOmidi.cpp | 13 ++++++++++++- .../IACMidi2Serial/IACMidi2Serial.pde | 12 ++++++------ 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.DS_Store b/.DS_Store index dd108df0257386ccbf47f55cc875eb018d5a2315..42231dda29dcccd4e68f873e84fe55e61a49e10d 100644 GIT binary patch delta 19 acmZoMXffEZo{7!G&`?LgeDhW&e^CHEyal%a delta 19 acmZoMXffEZo{7y&N5RnCX!BMke^CHEvIV*T diff --git a/Software/Arduino/CFO/CFOMidi.h b/Software/Arduino/CFO/CFOMidi.h index 515ede2..392b4e9 100755 --- a/Software/Arduino/CFO/CFOMidi.h +++ b/Software/Arduino/CFO/CFOMidi.h @@ -50,7 +50,10 @@ public: private: // MIDI - uint16_t midiBuffer[4]; + uint8_t data; + //uint16_t midiBuffer[4]; + uint8_t midiBuffer[16]; + int midiBufferIndex; uint16_t frequency; //uint32_t midiTime; diff --git a/Software/Arduino/CFO/CFOmidi.cpp b/Software/Arduino/CFO/CFOmidi.cpp index cf817fb..0bf071e 100755 --- a/Software/Arduino/CFO/CFOmidi.cpp +++ b/Software/Arduino/CFO/CFOmidi.cpp @@ -47,14 +47,25 @@ void MMidi::init() void MMidi::checkMidi() { while(Serial.available() > 0) { + + data = Serial.read(); + if(data > 127) { // bitmask with 10000000 to see if byte is over 127 | data & 0x80 + midiBufferIndex = 0; + } + midiBuffer[midiBufferIndex] = data; + midiBufferIndex++; + if (midiBufferIndex > 2) { + midiHandler(); + } +/* midiBuffer[midiBufferIndex] = Serial.read(); if(midiBuffer[midiBufferIndex] == 0xFF) { midiHandler(); midiBufferIndex = 0; } else midiBufferIndex++; - +*/ } } diff --git a/Software/Processing/IACMidi2Serial/IACMidi2Serial.pde b/Software/Processing/IACMidi2Serial/IACMidi2Serial.pde index 0d8f3fc..072d272 100644 --- a/Software/Processing/IACMidi2Serial/IACMidi2Serial.pde +++ b/Software/Processing/IACMidi2Serial/IACMidi2Serial.pde @@ -110,8 +110,8 @@ void sendNoteOn(byte channel, byte pitch, byte velocity) { port0.write(noteOn); port0.write(pitch); port0.write(velocity); - port0.write(endMessage); - println('\n' + hex(noteOn) + " " + hex(pitch) + " " + hex(velocity) + " " + hex(endMessage)); + //port0.write(endMessage); + println('\n' + hex(noteOn) + " " + hex(pitch) + " " + hex(velocity)); } @@ -123,8 +123,8 @@ void sendNoteOff(byte channel, byte pitch, byte velocity) { port0.write(noteOff); port0.write(pitch); port0.write(velocity); - port0.write(endMessage); - println('\n' + hex(noteOff) + " " + hex(pitch) + " " + hex(velocity) + " " + hex(endMessage)); + //port0.write(endMessage); + println('\n' + hex(noteOff) + " " + hex(pitch) + " " + hex(velocity)); } @@ -136,7 +136,7 @@ void sendControlChange(byte channel, byte CC, byte value) { port0.write(controlChange); port0.write(CC); port0.write(value); - port0.write(endMessage); - println('\n' + hex(controlChange) + " " + hex(CC) + " " + hex(value) + " " + hex(endMessage)); + //port0.write(endMessage); + println('\n' + hex(controlChange) + " " + hex(CC) + " " + hex(value)); }