2024/01/27(土) [n年前の日記]
#2 [basic] FreeBASIC + FBWindowsSoundWav.basを試用
FreeBASIC でwav再生するためのライブラリについて調べてる。
以下の投稿ページの中で、Windows と Linux の両方でwav再生するための関数名を同じにしたライブラリが紹介されてた。
_Play Sound WAV (Windows [32-bit], [64-bit], Linux [32-bit], [64-bit]) - freebasic.net
再生の実処理は、Windows、もしくは Linuxに特化した機能を呼び出して実現してるらしい。関数名が同じになるだけでも便利そうだなと思えてきたので試用してみることにした。環境は Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit。
結論を先に書いておく。一応wavは鳴ったけど、ゲーム制作用には使えない印象。
以下の投稿ページの中で、Windows と Linux の両方でwav再生するための関数名を同じにしたライブラリが紹介されてた。
_Play Sound WAV (Windows [32-bit], [64-bit], Linux [32-bit], [64-bit]) - freebasic.net
再生の実処理は、Windows、もしくは Linuxに特化した機能を呼び出して実現してるらしい。関数名が同じになるだけでも便利そうだなと思えてきたので試用してみることにした。環境は Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit。
結論を先に書いておく。一応wavは鳴ったけど、ゲーム制作用には使えない印象。
◎ インストール :
前述の掲示板から、ソースコードをコピペして、ローカルで .bi や .bas として保存する。
サンプルは以下。今回は 1.wav というファイルを読み込んで再生する。
_sample.bas
fbc sample.bas でコンパイル。sample.exe を実行。pキーで再生。sキーで停止。qキーで終了。
たしかに wav が鳴ってくれたけれど…。前の再生がまだ終わってない状態で連続して鳴らすと、前の再生をブツ切りして、次の音が最初から再生されてしまう。同時に並行して鳴ってほしいのだけどなあ…。
また、ブツ切りされる際に、ノイズもブチブチと入りまくる。
ゲーム制作に使えるライブラリでは無さそうだなと…。
- Linux の場合は、alsa.bi と FBLinuxSoundWav.bas をプロジェクトフォルダにコピー。
- Windwos の場合は、FBWindowsSoundWav.bas をプロジェクトフォルダにコピー。
サンプルは以下。今回は 1.wav というファイルを読み込んで再生する。
_sample.bas
#include "FBWindowsSoundWav.bas"
Dim fb_Wav As FbWAV Ptr
LoadWav("1.wav", fb_Wav)
PlayWav(fb_Wav)
Do
Var key = Inkey
Select Case key
Case "s" : StopWav(fb_Wav)
Case "p" : PlayWav(fb_Wav)
Case "q" : Exit Do
Case " "
PauseWAV(fb_Wav)
Sleep(100)
End Select
Var sp = StatusPlay(fb_Wav)
Sleep(100)
Cls
Select Case sp
Case 1 : Print "Play"
Case 0 : Print "Stop"
Case 2 : Print "Pause"
End Select
Print "Length=" & GetLengthSeconds(fb_Wav) & " seconds"
Print "s)top / p)lay / q)uit / SPACE : Pause"
Loop
FreeWav(fb_Wav)
fbc sample.bas でコンパイル。sample.exe を実行。pキーで再生。sキーで停止。qキーで終了。
たしかに wav が鳴ってくれたけれど…。前の再生がまだ終わってない状態で連続して鳴らすと、前の再生をブツ切りして、次の音が最初から再生されてしまう。同時に並行して鳴ってほしいのだけどなあ…。
また、ブツ切りされる際に、ノイズもブチブチと入りまくる。
ゲーム制作に使えるライブラリでは無さそうだなと…。
[ ツッコむ ]
以上です。