Help Center
Help CenterFreeBASICTutorials

FMOD

Documentation

Audio library supporting just about any format.

Website: https://www.fmod.com/core
Platforms supported: Win32, Linux
Headers to include: fmod.bi
Header version: 3.75
Examples: in examples/sound/FMOD/

Example

#include Once "fmod.bi"



Const SOUND_FILE = "test.mod"



If (FSOUND_GetVersion() < FMOD_VERSION) Then

    Print "FMOD version mismatch"

    End 1

End If



If (FSOUND_Init(44100, 32, 0) = 0) Then

    Print "Could not initialize FMOD"

    End 1

End If



Dim As FMUSIC_MODULE Ptr song = FMUSIC_LoadSong(SOUND_FILE)

If (song = 0) Then

    Print "FMOD could not load '" & SOUND_FILE & "'"

    FSOUND_Close()

    End 1

End If



FMUSIC_PlaySong(song)



Print "Sound playing; waiting for keypress to stop and exit..."

Sleep



FMUSIC_FreeSong(song)

FSOUND_Close()


'' mp3 player based on FMOD



#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 version " + Str(FMOD_VERSION) + " or greater required!"

        End 1

    End If 



    If (FSOUND_Init(44100, 4, 0) = 0) Then

        Print "Could not initialize 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 could not load '" & SOUND_FILE & "'"

        FSOUND_Close()

        End 1

    End If



    '' Read out mp3 tags to show some meta information

    Print "Title:", get_tag(stream, "TITLE", "TIT2")

    Print "Album:", get_tag(stream, "ALBUM", "TALB")

    Print "Artist:", get_tag(stream, "ARTIST", "TPE1")

    ''print_all_tags(stream)



    Print "Playing mp3, press a key to exit..."

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