mieki256's diary



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は鳴ったけど、ゲーム制作用には使えない印象。

インストール :

前述の掲示板から、ソースコードをコピペして、ローカルで .bi や .bas として保存する。
  • 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 が鳴ってくれたけれど…。前の再生がまだ終わってない状態で連続して鳴らすと、前の再生をブツ切りして、次の音が最初から再生されてしまう。同時に並行して鳴ってほしいのだけどなあ…。

また、ブツ切りされる際に、ノイズもブチブチと入りまくる。

ゲーム制作に使えるライブラリでは無さそうだなと…。

以上です。

過去ログ表示

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