Removed pitchBend method using unsigned interface, as it conflicted with the signed. Added macros for min and max, so that it's easier to use.
This commit is contained in:
parent
65b5db2362
commit
cfe39e04aa
24
src/MIDI.cpp
24
src/MIDI.cpp
|
|
@ -299,31 +299,17 @@ void MIDI_Class::sendAfterTouch(byte Pressure,
|
||||||
|
|
||||||
/*! \brief Send a Pitch Bend message using a signed integer value.
|
/*! \brief Send a Pitch Bend message using a signed integer value.
|
||||||
\param PitchValue The amount of bend to send (in a signed integer format),
|
\param PitchValue The amount of bend to send (in a signed integer format),
|
||||||
between -8192 (maximum downwards bend)
|
between MIDI_PITCHBEND_MIN and MIDI_PITCHBEND_MAX,
|
||||||
and 8191 (max upwards bend), center value is 0.
|
center value is 0.
|
||||||
\param Channel The channel on which the message will be sent (1 to 16).
|
\param Channel The channel on which the message will be sent (1 to 16).
|
||||||
*/
|
*/
|
||||||
void MIDI_Class::sendPitchBend(int PitchValue,
|
void MIDI_Class::sendPitchBend(int PitchValue,
|
||||||
byte Channel)
|
byte Channel)
|
||||||
{
|
{
|
||||||
|
|
||||||
unsigned int bend = PitchValue + 8192;
|
unsigned int bend = PitchValue - MIDI_PITCHBEND_MIN;
|
||||||
sendPitchBend(bend,Channel);
|
|
||||||
|
|
||||||
}
|
send(PitchBend,(bend & 0x7F),(bend >> 7) & 0x7F,Channel);
|
||||||
|
|
||||||
|
|
||||||
/*! \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);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1047,7 +1033,7 @@ void MIDI_Class::launchCallback()
|
||||||
|
|
||||||
// Continuous controllers
|
// Continuous controllers
|
||||||
case ControlChange: if (mControlChangeCallback != NULL) mControlChangeCallback(mMessage.channel,mMessage.data1,mMessage.data2); break;
|
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 AfterTouchPoly: if (mAfterTouchPolyCallback != NULL) mAfterTouchPolyCallback(mMessage.channel,mMessage.data1,mMessage.data2); break;
|
||||||
case AfterTouchChannel: if (mAfterTouchChannelCallback != NULL) mAfterTouchChannelCallback(mMessage.channel,mMessage.data1); break;
|
case AfterTouchChannel: if (mAfterTouchChannelCallback != NULL) mAfterTouchChannelCallback(mMessage.channel,mMessage.data1); break;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,10 @@
|
||||||
|
|
||||||
#define MIDI_SYSEX_ARRAY_SIZE 255 // Maximum size is 65535 bytes.
|
#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
|
/*! Type definition for practical use
|
||||||
(because "unsigned char" is a bit long to write.. )
|
(because "unsigned char" is a bit long to write.. )
|
||||||
|
|
@ -179,7 +183,6 @@ public:
|
||||||
void sendProgramChange(byte ProgramNumber,byte Channel);
|
void sendProgramChange(byte ProgramNumber,byte Channel);
|
||||||
void sendControlChange(byte ControlNumber, byte ControlValue,byte Channel);
|
void sendControlChange(byte ControlNumber, byte ControlValue,byte Channel);
|
||||||
void sendPitchBend(int PitchValue,byte Channel);
|
void sendPitchBend(int PitchValue,byte Channel);
|
||||||
void sendPitchBend(unsigned int PitchValue,byte Channel);
|
|
||||||
void sendPitchBend(double PitchValue,byte Channel);
|
void sendPitchBend(double PitchValue,byte Channel);
|
||||||
void sendPolyPressure(byte NoteNumber,byte Pressure,byte Channel);
|
void sendPolyPressure(byte NoteNumber,byte Pressure,byte Channel);
|
||||||
void sendAfterTouch(byte Pressure,byte Channel);
|
void sendAfterTouch(byte Pressure,byte Channel);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue