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