c++ - IDirectMusicPerformance8 - 仅 MIDI,还是 WAV?
问题描述
我正在尝试使用旧版本的 DirectX (8.1),我发现文档有点令人困惑。感觉这个IDirectMusicPerformance8
接口是用于 MIDI 播放的,因为它上面有各种与 MIDI 相关的方法,但文档的各个部分都表明它也可以用来播放 WAV 数据。例如,教程说你调用InitAudio
了演奏,它说“ Wave 文件只需要一个演奏通道,而 MIDI 文件最多需要 16 个”。
那么它是用于 MIDI 还是可以用于 WAV?
如果它可以用于WAV,我就更难了,因为我正在初始化它,运行performance->PlaySegment(segment, 0, 0, NULL)
,得到成功响应,但是音频是无声的。
解决方案
好的,我想通了。显然我一直在使用IDirectMusicPerformance
而不是IDirectMusicPerformance8
,我猜这是某种旧的兼容性东西,缺少各种新的 DirectX 8.1 方法。一旦我切换到那个(以及相关的 '8' 版本的加载器和段接口),使用他们的新方法InitAudio
和LoadObjectFromFile
方法,在播放之前调用segment->Download(performance)
,然后使用新PlaySegmentEx
方法播放,它可以工作并播放 WAV。
推荐阅读
- c# - OnEnable 不更新变量 - Unity3D
- blender - 省略了一个条件
- postman - 如何从新的谷歌 SDM 获取巢恒温器的温度
- java - 硒元素在点不可点击
- xamarin - Xamarin:使用 API 级别 >=29 将文件保存到 Android 上的外部存储
- django - Django Heroku 应用程序移至新计算机 - git push heroku master 上的错误
- javascript - Discordjs 在前缀和命令之间添加空格
- c# - Blazor 服务器端 Fluxor Dispatch Action on Browser 选项卡关闭
- vue.js - 道具“to”不适用于 vuetify v-breadcrumbs 上的 root 命名路径
- gcc - llvm-as和binutils-as的区别,变量的命名