标题：mid格式
简介
经常玩音乐的人应该常听到MIDI（Musical InstrumentDigitalInterface音乐设备数字接口）这个词，MIDI允许数字合成器和其他设备交换数据。MID文件格式由MIDI继承而来。MID文件并不是一段录制好的声音，而是记录声音的信息，然后在告诉声卡如何再现音乐的一组指令。这样一个MIDI文件每存1分钟的音乐只用大约5～10KB。今天，MID文件主要用于原始乐器作品，流行歌曲的业余表演，游戏音轨以及电子贺卡等。*.mid文件重放的效果完全依赖声卡的档次。*.mid格式的最大用处是在电脑作曲领域。*.mid文件可以用作曲软件写出，也可以通过声卡的MIDI口把外接音序器演奏的乐曲输入电脑里，制成*.mid文件。
标准midi文件格式
Dustin Caldwell
  mid格式图案标准midi文件格式就像一头奇怪的猛兽。整体看来，它很有威力。当然，不管你怎么看待这个问题，足够详细地描述一个音乐使其可以再现，的确不是一项小工作。尽管复杂，当你了解midi的文件结构时，这个格式是很直观的。
在这里我必须说我不是一个midi文件专家。最近我为我的电脑弄来一部Gravis超频率音响，听了一些mid文件后我想，“嘿，我想能做自己的mid音乐多好。”嗯，头疼的几小时之后，我发现这不是件小事情。但是我也不会让一个乏味的文件格式难住我。（besides, i once told my wife that computers aren't really that hard to use, and i'd hate to be a hypocrite）所以如果你在这段介绍中发现错误，请通知我，我会做出改正。同样，这段介绍的应用范围也不包括所有midi命令和设置。
基本介绍
1 总观
一个mid文件主要包括两部分，标头数据和音轨数据。简介的第二部分介绍标头数据，第三部分介绍音轨数据。mid文件包含仅一个标头数据来描述文件格式等，和任意数量的音轨数据。一个音轨可以被理解为多声道磁带的磁轨你可以指定一个音轨为一个声音，一段填充空白，一个乐器或你希望的什么东西。
2 标头数据
标头数据出现在文件的开头，描述文件的三个部分。标头数据总向这样：
4D 54 68 64 00 00 00 06 ff ff nn nn dd dd
前4比特等价于ASCII字符“MThd”。在这4比特头标签之后，总是00 00 00 06，因为头信息总是六比特。（译者按：这六比特头信息是4D 54 68 64 00 00，最后两比特用0填充。之后是的00 06而不是06，是因为整型变量要占两个字节。这就是数字6前面多出来一个字节的原因。下同。）
ff ff是文件类型，一共有3种类型：
0 - 单音轨
1 - 多音轨，同步音轨
2 - 多音轨，异步音轨
单音轨，顾名思义，只有一条音轨。
同步多音轨是说所有的音轨并行播放，通俗地说，同时开始播放，这样可以在音乐中代表不同的声部。
异步多音轨不一定在音乐开始时播放。它们可以完全异步。
nn nn是mid文件的音轨数量。
dd dd是每个四分音占用的时间片（这个以后再详细说明）。（译者按：这两个比特越大，音乐节奏越快。）
3 音轨数据
标头数据之后，文件剩下的部分是音轨数据。每个音轨都有一个标头，和你需要的数个命令。就像文件的标头数据，音轨标头是这样的：
4d 54 72 6b xx xx xx xx
这里的前4比特等价于ASCII字符的“MTrk”。之后的4个字节说明了这个音轨长度，音轨字节数（不包括音轨标头）。
标头之后的是midi事件。这些事件实际上是送向midi合成器接口的数据和一个附加数据：时间片。时间片表示经过多少tick之后事件开始被运行。每四分音之后的时间片被预先定义在标头数据里。这里的时间片是可变长度的编码数据。这种格式尽管有些混乱，却可以使大数字使用随意的字节数，不用浪费被填成0的字节。这些数被转换为7比特的字节，每个字节最特殊的最高有效位（MSB），除了数字的末字节是0外，其他字节是1。这样，读取数字每次读一字节，当你看到最高有效位是0时，你就会知道这是数字的最后一个字节。根据mid规格，整个时间片最多占4字节。时间片之后是mid事件，每个mid事件（除了运行事件）有一个最高位是1的命令字节（字节数值>=128）附录列表A是大部分命令。每个命令有不同的参数和长度，但命令后的数据必须是最高位为0的字节（字节数值）。以上规则有一个例外，是meta事件，它可以包含最高位是1的数据字节。然而，meta事件要求有一个长度参数，这样能减轻你的困惑。
一个可能带来混乱的细节（subtlety）是运行模式。实际上这里是mid命令被疏忽，最近的mid命令发行物被假设的地方。这意味着mid事件可以由时间片和和参数构成，这参数会转到可能存在的命令。
4 总结
如果这些解释只能增加本文的混乱，那么附录的例子可能使本文清晰一些。
详细介绍
八十年代初，电脑音乐迎来了第一个真正的繁荣时期，同时也迎来了一个难以解决的问题，那就是各种电子乐器之间的通讯问题：各生产厂家都按照自己的规格生产电子乐器，当您单独使用某一厂家的产品时，您还不会遇到什么问题，可是当您同时使用几家公司的设备构成一个电脑音乐系统的时候，麻烦就来了，您怎么能使一台美国E-MU的音源发出您在日本ROLAND键盘上弹奏的一个标准A呢？ 
为了解决电子乐器的通讯问题，1982年，国际乐器制造者协会的十几家厂商（其中主要是美国和日本的厂商）会聚一堂，各抒己见。会议通过了美国Sequential Circuits公 司的大卫.史密斯提出的“通用合成器接口”的方案，并改名为“音乐设备数字接口”，即“Musical Instrument Digital Interface”缩写为“MIDI”，公布于世。1983年，MIDI协议 1.0版正式制定出来。此后，所有的商业用电子乐器的背后都出现了几个五孔的MIDI插座，乐器之间不再存在“语言障碍”，它们同装上MIDI接口的电脑一起，构成了一个更加繁荣昌盛的电脑音乐大家庭。 
实际上， MIDI 本身只是Musical Instrument Digital Interface 的缩写，意思是音乐设备数字接口。 这种接口技术的作用就是使电子乐器与电子乐器，电子乐器与电脑之间通过一种通用的通讯协议进行通讯， 这种协议自然就是MIDI协议了。 
对于搞计算机的人来说， 不妨把MIDI理解成一种局域网，网络的各个部分通过专用的串行电缆(MIDI线)连接， 并以 31.25 KBPS 的速度传送着数字音乐信息。 
MIDI 标准制定以后，开始只是在专业的电脑音乐圈儿里受到重视，但是随着电子技术的不断发展，尤其是近几年多媒体技术的突飞猛进，MIDI 作为多媒的一个重要组成部分，被炒得沸沸扬扬，几乎达到了妇孺皆知的地步。而大家也已经把这种接口技术当作了电脑音乐的代名词，常有“做MIDI”，“玩儿MIDI”的说法，使一些正统的“电脑音乐人” 觉得莫名其妙，啼笑皆非。 
因此， 我们倒不妨将MIDI划分为“狭义MIDI”和“广义MIDI”两种概念，狭义MIDI就是上面所说的音乐设备数字接口，而广义MIDI则是大家已经约定俗成的整个电脑音乐的统称 ， 这样即不会造成概念上的进一步混乱，也不会使得MIDI一词失去其本质的含义。 
1985年11月，国际乐器制造者协会公布了《MIDI 1.0版的细节规定》（2.0版至今仍在制定中），重新定义了一些控制器号码。此外，为保证MIDI的健康发展，还专门 成立了“MIDI厂商协会”和“日本MIDI标准委员会”等组织，MIDI标准从成长阶段步入了成熟阶段。 
MIDI标准的成熟使各电子乐器生产厂商更加信心百倍，它们绞尽脑汁、挖空心思，以空前的热情生产出各种电子乐器，有键盘式的（合成器、主控键盘）、弦控式的（MIDI吉他）、敲击式的（鼓机）甚至还有吹奏式的（呼吸控制器），除此之外，还有五花八门的各种音源模块（就是把没有键盘的电子合成器）供人选购。 
如果说生产厂商在此间得到的是利润，那么广大音乐工作者得到的则是实惠。道理很简单：东西一多，就会便宜。各厂商之间的竞争也迫使它们不得不尽快推出更好更便宜的电子乐器。如此一来，使得电脑音乐工作者人数激增，一些业余爱好者也趁机“混迹”于音乐工作者队伍之中，并制作出相当一批惊人之作。电脑音乐的第二个繁荣时期一直持续至今 。[1]