diff --git a/src/MIDI.cpp b/src/MIDI.cpp index 9517f99..5908157 100644 --- a/src/MIDI.cpp +++ b/src/MIDI.cpp @@ -299,31 +299,17 @@ void MIDI_Class::sendAfterTouch(byte Pressure, /*! \brief Send a Pitch Bend message using a signed integer value. \param PitchValue The amount of bend to send (in a signed integer format), - between -8192 (maximum downwards bend) - and 8191 (max upwards bend), center value is 0. + between MIDI_PITCHBEND_MIN and MIDI_PITCHBEND_MAX, + center value is 0. \param Channel The channel on which the message will be sent (1 to 16). */ void MIDI_Class::sendPitchBend(int PitchValue, byte Channel) { - unsigned int bend = PitchValue + 8192; - sendPitchBend(bend,Channel); + unsigned int bend = PitchValue - MIDI_PITCHBEND_MIN; -} - - -/*! \brief Send a Pitch Bend message using an unsigned integer value. - \param PitchValue The amount of bend to send (in a signed integer format), - between 0 (maximum downwards bend) - and 16383 (max upwards bend), center value is 8192. - \param Channel The channel on which the message will be sent (1 to 16). - */ -void MIDI_Class::sendPitchBend(unsigned int PitchValue, - byte Channel) -{ - - send(PitchBend,(PitchValue & 0x7F),(PitchValue >> 7) & 0x7F,Channel); + send(PitchBend,(bend & 0x7F),(bend >> 7) & 0x7F,Channel); } @@ -1047,7 +1033,7 @@ void MIDI_Class::launchCallback() // Continuous controllers case ControlChange: if (mControlChangeCallback != NULL) mControlChangeCallback(mMessage.channel,mMessage.data1,mMessage.data2); break; - case PitchBend: if (mPitchBendCallback != NULL) mPitchBendCallback(mMessage.channel,(int)((mMessage.data1 & 0x7F) | ((mMessage.data2 & 0x7F)<< 7)) - 8192); break; // TODO: check this + case PitchBend: if (mPitchBendCallback != NULL) mPitchBendCallback(mMessage.channel,(int)((mMessage.data1 & 0x7F) | ((mMessage.data2 & 0x7F)<< 7)) + MIDI_PITCHBEND_MIN); break; // TODO: check this case AfterTouchPoly: if (mAfterTouchPolyCallback != NULL) mAfterTouchPolyCallback(mMessage.channel,mMessage.data1,mMessage.data2); break; case AfterTouchChannel: if (mAfterTouchChannelCallback != NULL) mAfterTouchChannelCallback(mMessage.channel,mMessage.data1); break; diff --git a/src/MIDI.h b/src/MIDI.h index 58ea2f2..6263d90 100644 --- a/src/MIDI.h +++ b/src/MIDI.h @@ -63,6 +63,10 @@ #define MIDI_SYSEX_ARRAY_SIZE 255 // Maximum size is 65535 bytes. +#define MIDI_PITCHBEND_MIN -8192 +#define MIDI_PITCHBEND_MAX 8191 + + /*! Type definition for practical use (because "unsigned char" is a bit long to write.. ) @@ -179,7 +183,6 @@ public: void sendProgramChange(byte ProgramNumber,byte Channel); void sendControlChange(byte ControlNumber, byte ControlValue,byte Channel); void sendPitchBend(int PitchValue,byte Channel); - void sendPitchBend(unsigned int PitchValue,byte Channel); void sendPitchBend(double PitchValue,byte Channel); void sendPolyPressure(byte NoteNumber,byte Pressure,byte Channel); void sendAfterTouch(byte Pressure,byte Channel);