FMOD
 
音频库支持任何格式。

网址:http://www.fmod.org/index.php/products#FMOD3ProgrammersAPI
支持平台:Win32,Linux
标题包括:fmod.bi
标题版本:3.75
示例:在examples / sound / FMOD /

例子

#include once "fmod.bi"

Const SOUND_FILE = "test.mod"

If (FSOUND_GetVersion() < FMOD_VERSION) Then
    Print "FMOD版本不匹配"
    End 1
End If

If (FSOUND_Init(44100, 32, 0) = 0) Then
    Print "无法初始化FMOD"
    End 1
End If

Dim As FMUSIC_MODULE Ptr song = FMUSIC_LoadSong(SOUND_FILE)
If (song = 0) Then
    Print "FMOD无法加载'" & SOUND_FILE & "'"
    FSOUND_Close()
    End 1
End If

FMUSIC_PlaySong(song)

Print "声音播放;等待按键停止并退出..."
Sleep

FMUSIC_FreeSong(song)
FSOUND_Close()


''基于FMOD的mp3播放器

#include once "fmod.bi"

Const SOUND_FILE = "请将test.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) + "或更高要求!"
        End 1
    End If 

    If (FSOUND_Init(44100, 4, 0) = 0) Then
        Print "无法初始化FMOD"
        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()
        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(流)

    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()