音色切换消息
音色切换消息只改通道上的音色,不改音符,也不改轨道。
相关
换音色是一条短消息,不是换轨。
问题
一段音乐中途要换乐器,复制轨道最省事,却让通道与音符翻倍。用 Program Change 可以在同一条通道上换,但发错时机就会切在音上。
协议或消息
状态字节 0xCn,后跟一个 0 到 127 的音色号。人读的 GM 列表从 1 起算,文件里从 0 起算,40 号对应小提琴。需要音色库时先发 CC0 与 CC32 选库,再发音色号。第 10 通道在 GM 下固定为鼓,音色号对它无效。消息只改通道,不改轨道,也不改已经发出的音符。
参数与做法
在乐句开始前发,避免音尾被切。同一通道重复发同值没有坏处,能防止状态丢失。换音色前先关掉正在发声的音。多轨共用通道时,一次切换会影响所有轨。
听什么
同一段旋律用钢琴与弦乐,音头与延音完全不同。低音从 43 换到 45,断奏感立刻出现。
常见误解
切换音色不会改已发出的音符。GM 编号与厂商编号不是一套。程序切换也不是轨道属性。
在库中听例子
Piano Quintet in A major · 4. Andantino - Allegretto鳟鱼五重奏第四乐章,3 号通道在 43 与 45 之间切换,低音改拨弦详情sailors battle midi theme 9单轨文件里有 6 次音色切换,4 个旋律通道各设音色,第 10 通道打鼓详情intro verse1 copy32 轨共用 16 通道,全曲共 31 次音色切换,逐段重置详情
每首均来自 midicn-lib,行内徽标为许可档位(C1 可商用 / C2 非商业 / C3 仅学习研究)。
事实来源
- MIDI 1.0 规范对 Program Change 与音色库选择的定义,依 MMA 公开规范核查,未抄文本
- GM 音色表与 0 起算的编号约定,依通用 MIDI 规范核查,未抄文本
仅用于核查事实,正文为原创撰写。