Project1

标题: 调用MCI播放MIDI问题 [打印本页]

作者: 失落的乐章    时间: 2016-2-5 02:41
标题: 调用MCI播放MIDI问题
众所周知,在Window 7 及更高版本的系统上,在RM内播放MIDI音乐会出现明显的卡顿。每次重开工程或游戏,第一次播放MIDI都会造成数秒的假死。
我觉得通过重写RM的Audio模块来解决这个问题或许可行,于是搜寻到了以下两种音频模块:
MCI Audio Player
[RMXP] 扩展音频模块 v1.03
前者重写了Game_System和Audio模块的方法,使得通过事件指令播放的BGM也通过MCI来播放;后者只能通过脚本调用。
经过测试,发现两个脚本都有共同的问题:无法正确设置MIDI的音量,会导致所有MIDI音乐的淡入淡出失效。
紫苏的扩展音频模块提供了 AudioEx.setVolume() 方法,但实际测试发现它对MIDI不起任何作用。
MCI Audio Player 的作者给出了这样的解释:
Due to vast differences in how the format is handled, some of this player's features do not work with MIDI, most notably volume control, which also
effects fading. I have created alternate controls to control MIDI volume, but they can only work with the sacrifice of many other functions, and the volume
applies to ALL playing MIDIs, not just the one the volume is applied to. I decided this was not worth it, so I omitted volume control. If you are willing to make
them sacrifices, you can enable this mode by setting MIDI_MODE to true. If you your game relies heavily on MIDI, but you still would like to use this script,
there are conversion programs available, which I can assist you with if need be.

简单地说,调节MIDI的音量会导致所有MIDI的音量一同改变,作者认为这样不值得,所以默认设置是不允许控制其音量。我试着开启了音量控制,并在事件中使用“淡出BGM”,
淡出过程的前几秒问题不大,但在最后1秒会出现奇怪的破音(我也不知该怎么描述),然后……整个游戏的所有音效都播不出来了。
附上我的测试工程: 测试.zip (625.69 KB, 下载次数: 59)

我只想解决RM在Win7下播放MIDI造成的卡顿,而上面两个脚本所提供的一系列增强功能倒是次要的。
有谁能解决这个问题吗?










欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1