FreeBASIC マニュアルのトップに戻る

FreeBASIC ExtLibfmod

目次→その他→ライブラリ・ヘッダー索引FMOD←オリジナル・サイト
目次→FreeBASIC のハッキング→FreeBASIC でのハッキングのための情報外部ライブラリ索引FMOD←オリジナル・サイト

FMOD


殆どすべての形式をサポートしている、音声ライブラリ。

ウエブ・サイト: https://www.fmod.com/core
利用できる環境: Win32, Linux
include するヘッダー: fmod.bi
ヘッダー・バージョン: 3.75
使用例: examples/sound/FMOD/

渡辺注1:UsingFMOD_A_Tutorial.zip を、下記でダウンロードできます。
https://github.com/Auios/FreeBasic_Stuff/tree/master/2/Freebasic%20tutorials/lesson%202/LachieLesson2
FreeBasic_Stuff 全体のダウンロード方法:
左上の、「<>Code」というタブをクリックします。すると、画面右に「Clone or download」という緑色のボタンが表示されます。これをクリックすると、「Download ZIP」というボタンが現れるので、それをクリックすると圧縮ファイルでダウンロードできます。
この、GitHub のファイルをダウンロードする方法を教えていただいたサイト。
http://pineplanter.moo.jp/non-it-salaryman/2016/02/13/github-download-files/

渡辺注2:FMOD.dll は、.bas ファイルと同じフォルダか、C:\Windows\System32 フォルダに保存します。
(参照:Windows で共有ライブラリを使う)

例1(MIDI):
渡辺注:MIDI 単音の再生方法は、MIDI 音を再生 を参照下さい。

#include once "fmod.bi"

Const SOUND_FILE = "athletic.mid"

If (FSOUND_GetVersion() < FMOD_VERSION) Then
    Print "FMOD バージョン不適合"
    Sleep
    End 1
End If

If (FSOUND_Init(44100, 32, 0) = 0) Then
    Print "FMOD を初期化できません"
    Sleep
    End 1
End If

Dim As FMUSIC_MODULE Ptr song = FMUSIC_LoadSong(SOUND_FILE)
If (song = 0) Then
    Print "FMOD は '" & SOUND_FILE & " をロードできません'"
    FSOUND_Close()
    Sleep
    End 1
End If

FMUSIC_PlaySong(song)

Print "再生中; 何かキー入力で終了します..."
Sleep

FMUSIC_FreeSong(song)
FSOUND_Close()


例2(MP3):
'' FMOD に基づく mp3 プレーア

#include once "fmod.bi"

Const SOUND_FILE = "20161008200100_1_english.mp3"

Sub print_all_tags(ByVal stream As FSOUND_STREAM Ptr)
    Dim As Integer count = 0
    FSOUND_Stream_GetNumTagFields(stream, @count)

    For i As Integer = 0 To (count - 1)
        Dim As Integer tagtype, taglen
        Dim As ZString Ptr tagname, tagvalue
        FSOUND_Stream_GetTagField(stream, i, @tagtype, @tagname, @tagvalue, @taglen)
        Print Left(*tagname, taglen)
    Next
End Sub

Function get_tag _
    ( _
        ByVal stream As FSOUND_STREAM Ptr, _
        ByVal tagv1 As ZString Ptr, _
        ByVal tagv2 As ZString Ptr _
    ) As String

    Dim tagname As ZString Ptr, taglen As Integer

    FSOUND_Stream_FindTagField(stream, FSOUND_TAGFIELD_ID3V1, tagv1, @tagname, @taglen)
    If (taglen = 0) Then
        FSOUND_Stream_FindTagField(stream, FSOUND_TAGFIELD_ID3V2, tagv2, @tagname, @taglen)
    End If

    Return Left(*tagname, taglen)
End Function

    If (FSOUND_GetVersion < FMOD_VERSION) Then
        Print "FMOD バージョン " + Str(FMOD_VERSION) + " 以上が必要です!"
        Sleep
        End 1
    End If

    If (FSOUND_Init(44100, 4, 0) = 0) Then
        Print "FMOD を初期化できません"
        Sleep
        End 1
    End If

    FSOUND_Stream_SetBufferSize(50)

    Dim As FSOUND_STREAM Ptr stream = FSOUND_Stream_Open(SOUND_FILE, FSOUND_MPEGACCURATE, 0, 0)
    If (stream = 0) Then
        Print "FMOD は '" & SOUND_FILE & " をロードできません'"
        FSOUND_Close()
        Sleep
        End 1
    End If

    '' いくつかのメタ情報を表示するために、mp3 タグを読み取ります。
    Print "題名:", get_tag(stream, "TITLE", "TIT2")
    Print "アルバム:", get_tag(stream, "ALBUM", "TALB")
    Print "演奏者:", get_tag(stream, "ARTIST", "TPE1")
    ''print_all_tags(stream)

    Print "mp3 再生中, キー入力で終了します..."
    FSOUND_Stream_Play(FSOUND_FREE, stream)

    While (Inkey() = "")
        If (FSOUND_Stream_GetPosition(stream) >= FSOUND_Stream_GetLength(stream)) Then
            Exit While
        End If
        Sleep 50, 1
    Wend
   
    FSOUND_Stream_Stop(stream)
    FSOUND_Stream_Close(stream)
    FSOUND_Close()


外部ライブラリー目次に戻る

ページ歴史:2020-12-31 13:45:38
日本語翻訳:WATANABE Makoto、原文著作者:SirMud

ホームページのトップに戻る

表示-非営利-継承