MIDI格式

义项:MIDI音乐文件格式
MIDI格式

MIDI格式是指以标准MIDI文件(Standard MIDI File,SMF)为核心的一类音乐文件格式,通常以.mid或.midi为扩展名。它记录的是一系列带有时间标记的演奏指令,如音符起止、力度、音色与控制器变化,而不存储实际的声音波形,因此体积远小于音频文件,事件的音高、时值等内容也可以被重新编辑[1]。文件需要经由音源或合成器读取才能发声,同一文件在不同设备上的听感可能不同。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

MIDI格式指按标准MIDI文件规范保存的二进制音乐文件,扩展名一般为.mid或.midi,媒体类型标记为audio/midi[2][3]。它属于指令型格式,文件内部是一串按时间先后排列的演奏事件,用来描述演奏者做了什么,而非把声波录下来[1]。

标准MIDI文件与设备之间实时传输的MIDI通信协议并不相同:后者是即时的串行消息流,前者则为每个事件附加了时间戳,使其可以脱离硬件按顺序回放[1]。规范同时支持乐曲、序列、轨道结构以及速度和拍号等信息,轨道名称、版权声明、歌词等描述性内容也可以一并存入文件[4]。

原理

文件采用分块(chunk)结构,每块以一个4个字符的类型标识开头,随后是4字节的长度字段,长度只计算其后的数据部分[5]。整体结构可表示为 $\text{SMF} = \text{MThd} + \text{MTrk}^{+}$,即先有一个头块,再跟随一个或多个音轨块[6]。头块固定长度6字节,内含格式类型、音轨数量和时间分辨率三项16位数据[6]。


flowchart LR

A["MThd 头块<br/>格式 / 轨道数 / 时间分辨率"] --> B["MTrk 音轨块 1"]

B --> C["MTrk 音轨块 2"]

C --> D["…"]

B --> E["增量时间 + 事件"]

C --> E

音轨块内的每个事件由「增量时间」加「事件」构成,增量时间表示距上一事件经过的计时单位数,并以可变长度方式编码以节省字节[6]。事件分三类:通道消息(如音符开、音符关、控制器、音色切换)、系统独占消息,以及供音序软件读取的元事件[6]。元事件以0xFF开头,可承载速度设定、拍号、调号、歌词、版权声明和轨道结束标记等内容[6]。

时间分辨率的取值决定计时方式:最高位为0时,低15位表示每四分音符的滴答数;最高位为1时,则改用与SMPTE及MIDI时间码一致的帧率与每帧滴答数,便于与影视画面同步[5]。每个音轨块最多可携带16个MIDI通道的数据,多轨结构正是为容纳超出16通道的编配而设[1]。

发展历程

MIDI本身作为乐器间串行通信的规范在1983年确立,标准MIDI文件格式随后在协议之上补充了时间戳与文件封装,使演奏数据能在不同程序与不同计算机之间交换[7][4]。该规范由MIDI制造商协会(MMA)发布并受版权保护,日文版则由日本方面的音乐电子事业协会负责[2]。

格式最初规定了0、1、2三种类型:类型0把全部通道合并进单一音轨,类型1为多条同时播放的音轨,类型2为若干彼此独立的单轨段落[5]。其中类型0便于直接顺序读取,类型1利于分轨编辑,类型2在实际使用中未能推广[1]。

为解决同一文件在不同音源上音色错位的问题,MMA与日本MIDI标准委员会在1991年推出通用MIDI(General MIDI)规范,将128个音色编号与乐器对应关系固定下来,并规定通道10专用于打击乐[8]。该规范要求兼容设备至少具备24个复音、可同时使用全部16个通道,并响应力度与若干控制器消息[8]。后续又出现了扩展版本GM2,部分厂商还各自提出了兼容性更细的扩展方案[1]。

MIDI 1.0的详细规范文本在1996年整理出版,标准MIDI文件规范被收入其中[9]。近年来,基于通用MIDI数据包的新文件形式也被提出,用于适配新一代协议[4]。

应用

MIDI文件最常见的用途是交换带时间信息的演奏数据,因此成为网络上流传的乐曲载体之一,也被用于现场演出中的伴奏播放[1]。文件由软件或硬件播放器载入后,交由与之相连或内置于播放器的音源引擎发声[1]。

在音乐制作环节,编曲通常在数字音频工作站或音序软件中完成,再通过另存或导出功能生成标准MIDI文件;主流工作站软件以及数码钢琴、合成器、工作站等硬件普遍具备读写能力[1]。文件除演奏数据外还可携带速度、每通道音色选择、控制器初值等设置信息,以及作曲者与版权等文字内容[1]。

由于数据量小且事件可编辑,这类文件也用于乐曲的重新编排、互动创作与教学演示[1]。在程序开发与声音化研究中,MIDI消息与文件结构常被直接用于参数映射与控制[10]。

局限

MIDI文件不记录任何音频采样,因此无法保存人声、实录乐器等真实声音本身,它只能描述演奏动作[11][12]。回放效果取决于所用音源的音色库与合成方式,若音色库中缺少某件乐器,对应音符可能完全不出声,若编号对应关系不同则会奏出别的音色[13]。

同一文件在两套系统上的听感可能差异明显,除非两边的合成器相近,否则听到的结果未必符合创作者本意[1]。通用MIDI及其后续版本正是为缩小这种不可预期性而制定,但它只能保证编号与基本行为一致,并不保证音色质量相同[8]。

在浏览器环境中,网页媒体元素普遍不包含MIDI合成能力,直接播放标准MIDI文件通常无法出声,需要先行渲染为音频格式,或借助音源另行处理[3]。此外,该格式并未被注册进互联网号码分配机构的音频媒体类型标准树,实际使用中依赖既有的通用约定[3]。

格式本身也较为朴素,部分设备专属参数的设定需要借助系统独占消息,这类消息的内容随硬件而异[14]。串行传输在同时触发大量事件时还会带来时间偏差,多通道同时发声时靠后的通道会被推迟[15]。

参见

  • MIDI —— 本格式所封装的演奏指令所依据的通信协议与硬件接口标准。

  • 通用MIDI —— 统一音色编号与通道用途的规范,用于提高文件回放的一致性。

  • 合成器 —— 读取MIDI事件并实际生成声音的音源设备或软件。

  • 音序器 —— 录制、编辑MIDI演奏数据并导出为MIDI文件的软件或硬件。

  • 数字音频工作站 —— 常以导入导出方式读写MIDI文件的音乐制作环境。

  • SoundFont —— 常见的声音库格式,为软件合成器提供GM音色。

参考资料

  1. About MIDI-Part 4:MIDI Files [引用日期2026-10-29]
  2. MIDI—Wolfram Documentation [引用日期2026-10-29]
  3. audio/midi MIME Type: Standard MIDI Files and Support [引用日期2026-10-29]
  4. Standard MIDI Files [引用日期2026-10-29]
  5. Standard MIDI file format, updated [引用日期2026-10-29]
  6. Standard MIDI File Structure [引用日期2026-10-29]
  7. Standard MIDI File Format [引用日期2026-10-29]
  8. General MIDI [引用日期2026-10-29]
  9. MIDI - Free Pascal wiki [引用日期2026-10-29]
  10. WAV files are digitally stored sound samples [引用日期2026-10-29]
  11. SAP Help Portal [引用日期2026-10-29]
  12. MIDI - The Discovery - One small step for the dog [引用日期2026-10-29]
  13. MIDI: Difference between revisions [引用日期2026-10-29]
  14. 2009LARE0022_OSebastien(PDF) [引用日期2026-10-29]
  15. wikipedia.org 上的网页 [引用日期2026-10-29]
词条评价
词条统计

浏览次数:0 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:23:39Z

历史版本

本条目引用的词条
MIDI制造商协会 通用MIDI 数字音频工作站 MIDI 合成器 音序器 SoundFont