<< Chapter < Page Chapter >> Page >

A chunk begins with the chunk type , a four-byte string whose value is either MThd for a header chunk or MTrk for a track chunk. The chunk length follows this string, and indicates the number of bytes remaining in the chunk. The chunk length is a 32-bit unsigned integer in big-endian format, i.e., the most-significant byte is first.

Header chunk

The header chunk begins with the string MThd , and is followed by a fixed chunk length value of 6; as a 32-bit unsigned integer this is 0x00_00_00_06.

The file type follows, and is a 16-bit unsigned integer that takes on one of three possible values: 0 (0x00_00) indicates single track data, 1 (0x00_01) indicates multi-track data which is vertically synchronous (i.e., they are parts of the same song), and 2 (0x00_02) indicates multi-track data with no implied timing relationship between tracks. Type 1 is by far the most common, where each track contains MIDI messages on a single channel. In this way tracks can be associated with a single instrument and recorded individually

Next is the number of tracks , a 16-bit unsigned integer. The number of tracks can range from one (0x00_01) to 65,535 (0xFF_FF). In practice the number of tracks is typically about 20 or so.

The last value in the header chunk is the division , a 16-bit unsigned integer that indicates the number of ticks per quarter note . The tick is a dimensionless unit of time, and is the smallest grain of time used to indicate the interval between events. A typical value of division is 120 (0x00_78).

Track chunk

The track chunk begins with the string MTrk , and is followed by the track length , a 32-bit unsigned integer that indicates the number of bytes remaining in the track. In theory a track could be as long as 4 Gbytes!

The remainder of the track is composed of pairs of delta-times and events. A delta-time is in units of tics, and indicates the time interval between events. An event is either a MIDI message or a meta-event . Meta-events are unique to the standard MIDI file, and indicate information such as track name, tempo, copyright notice, lyric text, and so on.

A delta time uses variable-length format ( VLF ), and can be anywhere from one to four bytes in length. Short delta times require only one byte, and long delta times can require up to four bytes. Since short delta times tend to dominate the standard MIDI file (think of a chord hit that generates a burst of Note-On messages with very little time between events), most of the delta times are only one byte long and the overall file size is thus minimized. However, since very long delta times must be accommodated as well, the variable-length format can use up to four bytes to represent very long time intervals.

Variable-length format

Variable-length format ( VLF ) is used to represent delta times and the length of meta-events (to be described below). A numerical value represented in VLF requires from one to four bytes, depending on the size of the numerical value. Since the standard MIDI file is parsed one byte at a time, some type of scheme is required to let the parser know the length of the VLF number. A naïve approach would be to include an additional byte at the beginning of the VLF to indicate the number of bytes remaining in the value. However, this approach would mean that a delta time always requires a minimum of two bytes. Instead, the VLF uses the most-significant bit (MSB) as a flag to indicate whether more bytes follow.

Questions & Answers

a perfect square v²+2v+_
Dearan Reply
kkk nice
Abdirahman Reply
algebra 2 Inequalities:If equation 2 = 0 it is an open set?
Kim Reply
or infinite solutions?
Embra Reply
if |A| not equal to 0 and order of A is n prove that adj (adj A = |A|
Nancy Reply
rolling four fair dice and getting an even number an all four dice
ramon Reply
Kristine 2*2*2=8
Bridget Reply
Differences Between Laspeyres and Paasche Indices
Emedobi Reply
No. 7x -4y is simplified from 4x + (3y + 3x) -7y
Mary Reply
is it 3×y ?
Joan Reply
J, combine like terms 7x-4y
Bridget Reply
im not good at math so would this help me
Rachael Reply
how did I we'll learn this
Noor Reply
f(x)= 2|x+5| find f(-6)
Prince Reply
f(n)= 2n + 1
Samantha Reply
Need to simplify the expresin. 3/7 (x+y)-1/7 (x-1)=
Crystal Reply
. After 3 months on a diet, Lisa had lost 12% of her original weight. She lost 21 pounds. What was Lisa's original weight?
Chris Reply
preparation of nanomaterial
Victor Reply
Yes, Nanotechnology has a very fast field of applications and their is always something new to do with it...
Himanshu Reply
can nanotechnology change the direction of the face of the world
Prasenjit Reply
At high concentrations (>0.01 M), the relation between absorptivity coefficient and absorbance is no longer linear. This is due to the electrostatic interactions between the quantum dots in close proximity. If the concentration of the solution is high, another effect that is seen is the scattering of light from the large number of quantum dots. This assumption only works at low concentrations of the analyte. Presence of stray light.
Ali Reply
the Beer law works very well for dilute solutions but fails for very high concentrations. why?
bamidele Reply
how did you get the value of 2000N.What calculations are needed to arrive at it
Smarajit Reply
Got questions? Join the online conversation and get instant answers!
QuizOver.com Reply

Get the best Algebra and trigonometry course in your pocket!

Source:  OpenStax, Musical signal processing with labview -- midi for synthesis and algorithm control. OpenStax CNX. Nov 09, 2007 Download for free at http://cnx.org/content/col10487/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Musical signal processing with labview -- midi for synthesis and algorithm control' conversation and receive update notifications?