2024/01/27(土) [n年前の日記]
#3 [basic] FreeBASIC + FMODを試用
FreeBASIC から、FMOD (fmod.dll) なるサウンド用ライブラリを利用することができるらしい。
_FMOD
_FMOD - FreeBASIC Wiki Manual | FBWiki
_FreeBASIC Compiler / Feature Requests / #185 FMOD Ex headers for freebasic...
_TUTORIAL: Using FMOD for In-Game Music - Page 2 - freebasic.net
FMODは、商用利用時はライセンス料を払わないといけないサウンドライブラリ。ただ、フリーソフトに使う分には無料で利用しても良いことになっているらしい。あるいは、売り上げが一定額に満たない場合も無料で利用できる、と書いてあるように見えた。昔の Unity みたいな感じだろうか。 *1
気になったので、Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit で試用してみた。
_FMOD
_FMOD - FreeBASIC Wiki Manual | FBWiki
_FreeBASIC Compiler / Feature Requests / #185 FMOD Ex headers for freebasic...
_TUTORIAL: Using FMOD for In-Game Music - Page 2 - freebasic.net
FMODは、商用利用時はライセンス料を払わないといけないサウンドライブラリ。ただ、フリーソフトに使う分には無料で利用しても良いことになっているらしい。あるいは、売り上げが一定額に満たない場合も無料で利用できる、と書いてあるように見えた。昔の Unity みたいな感じだろうか。 *1
気になったので、Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit で試用してみた。
◎ インストール :
現行版のバイナリはユーザ登録しないと入手できないように見えたのだけど、おそらく昔の版なら、別の経路で入手できそう。例えば、以下のページから、UsingFMOD_A_Tutorial.zip もしくは、fmod_example_program.zip を入手する。中に fmod.dll も入ってる。
_TUTORIAL: Using FMOD for In-Game Music - Page 2 - freebasic.net
_QB Express: Issue #26
fmod_example_program.zip を解凍すると、サンプルファイル fmod_example.bas と fmod.dll が入ってる。ちなみに、ヘッダーファイル、fmod.bi は、FreeBASIC 1.10.1 に最初から入っている。
_TUTORIAL: Using FMOD for In-Game Music - Page 2 - freebasic.net
_QB Express: Issue #26
fmod_example_program.zip を解凍すると、サンプルファイル fmod_example.bas と fmod.dll が入ってる。ちなみに、ヘッダーファイル、fmod.bi は、FreeBASIC 1.10.1 に最初から入っている。
◎ 動作確認 :
fbc fmod_example.bas でコンパイル。
ただ、警告が結構出る。もしかすると fmod.dll のバージョンが合ってないのだろうか。しかし、FreeBASIC の fmod.bi には FMOD 3.75 と記述されていて、今回入手できた fmod.dll のバージョンも 3.7.5。バージョンは合ってそうな気がする…。FreeBASIC のバージョンアップに伴う仕様変更に、fmod.bi が追従していないだけだろうか? 随分古いライブラリのようだし。
さておき。一応、wav は鳴ってくれた。別々の音が同時に鳴っているようにも聞こえる。
しかし、一部の wav がループ再生されてしまう…。全ての wav がループ再生されるわけではなくて、特定のwavだけがループ再生になる。何故。ワンショット系のSEにするにはどうしたらいいのか…。
もしかして wav ファイルの中にループ再生するかしないかの情報を盛り込めることができて、たまたま何かの拍子に、その wav にだけ、その情報が入っちゃってるとか…?
ループ再生されてしまう wav を SoundEngine Free 5.23 で開いて、そのまま保存し直してみた。保存し直した wav を使ったらループ再生されない。どういうことだろう…。分からんなあ…。やはり wav にループ再生を指示する何かしらの情報を埋め込めるのだろうか…。
ただ、警告が結構出る。もしかすると fmod.dll のバージョンが合ってないのだろうか。しかし、FreeBASIC の fmod.bi には FMOD 3.75 と記述されていて、今回入手できた fmod.dll のバージョンも 3.7.5。バージョンは合ってそうな気がする…。FreeBASIC のバージョンアップに伴う仕様変更に、fmod.bi が追従していないだけだろうか? 随分古いライブラリのようだし。
さておき。一応、wav は鳴ってくれた。別々の音が同時に鳴っているようにも聞こえる。
しかし、一部の wav がループ再生されてしまう…。全ての wav がループ再生されるわけではなくて、特定のwavだけがループ再生になる。何故。ワンショット系のSEにするにはどうしたらいいのか…。
もしかして wav ファイルの中にループ再生するかしないかの情報を盛り込めることができて、たまたま何かの拍子に、その wav にだけ、その情報が入っちゃってるとか…?
ループ再生されてしまう wav を SoundEngine Free 5.23 で開いて、そのまま保存し直してみた。保存し直した wav を使ったらループ再生されない。どういうことだろう…。分からんなあ…。やはり wav にループ再生を指示する何かしらの情報を埋め込めるのだろうか…。
*1: 今の Unity はどういう価格体系になったのかよく知らないので、「昔の」と言っておきます…。
[ ツッコむ ]
以上です。