2024/01/26(金) [n年前の日記]
#1 [basic] FreeBASICでMIDIを鳴らせるsfxライブラリを試用
FreeBASICで、MIDI、もしくはwavを鳴らせる sfxライブラリと言うものがあると知った。
_Freebasic sfx library download | SourceForge.net
_Freebasic sfx library - Browse Files at SourceForge.net
_ExtLibsfx
_sfx - FreeBASIC Wiki Manual | FBWiki
_Audio library for FreeBasic - Features - freebasic.net
もし、wavを複数同時に鳴らせるなら、ゲーム制作時のSE再生に使えるのではないだろうかと思えてきたので試用してみた。環境は Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit。
結論を先に書くけれど、これはゲーム制作に使えないライブラリだった。と言うのも、複数のwavを同時に鳴らせなくて…。再生指示を出した順に、wavを順番に一つずつ再生していく仕様だった。
まあ、 _MML (Music Macro Language) を鳴らしたり、MIDIを鳴らしたり、MMLをMIDIファイルとして保存できたり、Sin波等の波形をその場で作って再生できるあたりは面白そうだけど…。また、FreeBASICで、FreeBASICのライブラリ(*.a)を生成している点も興味深い。
_Freebasic sfx library download | SourceForge.net
_Freebasic sfx library - Browse Files at SourceForge.net
_ExtLibsfx
_sfx - FreeBASIC Wiki Manual | FBWiki
_Audio library for FreeBasic - Features - freebasic.net
もし、wavを複数同時に鳴らせるなら、ゲーム制作時のSE再生に使えるのではないだろうかと思えてきたので試用してみた。環境は Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit。
結論を先に書くけれど、これはゲーム制作に使えないライブラリだった。と言うのも、複数のwavを同時に鳴らせなくて…。再生指示を出した順に、wavを順番に一つずつ再生していく仕様だった。
まあ、 _MML (Music Macro Language) を鳴らしたり、MIDIを鳴らしたり、MMLをMIDIファイルとして保存できたり、Sin波等の波形をその場で作って再生できるあたりは面白そうだけど…。また、FreeBASICで、FreeBASICのライブラリ(*.a)を生成している点も興味深い。
◎ インストールの仕方 :
一応、インストールの仕方をメモしておく。
inc/ フォルダにコピーした *.bi は以下。
これで、ソースの先頭に以下を書いておけば、sfx が使えるようになる。
- sfx.zip を入手して解凍。
- 中に sfx/ と言うフォルダがあるので、FreeBASICインストールフォルダ/ の直下にコピー。
- sfx/ に入って、buildwindows.bat を実行すると、libfbsfx.a が生成される。-mt がどうのこうのと警告が出ている点は気になるけど…。
- libfbsfx.a を、FreeBASICインストールフォルダ/lib/win??/ にコピー。
- *.bi を、FreeBASICインストールフォルダ/inc/ にコピー。
inc/ フォルダにコピーした *.bi は以下。
instruments.bi midisynth.bi sequencer.bi sfx.bi wave.bi
これで、ソースの先頭に以下を書いておけば、sfx が使えるようになる。
#include "sfx.bi" #inclib "fbsfx"
◎ 動作確認 :
FreeBASIC Wiki のサンプルを参考にして動作確認。
_sfx - FreeBASIC Wiki Manual | FBWiki
サンプルを眺めれば分かるけれど、MMLが使える。考えてみたら、8bit PC時代のBASICは、えてしてMMLが使えた記憶もあるな…。「BASICならMMLが使えて当然だろう!」てなノリで当時のソレを再現しようとしているライブラリ、なのだろうか?
MMLの最初の再生時は、数秒ほど待たされる模様。何か重めの初期化処理をしているのかもしれない。
_sfx - FreeBASIC Wiki Manual | FBWiki
サンプルを眺めれば分かるけれど、MMLが使える。考えてみたら、8bit PC時代のBASICは、えてしてMMLが使えた記憶もあるな…。「BASICならMMLが使えて当然だろう!」てなノリで当時のソレを再現しようとしているライブラリ、なのだろうか?
MMLの最初の再生時は、数秒ほど待たされる模様。何か重めの初期化処理をしているのかもしれない。
[ ツッコむ ]
以上です。