2024/01/27(土) [n年前の日記]
#1 [basic] FreeBASICでwavやoggを鳴らせるFBSoundライブラリを試用
FreeBASICで、wav、mp3、ogg等を鳴らせる FBSound というライブラリがあると知った。
_jayrm/fbsound: A free sound library primarily for games and demos written by D.J. Peters.
_fbsound 1.2 Windows/Linux (sid wav mp3 ogg mod it xm s3m) - freebasic.net
_fbsound 1.1 (dynamic) Windows/Linux 32 and 64-bit (wav mp3 ogg mod it xm s3m) - freebasic.net
_fbsound 1.0 Win/Lin 32/64-bit (wav mp3 ogg mod it xm s3m) - freebasic.net
_Load Sound in Memory (FBSound 1.2) - freebasic.net
以前はライセンスが不明で敬遠されてた気配があるけど、今現在はドキュメント上で、ライセンスについてちゃんと書いてあるように見える。
Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit で試用してみることにした。複数のwavを同時に鳴らせたらいいのだけど、さて。
_jayrm/fbsound: A free sound library primarily for games and demos written by D.J. Peters.
_fbsound 1.2 Windows/Linux (sid wav mp3 ogg mod it xm s3m) - freebasic.net
_fbsound 1.1 (dynamic) Windows/Linux 32 and 64-bit (wav mp3 ogg mod it xm s3m) - freebasic.net
_fbsound 1.0 Win/Lin 32/64-bit (wav mp3 ogg mod it xm s3m) - freebasic.net
_Load Sound in Memory (FBSound 1.2) - freebasic.net
以前はライセンスが不明で敬遠されてた気配があるけど、今現在はドキュメント上で、ライセンスについてちゃんと書いてあるように見える。
Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit で試用してみることにした。複数のwavを同時に鳴らせたらいいのだけど、さて。
◎ インストール :
fbsound-1.2.zip を入手して解凍。
inc/ の中身は以下。
test/*.dll は以下。
この .bi と .dll を、利用したいプロジェクトフォルダにコピーして、ソースの最初のほうに以下を書いておけば、FBSound が使えるようになる。
あるいは、.bi ファイルを、FreeBASICインストールフォルダ/inc/ にコピーしておいてもいい。ただ、生成した .exe と同じ場所に .dll群も置いておかないと動作しない。
- inc/ にヘッダーファイル .bi が入っている。
- test/ に動作に必要な .dll ファイル群が入っている。
inc/ の中身は以下。
fbs3d.bi fbsound_dynamic.bi fbsound_oop.bi
test/*.dll は以下。
fbsound-32.dll fbsound-64.dll fbsound-ds-32.dll fbsound-ds-64.dll fbsound-mm-32.dll fbsound-mm-64.dll
この .bi と .dll を、利用したいプロジェクトフォルダにコピーして、ソースの最初のほうに以下を書いておけば、FBSound が使えるようになる。
#include "fbsound_dynamic.bi"
あるいは、.bi ファイルを、FreeBASICインストールフォルダ/inc/ にコピーしておいてもいい。ただ、生成した .exe と同じ場所に .dll群も置いておかないと動作しない。
◎ 動作確認 :
test/ 以下にサンプルファイル群が入っているので、各 .bas について、fbc xxxx.bas と打ってコンパイルすれば動作確認できる。
ogg (or wav) を鳴らすサンプルを書いてみた。
_waveplay.bas
fbc waveplay.bas と打ってコンパイル。waveplay.exe が生成される。
_1.ogg 、 _2.ogg 、 _3.ogg を同じフォルダに入れてから実行すれば、1, 2, 3キーを押すことで ogg を再生できる。
複数のoggを同時に再生することができているので、鳴らすだけでOK系のゲームSEなら使えそうかなと…。
ogg (or wav) を鳴らすサンプルを書いてみた。
_waveplay.bas
' wave play sample with FBSound #include "fbsound_dynamic.bi" chdir(exepath()) ' FBSound initialize If fbs_Init() = True Then Print "fbs_Init() success." Else Print "Error : fbs_Init() failure" Print FBS_Get_PlugError() Beep sleep end 1 End If dim as integer hWave1, hWave2, hWave3 #ifdef 0 ' load wav file Print "load wav file" fbs_Load_WAVFile("1.wav", @hWave1) fbs_Load_WAVFile("2.wav", @hWave2) fbs_Load_WAVFile("3.wav", @hWave3) #Else ' load ogg file Print "load ogg file" fbs_Load_OGGFile("1.ogg", @hWave1) fbs_Load_OGGFile("2.ogg", @hWave2) fbs_Load_OGGFile("3.ogg", @hWave3) #endif Print "Play : 1 - 3 key" Print "Exit : ESC key" Dim As Boolean running = True Dim As String k While running Dim As String k = inkey$ Select Case k Case "1": fbs_Play_Wave(hWave1) Case "2": fbs_Play_Wave(hWave2) Case "3": fbs_Play_Wave(hWave3) Case Chr(27): running = False End Select sleep 100 Wend Print "Exit."
fbc waveplay.bas と打ってコンパイル。waveplay.exe が生成される。
_1.ogg 、 _2.ogg 、 _3.ogg を同じフォルダに入れてから実行すれば、1, 2, 3キーを押すことで ogg を再生できる。
複数のoggを同時に再生することができているので、鳴らすだけでOK系のゲームSEなら使えそうかなと…。
◎ modも鳴らせる :
.wav 以外に、.ogg、.mp3 も鳴らせるけれど、.mod, .xm, .s3m, .it 等、Amiga発祥のデモシーンで使われていた音楽ファイルフォーマットも利用できる。
_MOD (ファイルフォーマット) - Wikipedia
_MOD (ファイルフォーマット) - Wikipedia
[ ツッコむ ]
以上です。