#FluidSynthとは
- リアルタイムソフトウェアシンセサイザーです。
- クロスプラットフォーム(Windows / Mac / Linux)で動作します
- SoundFont2の音源を使用することができます
- CUIのツールとしても、C言語のライブラリとしても使うことができます
つまり、このライブラリを使ってインタラクティブミュージックを作れば、音源の互換性や種類の少なさに悩まされず、簡単に配布可能なアプリを作成できるのです。
#インストール
パッケージ管理ツールを使っているなら、それを使うのが早いです。
そうでなければ、ソースコードをダウンロードしてビルドする必要があります。
ビルドには、CMakeを使います。CMakeについては、GUIがちゃんとあってそんなに難しくないので、説明は省略します。
#試してみる
インストールが完了したら、コマンドラインでFluidSynthの対話型実行モードに入ります。
Macなら fluidsynth -a coreaudio
Windowsなら fluidsynth -a dsound
などとします。
-a はサウンドの出力先を指定するオプションです。これを指定してやらないと、うまく再生できないことがままあります。
音を鳴らす前に、サウンドフォントを読み込む必要があります。サウンドフォントはネット上にたくさん転がっているので、適当なものを探してダウンロードしてください。
今回はFluidR3_GM.sf2(GM音源ですね)を使ってみようと思います。
load FluidR3_GM.sf2
prog 0 0
noteon 0 64 100
noteoff 0 64
progでプログラムチェンジ(音色をトラックに割り当て)して、noteonで音を再生、noteoffで停止します。基本的にはMIDIのコマンドと対応しています。
help all
と入力するとコマンド一覧が確認できます。
他にも、色々な機能がありますが、基本的にはこんなものです。
#Cのライブラリとして使う
雰囲気の分かったところで、自分のプログラムにFluidSynthを組み込む方法を紹介します。
無事にインストールが成功していれば、自分のコンピュータの中のどこかに
・静的リンクライブラリ(libfluidsynth.a または libfluidsynth.lib)
・動的リンクライブラリ(libfluidsynth.so または libfluidsynth.dylib または libfluidsynth.dll)
の2つのファイルが生成されているはずです。
この2つのファイルをリンクするように設定します。
さらに、fluidsynth.hのあるフォルダを、ヘッダの検索パスに追加します。
これで準備は万端です。
先ほどコマンドラインで実行したのとまったく同じことを実現するには、以下のようなコードになります。
#include <unistd.h>
#include <fluidsynth.h>
void main(void) {
// initialize
fluid_settings_t* settings = new_fluid_settings();
fluid_settings_setstr(settings, "audio.driver", "coreaudio");
fluid_synth_t* synth = new_fluid_synth(settings);
fluid_audio_driver_t* audio_driver = new_fluid_audio_driver(settings, synth);
// load soundfont
fluid_synth_sfload(synth, "FluidR3_GM.sf2", 1);
// make note on
fluid_synth_program_change(synth, 0, 0);
fluid_synth_noteon(synth, 0, 64, 100);
// wait
usleep(1000000);
fluid_synth_noteoff(synth, 0, 64);
// finalize
delete_fuild_audio_driver(audio_driver);
delete_fluid_synth(synth);
delete_fluid_settings(settings);
}
なお、このライブラリはLGPLなので、ライセンスに注意して使用してください。
#SoundFontを作る
今までは既存のサウンドフォントを利用してきましたが、独自の音源を作ることもできます。
SoundFontはサンプラー音源なので、基本となる波形を用意していくつかのパラメータを設定する形になります。
サウンドフォントを製作するためのフリーソフトは、Vienna SoundFont Editorが有名です。
#まとめ
FluidSynthはインタラクティブミュージックを作って配布するのに超便利。