diff --git a/src/MIDI.cpp b/src/MIDI.cpp index c66f4fe..bb4265e 100644 --- a/src/MIDI.cpp +++ b/src/MIDI.cpp @@ -9,7 +9,8 @@ */ #include "MIDI.h" -#include "Serial.h" +#include "core.h" +#include "hardware_Serial.h" #include @@ -21,7 +22,7 @@ MIDI_Class MIDI; MIDI_Class::MIDI_Class() { -#if USE_CALLBACKS +#if COMPILE_MIDI_IN && USE_CALLBACKS // Initialise callbacks to NULL pointer mNoteOffCallback = NULL; @@ -310,8 +311,7 @@ void MIDI_Class::sendPitchBend(double PitchValue, byte Channel) { - unsigned int pitchval = (PitchValue+1.f)*8192; - if (pitchval > 16383) pitchval = 16383; // overflow protection + int pitchval = PitchValue * MIDI_PITCHBEND_MAX; sendPitchBend(pitchval,Channel); } @@ -528,16 +528,16 @@ bool MIDI_Class::read(const byte inChannel) // Private method: MIDI parser bool MIDI_Class::parse(byte inChannel) { + const byte bytes_available = MIDI_SERIAL_PORT.available(); - const int bytes_available = MIDI_SERIAL_PORT.available(); - - if (bytes_available <= 0) { + if (bytes_available == 0) // No data available. return false; - } // If the buffer is full -> Don't Panic! Call the Vogons to destroy it. - if (bytes_available == UART_BUFFER_SIZE) { Serial << "Overflow, call the Vogons!!" << endl; + if (bytes_available == UART::bufferSize) + { + PRINT_DEBUG("MIDI Overflow"); MIDI_SERIAL_PORT.flush(); } else { @@ -1184,5 +1184,3 @@ void MIDI_Class::thru_filter(byte inChannel) #endif // Thru - - diff --git a/src/MIDI.h b/src/MIDI.h index 0c1327c..81cd69e 100644 --- a/src/MIDI.h +++ b/src/MIDI.h @@ -8,11 +8,10 @@ * license GPL Forty Seven Effects - 2011 */ -#ifndef LIB_MIDI_H_ -#define LIB_MIDI_H_ - -#include "Types.h" // Include all the types we need. +#ifndef _FSE_LIB_MIDI_H_ +#define _FSE_LIB_MIDI_H_ +#include "core_Types.h" // Include all the types we need. /* ############################################################### @@ -58,7 +57,7 @@ #define MIDI_CHANNEL_OMNI 0 #define MIDI_CHANNEL_OFF 17 // and over -#define MIDI_SYSEX_ARRAY_SIZE 255 // Maximum size is 65535 bytes. +#define MIDI_SYSEX_ARRAY_SIZE 128 // Maximum size is 65535 bytes. #define MIDI_PITCHBEND_MIN -8192 #define MIDI_PITCHBEND_MAX 8191 @@ -66,7 +65,8 @@ /*! Enumeration of MIDI types */ -enum kMIDIType { +enum kMIDIType +{ NoteOff = 0x80, ///< Note Off NoteOn = 0x90, ///< Note On AfterTouchPoly = 0xA0, ///< Polyphonic AfterTouch @@ -146,7 +146,7 @@ struct midimsg See member descriptions to know how to use it, or check out the examples supplied with the library. */ -class MIDI_Class +class MIDI_Class { public: @@ -252,9 +252,9 @@ private: byte mRunningStatus_RX; byte mInputChannel; - byte mPendingMessage[MIDI_SYSEX_ARRAY_SIZE]; + byte mPendingMessage[3]; // SysEx are dumped into mMessage directly. unsigned int mPendingMessageExpectedLenght; - unsigned int mPendingMessageIndex; // Extended to unsigned int for larger sysex payloads. + unsigned int mPendingMessageIndex; // Extended to unsigned int for larger SysEx payloads. midimsg mMessage; @@ -339,7 +339,7 @@ private: void thru_filter(byte inChannel); bool mThruActivated; - kThruFilterMode mThruFilterMode; + kThruFilterMode mThruFilterMode; #endif // Thru @@ -347,4 +347,5 @@ private: extern MIDI_Class MIDI; -#endif // LIB_MIDI_H_ + +#endif // _FSE_LIB_MIDI_H_