|
|
|
@ -68,17 +68,55 @@
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* Macros: */
|
|
|
|
|
/** \name MIDI Command Values */
|
|
|
|
|
/** \name MIDI Command Values
|
|
|
|
|
* See http://www.midi.org/techspecs/midimessages.php for more information.
|
|
|
|
|
*/
|
|
|
|
|
//@{
|
|
|
|
|
/** MIDI command for a note on (activation) event. */
|
|
|
|
|
#define MIDI_COMMAND_NOTE_ON 0x90
|
|
|
|
|
/** MIDI command for System Exclusive (SysEx) single event that has one byte of data total. */
|
|
|
|
|
#define MIDI_COMMAND_SYSEX_1BYTE MIDI_COMMAND_SYSEX_END_1BYTE
|
|
|
|
|
|
|
|
|
|
/** MIDI command for System Exclusive (SysEx) single event that has two bytes of data total. */
|
|
|
|
|
#define MIDI_COMMAND_SYSEX_2BYTE 0x20
|
|
|
|
|
|
|
|
|
|
/** MIDI command for System Exclusive (SysEx) single event that has three bytes of data total. */
|
|
|
|
|
#define MIDI_COMMAND_SYSEX_3BYTE 0x30
|
|
|
|
|
|
|
|
|
|
/** MIDI command for System Exclusive (SysEx) stream event that has at least four bytes of data total. */
|
|
|
|
|
#define MIDI_COMMAND_SYSEX_START_3BYTE 0x40
|
|
|
|
|
|
|
|
|
|
/** MIDI command for System Exclusive (SysEx) stream event terminator with one remaining data byte. */
|
|
|
|
|
#define MIDI_COMMAND_SYSEX_END_1BYTE 0x50
|
|
|
|
|
|
|
|
|
|
/** MIDI command for System Exclusive (SysEx) stream event terminator with two remaining data bytes. */
|
|
|
|
|
#define MIDI_COMMAND_SYSEX_END_2BYTE 0x60
|
|
|
|
|
|
|
|
|
|
/** MIDI command for System Exclusive (SysEx) stream event terminator with three remaining data bytes. */
|
|
|
|
|
#define MIDI_COMMAND_SYSEX_END_3BYTE 0x70
|
|
|
|
|
|
|
|
|
|
/** MIDI command for a note off (deactivation) event. */
|
|
|
|
|
#define MIDI_COMMAND_NOTE_OFF 0x80
|
|
|
|
|
#define MIDI_COMMAND_NOTE_OFF 0x80
|
|
|
|
|
|
|
|
|
|
/** MIDI command for a note on (activation) event. */
|
|
|
|
|
#define MIDI_COMMAND_NOTE_ON 0x90
|
|
|
|
|
|
|
|
|
|
/** MIDI command for a note pressure change event. */
|
|
|
|
|
#define MIDI_COMMAND_NOTE_PRESSURE 0xA0
|
|
|
|
|
|
|
|
|
|
/** MIDI command for a control change event. */
|
|
|
|
|
#define MIDI_COMMAND_CONTROL_CHANGE 0xB0
|
|
|
|
|
|
|
|
|
|
/** MIDI command for a control change event. */
|
|
|
|
|
#define MIDI_COMMAND_PROGRAM_CHANGE 0xC0
|
|
|
|
|
|
|
|
|
|
/** MIDI command for a channel pressure change event. */
|
|
|
|
|
#define MIDI_COMMAND_CHANNEL_PRESSURE 0xD0
|
|
|
|
|
|
|
|
|
|
/** MIDI command for a pitch change event. */
|
|
|
|
|
#define MIDI_COMMAND_PITCH_WHEEL_CHANGE 0xE0
|
|
|
|
|
//@}
|
|
|
|
|
|
|
|
|
|
/** Standard key press velocity value used for all note events. */
|
|
|
|
|
#define MIDI_STANDARD_VELOCITY 64
|
|
|
|
|
#define MIDI_STANDARD_VELOCITY 64
|
|
|
|
|
|
|
|
|
|
/** Convenience macro. MIDI channels are numbered from 1-10 (natural numbers) however the logical channel
|
|
|
|
|
* addresses are zero-indexed. This converts a natural MIDI channel number into the logical channel address.
|
|
|
|
@ -87,8 +125,8 @@
|
|
|
|
|
*
|
|
|
|
|
* \return Constructed MIDI channel ID.
|
|
|
|
|
*/
|
|
|
|
|
#define MIDI_CHANNEL(channel) ((channel) - 1)
|
|
|
|
|
|
|
|
|
|
#define MIDI_CHANNEL(channel) ((channel) - 1)
|
|
|
|
|
|
|
|
|
|
/** Constructs a MIDI event ID from a given MIDI command and a virtual MIDI cable index. This can then be
|
|
|
|
|
* used to create and decode \ref MIDI_EventPacket_t MIDI event packets.
|
|
|
|
|
*
|
|
|
|
@ -97,7 +135,7 @@
|
|
|
|
|
*
|
|
|
|
|
* \return Constructed MIDI event ID.
|
|
|
|
|
*/
|
|
|
|
|
#define MIDI_EVENT(virtualcable, command) ((virtualcable << 4) | (command >> 4))
|
|
|
|
|
#define MIDI_EVENT(virtualcable, command) ((virtualcable << 4) | (command >> 4))
|
|
|
|
|
|
|
|
|
|
/* Enums: */
|
|
|
|
|
/** Enum for the possible MIDI jack types in a MIDI device jack descriptor. */
|
|
|
|
|