oggを再生する

今回はOggの再生です。OggといってもOggVorbisなので誤解しないように。
私のov.dllを使ってもいいのですが、手前味噌みたいなのは嫌なので、ここでは素直にVox.DLLを使います。
Vox.DLLはVectorからダウンロードできます。
まず、ABで関数を呼び出す準備をしておきます。
'abvox.sbp
'OGGをロード
Declare Function VoxLoad Lib "vox.dll" ( _
    ByVal pFileName As BytePtr) As Integer
'OGGを再生
Declare Function VoxPlay Lib "vox.dll" ( _
    ByVal ID As Integer) As Long
'再生を一時停止
Declare Function VoxPause Lib "vox.dll" ( _
    ByVal ID As Integer) As Long
'サウンドドライバーを解放
Declare Function VoxRelease Lib "vox.dll" ( _
    ByVal ID As Integer) As Long
'ループ再生回数を設定
Declare Function VoxSetLoop Lib "vox.dll" ( _
    ByVal ID As Integer, ByVal Count As Integer) As Long
'サウンドカードが存在するか?
Declare Function VoxCheckDevice Lib "vox.dll" ( _
    ByVal ID As Integer) As Long
'音量変更
Declare Function VoxSetVolume Lib "vox.dll" ( _
    ByVal ID As Integer, ByVal Volume As Integer) As Long
'音量を取得
Declare Function VoxGetVolume Lib "vox.dll" ( _
    ByVal ID As Integer) As Integer
'フェード
Declare Function VoxFade Lib "vox.dll" ( _
    ByVal ID As Integer, ByVal StartVolume As Integer, _
    ByVal EndVolume As Integer, ByVal FadeTime As Integer) As Long
'削除
Declare Function VoxDelete Lib "vox.dll" ( _
    ByVal ID As Integer) As Long
'曲の全長を取得
Declare Function VoxGetTotalTime Lib "vox.dll" ( _
    ByVal ID As Integer) As Dword
'再生位置を取得
Declare Function VoxGetCurrentTime Lib "vox.dll" ( _
    ByVal ID As Integer) As Dword
'再生位置を変更
Declare Function VoxSeek Lib "vox.dll" ( _
    ByVal ID As Integer, ByVal Time As Dword) As Long
'再生状態を調べる
Declare Function VoxGetStatus Lib "vox.dll" ( _
    ByVal ID As Integer) As Integer
これで関数を呼び出すことは出来ます。私はファイル名をabvox.sbpで保存しました。
次に再生です。簡単です。
#include"abvox.sbp"
#console
Dim ID As Integer

Print "Vox.DLLの著作権は野村XXさんにあります。"
ID = VoxLoad("hoge.ogg")
VoxPlay(ID)

While VoxGetStatus(ID)
    Print Int(VoxGetCurrentTime(ID)/1000)
    Sleep(500)
Wend

VoxRelease(ID)
VoxDelete(ID)
エクセル(VBA)でOgg再生なんて芸当も多分可能ですね。