这midi好神奇


看着没有任何program change事件,但是却不是钢琴声,midishow也只识别到了钢琴

1 Like

PFA没法识别到乐器,这是什么原理啊

其本身文件不符合平时我们所使用的有128乐器的GM标准,而此文件使用的是YAMAHA公司使用的XG标准,支持其标准的设备可以向下兼容GM,但GM不能向上兼容XG

但是没有任何program change事件啊

两个图。第一个图是这个MIDI文件,用“世界树Sekaiju”这个使用纯MIDI文件作为工程的DAW软件,打开了这个MIDI文件,并查看它的第一轨Tempo Map里的事件列表,发现了一串的XG系统码:

红框里的系统码“F0 43 10 4C 08 xx 02 pp F7”以及“F0 43 10 4C 08 xx 03 qq F7”等,就是使用XG系统码实现的Bank Select LSB和Program Change功能。其中xx是通道号,pp和qq则是不同音色的编号。这个源自于下一张图,为雅马哈MU2000/1000硬音源的手册:

雅马哈系统码的格式:F0 43 10 4C pp qq rr xx … F7,其中F0 43 10 4C和末尾最后的F7都是固定的,里边包含了系统码的标志(F0…F7),以及雅马哈的厂商号(43)设备编号(10)设备型号(4C)等等。pp qq rr是不同的功能所对应的地址码,搞编程的可以把这个理解成寄存器地址。xx…则是具体值,就是给这个功能赋多少多少的值,长度可变,取决于不同功能所规定的数值长度。如果设备型号是4C的话,代表这个设备是标准XG设备;在MU100、MU1000/2000等不同的高级音源上,设备型号还可以写成它自己专门的型号,实现这个型号独有的功能。

3 Likes

可以看看这个midi,一样的原理

谢了,我早就怀疑是这些SysEx事件了,能否讲一下其他SysEx事件代表什么吗?

在这里下载一个雅马哈MU100的MIDI Data List手册英文版,第33页开始,就是系统码的详细解释:


这个说明书里第35页,2.1.3.1节,XG System On这一节,就有系统码的解释:F0 43 10 4C是固定的,接下来的三个字节pp qq rr就是地址,叫什么Address High/Mid/Low。这些地址的大概功能可以在39页Table1-1里查到,具体功能则在39-50页的Table1-2至Table1-12里查找。
Table2-1~Table2-4的系统码解释,则是针对MU音源而非标准XG里的功能(此时Model ID不再是0x43,而是0x49)。这些对应着35页2.1.4节MU100 Native Parameter Change (1)的内容。2.1.5节MU100 Native Parameter Change (2)的系统码,则是给MU100而非标准XG,也非其他MU系列音源使用的功能,对应的详细介绍在53页开始的Table3-1~Table3-3.
类似的内容也会在MU1000/2000等的文档中。但MU500/1000/2000的文档只有官方日文版下载,如果不会日语的话,还是建议以MU100等的文档作为参考。

3 Likes