midi文件中记录的是什么信号,MIDI信号如何表示音符、音高和音量?

题图来自Unsplash,基于CC0协议
导读
MIDI 文件记录的并非大家想象中的是直接可听见的音频信号。想象一下,当您用软件钢琴弹奏一段旋律,并将其保存为 MIDI 文件时,实际上保存下来的并不是声音的波形本身,如音频文件(WAV, MP3)那样记录模拟信号经过采样后的数字化数据。相反,MIDI 文件记录的是一系列指令或控制信号,更准确地说,是一种数字化的音乐乐谱信息。
这些指令主要是为了控制电子乐器、声卡或软件合成器的行为而定义的。它描述的是声音应该“如何”被生成以及“何时”进行控制,但不包括声音被实际播放出来的结果(即音频波形或采样)。
更具体地说,典型的 MIDI 信号和文件(.mid/.kar)所包含的核心内容是:
-
音符信息:这是最基本的信息,记录了演奏中按下或释放的音符。每个音符都有一个唯一的编号(MIDI Note Number,范围从 0 到 127,对应不同的音高和八度),以及对应的时值(按照节奏进行时间划分)。
- 何时开始(Note On/Press)
- 何时结束(Note Off/Release)
- 弹奏力度
- 播放时长
-
控制信息:除了音符本身,MIDI 还记录了演奏过程中的许多控制变化,这些会影响乐器的音色感觉,例如:
- 音量控制:类似于滑动音量旋钮,控制输出信号的响度。
- 调制轮/表情滑杆/踏板:控制如泛音、亮度、音色连续变化或延音等效果。
- 调式/调号:乐队或乐器当前演奏的调性或音阶。
- 踏板(延音、弱音、移调):虽然主要是广域控制,但在电子键盘上也会用它来传递踏板状态变化。
- pan(立体声平衡):控制声音在左右声道之间的分配。
- Bank Select、RPN(旋转程序选择)、NRPN(新轮盘程序选择):用于更精细地选择和调整复杂的音色参数。
-
序列与起始时间:MIDI 文件(特别是多轨格式)会包含各音符、控制事件以及打拍子出现在序列中的准确时间信息和相对时长。此外,也可能包含序列(MIDI 通道)的名称和文件开始播放的初始 BPM(每分钟节拍数或速度)等元数据。
-
程序/音色选择:指定在某个 MIDI 通道上应该使用哪种乐器音色。
与音频文件(如 WAV, MP3)相比,后者存储的是经过采样和量化的声音波形振幅数据,文件大小通常与原始音频信息量有关。当你播放一段 MIDI 文件时,PC 或内置的浏览器(如 Audacity 支持部分播放)会根据当前设置的乐器声音合成插件(VST/AU),按照文件中记录的音符、时长和控制变化指令,实时地生成对应的“音频信号”来播放,实现音乐声音的输出。而原始的 MIDI 文件本身不包含这些合成后的、物理的声音数据。MIDI 文件也采用了类似 ZIP 文件的格式,压缩存储序列数字段,以求减小文件体积。
© 版权声明
本文由盾科技原创,版权归 盾科技所有,未经允许禁止任何形式的转载。转载请联系candieraddenipc92@gmail.com