明明是gs音色标准,为什么网站显示成了gm?

https://www.midishow.com/midi/71245.html

音色标准目前主要通过mid文件中的SysEx数据判断,如果mid文件中没有标准的GS RESET指令,判断可能就不准确。

我先记下这个问题,后面研究下这个文件数据看怎样判断更准确。

多谢 CA33 反馈 :smiley:

1赞

过了这么久我才发现有的mid文件同时使用多个音色标准。
https://www.midishow.com/midi/71759.html
我觉得对于这类同时使用多个音色标准的文件,网站可以把它们使用的音色标准同时显示出来。

toufuutempoup_1.mid (46.8 KB)

1赞

节前忙着干活儿收尾,没细看这个MIDI文件。先GM System On再GS或XG Reset是有它的道理的。如果音源只支持GM而不支持其他标准,那么音源收到GM System On之后,再收到GS或XG Reset的话,就会当成不支持的信息(MIDI系统里对不支持的信息都是忽略的),于是只以GM模式运行。假如只写个GS/XG Reset的话,那么不支持GS/XG而只支持GM的音源就惨了——不识别GS/XG Reset,又没有收到GM System On的话,就未必工作在GM模式下了。

2赞

程序狗来了~ 现在判断音色的逻辑是遇到第一个设置音色的事件就提取出来判断了,后面的就不管了,没考虑到后面的事件,是个bug。

按照楼上大神的提示,如果有多个音色事件,例如先GM,后GS,应该识别为后面的GS。或者先GM,后GS,后GM,也识别为GS,因为GS是GM的超集。初步打算就这么改了。

但是,会不会有 先 GM,后GS,后XG 的?理论上应该存在,实际上没这么搞的吧 :dizzy:

还真见过一个。不过那个是新手作品,实际上文件里边根本没有用上任何GS/XG的专有特性,连控制器信息都没有。所以估计那个文件里的各种Reset信息,应该是他用的什么软件,自动加进去的。