使用 OpenAL 和 SF2 以编程方式播放 MIDI
我可以使用 TiMidity++ 从头开始创建一个基本的 MIDI 文件并进行验证,并且我了解足够的 OpenAL 来播放文件中的流媒体源。
我只是想知道是否可以用 C 创建一个程序来通过读取 SF2 和 MIDI 文件并使用 OpenAL 播放声音来播放 MIDI 文件。我需要使用另一个库吗?我想提前知道,因为 SF2 格式看起来相当复杂。
I can create a basic MIDI file from scratch verified using TiMidity++, and I know enough OpenAL to play a streamed source from a file.
I'm just wondering if it's possible to create a program in C to play MIDI files by reading in a SF2 and MIDI file and using OpenAL to play the sound. Do I need to use another library? I want to know beforehand because the SF2 format looks pretty complicated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
核心音频就在这里!
如果您在 Mac 上执行此操作,
DLSMusicDevice
会执行您想要的操作。如果您使用的是 iOS,则需要“手动”完成很多工作,但这是可以管理的(也很乏味)。如果您选择这条路线,请查看示例代码“mixer host”。
Core audio is where it's at!
If you are doing this on a mac,
DLSMusicDevice
does what you want.if you are on iOS, you will need to do much 'by hand' but it is manageable (tedious, as well). If you go this route, look at the sample code 'mixer host'.
您需要使用 CoreAudio。使用连接到 IOUnit 的采样器创建 AUGraph。查看AudioUnit框架中的头文件AUComponent.h。完成音频图设置后,您可以使用以下函数来播放音符:
You need to use an CoreAudio. Create an AUGraph with a Sampler connected to an IOUnit. Look at header files AUComponent.h in the AudioUnit framework. Once you've got your audio graph setup you can play a note using the following function: