首页 > 解决方案 > IDirectMusicPerformance8 - 仅 MIDI,还是 WAV?

问题描述

我正在尝试使用旧版本的 DirectX (8.1),我发现文档有点令人困惑。感觉这个IDirectMusicPerformance8接口是用于 MIDI 播放的,因为它上面有各种与 MIDI 相关的方法,但文档的各个部分都表明它也可以用来播放 WAV 数据。例如,教程说你调用InitAudio了演奏,它说“ Wave 文件只需要一个演奏通道,而 MIDI 文件最多需要 16 个”。

那么它是用于 MIDI 还是可以用于 WAV?

如果它可以用于WAV,我就更难了,因为我正在初始化它,运行performance->PlaySegment(segment, 0, 0, NULL),得到成功响应,但是音频是无声的。

标签: c++directx

解决方案


好的,我想通了。显然我一直在使用IDirectMusicPerformance而不是IDirectMusicPerformance8,我猜这是某种旧的兼容性东西,缺少各种新的 DirectX 8.1 方法。一旦我切换到那个(以及相关的 '8' 版本的加载器和段接口),使用他们的新方法InitAudioLoadObjectFromFile方法,在播放之前调用segment->Download(performance),然后使用新PlaySegmentEx方法播放,它可以工作并播放 WAV。


推荐阅读