OggMIDI: Difference between revisions
(Record the Ogg<->MIDI mapping) |
(roughly document the encapsulation structure) |
||
Line 2: | Line 2: | ||
This mapping was designed by Jack Moffitt. See [http://lists.xiph.org/pipermail/vorbis-dev/2001-August/004501.html this mailing list post] for documentation of his scheme. | This mapping was designed by Jack Moffitt. See [http://lists.xiph.org/pipermail/vorbis-dev/2001-August/004501.html this mailing list post] for documentation of his scheme. | ||
= Header packet | |||
OggMIDI streams have a single header packet for codec identification. | |||
0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Identifier 'OggMIDI\0' | 0-3 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 4-7 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| version number | time format | 8-11 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| timebase | 12-13 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The header packet begins with the character sequence 'OggMIDI\0' for codec identification. | |||
This is followed by an 8 bit version field. The version must be 0 for the mapping described here. | |||
The time format field is also 8 bits, and describes the timestamp format used by the midi data. It is interpreted as follows: | |||
* 1 one beat per quarter note | |||
* 24, 25, 29, 30, (50, 59, 60?) corresponding smpte frame | |||
* other values are undefined | |||
The timebase occupies the final 16 bits and gives the number of ticks per time format unit. | |||
= Data packets | |||
The header packet is followed by a series of data packets, each of which contains an integral number of midi events. |
Revision as of 11:37, 5 November 2008
Mapping for embedding MIDI data streams in Ogg.
This mapping was designed by Jack Moffitt. See this mailing list post for documentation of his scheme.
= Header packet
OggMIDI streams have a single header packet for codec identification.
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifier 'OggMIDI\0' | 0-3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | 4-7 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | version number | time format | 8-11 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timebase | 12-13 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The header packet begins with the character sequence 'OggMIDI\0' for codec identification.
This is followed by an 8 bit version field. The version must be 0 for the mapping described here.
The time format field is also 8 bits, and describes the timestamp format used by the midi data. It is interpreted as follows:
- 1 one beat per quarter note
- 24, 25, 29, 30, (50, 59, 60?) corresponding smpte frame
- other values are undefined
The timebase occupies the final 16 bits and gives the number of ticks per time format unit.
= Data packets
The header packet is followed by a series of data packets, each of which contains an integral number of midi events.