A MIDI event that carries the MIDI pitch wheel message, also known as a "MIDI modulation wheel message", tells a MIDI device that at a certain time the pitch of the channel should be changed to a certain level.
This message belongs to the category of MIDI voice messages.
This message consists of three bytes of data. The first byte is the status byte and has hexadecimal values between 0xE0 and 0xEF. The high nibble of the status byte is E, which tells the MIDI device that this is a pitch wheel message. The low nibble of the status byte is between 0 and F (0 and 15 in decimal values) and points to one of the 16 MIDI channels. Two bytes follow the status byte. These two bytes are combined to show the value of the new pitch (the two bytes are comprised of 16 bits, but only the low 14 bits, the low 7 bits of each byte, are used to form a 14 bit value). The first of the two bytes is the least significant byte and second is the most significant byte (i.e., the first of the two bytes carries the bottom 7 bits of the 14-bit value and the second of the two bytes carries the top 7 bits of the 14-bit value). The value of the new pitch is between 0x0000 and 0x3FFF. MIDI devices interpret these values differently, but 0x2000 is usually center (no pitch change), 0x0000 is usually two semitones lower, and 0x3FFF is usually two semitones higher. An example on how to specify the meaning of the range 0x0000 to 0x3FFF precisely is provided in the topic on MIDI Registered Parameter Number (RPN).
The following is an example of a MIDI pitch wheel message.
0xE3 0x54 0x39
The status byte 0xE3 shows that this is a pitch wheel message for channel 3. 0x39 and 0x54 (57 and 84 decimal values) have the binary representations 00111001 and 01010100. After removing the top-most bit of each byte, these two bytes form the 14-bit value 01110011010100, which is 0x1CD4 (7380 decimal). The value of the new pitch is 0x1CD4. This pitch is lower than the center of 0x2000 by 0x032C (812 decimal). It is up to the device to translate this to a specific pitch. For example, if 0x2000 (8192 decimal) represents no change in pitch and 0x0000 (0 decimal) is two semitones lower and if the pitch is computed exponentially, then -0x032C (-812 decimal) will represent a drop in the pitch of a little less than 20 cents.