TiMidity++ を使用して、基本的な MIDI ファイルをゼロから作成できます。また、ファイルからストリーミング ソースを再生するのに十分な OpenAL を知っています。
SF2 と MIDI ファイルを読み込み、OpenAL を使用してサウンドを再生することにより、MIDI ファイルを再生するプログラムを C で作成することが可能かどうか疑問に思っています。別のライブラリを使用する必要がありますか? SF2フォーマットはかなり複雑に見えるので事前に知りたいです。
コアオーディオはそれがどこにあるかです!
あなたがマックでこれをしているなら、あなたがDLSMusicDevice
望むことをします。
iOSを使用している場合は、「手作業で」多くのことを行う必要がありますが、管理は簡単です(面倒でもあります)。このルートに行く場合は、サンプルコード「ミキサーホスト」を見てください。
CoreAudio を使用する必要があります。IOUnit に接続された Sampler で AUGraph を作成します。AudioUnit フレームワークのヘッダー ファイル AUComponent.h を見てください。オーディオ グラフのセットアップが完了したら、次の関数を使用してノートを再生できます。
MusicDeviceMIDIEvent(sampler, status, note, velocity, 0);