The MIDI song position pointer message tells a MIDI device to cue to a point in the MIDI sequence to be ready to play.
This message belongs to the category of MIDI system common messages.
This message consists of three bytes of data. The first byte is the status byte and has a hexadecimal value of 0xF2 signifying that this is a song position pointer message. Two bytes follow the status byte. These two bytes are combined in a 14-bit value to show the position in the song to cue to. The top bit of each of the two bytes is not used. Thus, the value of the position to cue to is between 0x0000 and 0x3FFF. The position represents the MIDI beat, where a sequence always starts on beat zero and each beat is a 16th note. Thus, the device will cue to a specific 16th note.
Each 16th note can easily be interpreted into time as the MIDI device should know the number of MIDI ticks per quarter note and the length of a MIDI tick (see Time division (of a MIDI file) for more information).
The following is an example of a MIDI song position pointer message.
0xF2 0x00 0x08
The status byte 0xF2 shows that this is a song position pointer message. 0x00 and 0x08 have the binary representations 00000000 and 00001000 and so they form the 14-bit value 00000000001000, which is 8 decimal. 8 sixteenth notes is 2 quarter notes, but since the first quarter note occurs at beat zero, this message will prompt the MIDI device to cue to the third quarter note at beat 2.
Comments
Hi webmaster
Your website is very cool, i have bookmarked it.
SPP
Great explanation of SPP. The easiest way for me to remember is that the second data byte is just multiples of 128 sixteenths, which the first data byte represents the amount sixteenths less than 127.
My formula to figure measure/beat is ( (data2*128) + (data1) / 16) + 1.
The +1 is so your solution will, at the minimum, be 1, because there is no measure 0.
Add new comment