mieki256's diary



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を同時に鳴らせたらいいのだけど、さて。

インストール :

fbsound-1.2.zip を入手して解凍。
  • 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
' 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

以上です。

過去ログ表示

Prev - 2024/01 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project