我可以从头开始创建一个使用 TiMidity++ 验证的基本 MIDI 文件,并且我知道足够的 OpenAL 来播放文件中的流式源。
我只是想知道是否可以通过读取 SF2 和 MIDI 文件并使用 OpenAL 播放声音来用 C 创建一个程序来播放 MIDI 文件。我需要使用另一个库吗?我想提前知道,因为 SF2 格式看起来很复杂。
您需要使用 CoreAudio。使用连接到 IOUnit 的采样器创建 AUGraph。查看 AudioUnit 框架中的头文件 AUComponent.h。设置好音频图后,您可以使用以下功能播放音符:
MusicDeviceMIDIEvent(sampler, status, note, velocity, 0);
核心音频就是它的所在!
如果您在 Mac 上执行此操作,DLSMusicDevice
请执行您想要的操作。
如果您在 iOS 上,您将需要“手动”做很多事情,但这是可以管理的(也很乏味)。如果您走这条路,请查看示例代码“混音器主机”。