■97065 / inTopicNo.2) |
Re[1]: XAudio2を用いて曲を再生する方法 |
□投稿者/ 魔界の仮面弁士 (3021回)-(2021/03/22(Mon) 17:08:02)
|
■No97064 (プログラマー さん) に返信
> 拡張子はMP3, MID, WAVのファイルを対象としております。
XAudio2 は MIDI に対応していません。
MCI を試してみてください。
https://dobon.net/vb/dotnet/programing/playmidifile.html
WAV の再生は可能ですが、それ以外で直接扱える圧縮形式は、
ADPCM / WMA じゃなかったかな…。
MP3 については、SharpDX.MediaFoundation を使うことで
XAudio2 にできそうな情報がありましたが、詳しくは見てないです。
http://sygh.hatenadiary.jp/entry/2015/09/23/174346
https://docs.microsoft.com/ja-jp/windows/win32/medfound/supported-media-formats-in-media-foundation
> XAudio2を利用して音楽ファイルを再生する方法を教えていただけませんか。
とりあえず WAV 版を書いておきます。
ただ、WAV なら My.Computer.Audio.Play という手もあるんですよね。
Public Class Form1
Private WithEvents xa As SharpDX.XAudio2.XAudio2
Private WithEvents mstVoice As SharpDX.XAudio2.MasteringVoice
Private WithEvents srcVoice As SharpDX.XAudio2.SourceVoice = Nothing
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
xa = New SharpDX.XAudio2.XAudio2()
mstVoice = New SharpDX.XAudio2.MasteringVoice(xa)
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
mstVoice.Dispose()
srcVoice.Dispose()
xa.Dispose()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim bin As Byte() = System.IO.File.ReadAllBytes("C:\Windows\Media\Ring05.wav")
Dim ss As New SharpDX.Multimedia.SoundStream(New System.IO.MemoryStream(bin))
Dim buffer As New SharpDX.XAudio2.AudioBuffer(ss)
srcVoice = New SharpDX.XAudio2.SourceVoice(xa, ss.Format, True)
srcVoice.SubmitSourceBuffer(buffer, ss.DecodedPacketsInfo())
srcVoice.Start()
End Sub
End Class
|
|