Extended Solution:
#Region " NAudio "
Public Class NAudio_Helper
' [ NAudio ]
'
' // By Elektro H@cker
'
' Instructions:
' 1. Add a reference for the "NAudio.dll" file into the project.
'
' Examples:
'
' Dim Stream As NAudio.Wave.WaveFileReader = New NAudio.Wave.WaveFileReader(File)
'
' Set_Volume(Stream, 0.5)
' Play_Sound(Stream, 1)
' Play_Sound(My.Resources.AudioFile)
' Play_Sound("C:\File.wav")
' Play Sound (File)
Private Sub Play_Sound(ByVal File As String, _
Optional ByVal Volume As Single = Nothing)
Dim Wave As New NAudio.Wave.WaveOut
Select Case File.Split(".").Last.ToLower
Case "aiff"
Wave.Init(New NAudio.Wave.AiffFileReader(File))
Case "mp3"
Wave.Init(New NAudio.Wave.Mp3FileReader(File))
Case "wav"
Wave.Init(New NAudio.Wave.WaveFileReader(File))
Case Else
Wave.Init(New NAudio.Wave.BlockAlignReductionStream(NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(New NAudio.Wave.AudioFileReader(File))))
End Select
If Not Volume = Nothing Then Wave.Volume = Volume
Wave.Play()
End Sub
' Play Sound (MemoryStream)
Private Sub Play_Sound(ByVal Stream As IO.MemoryStream, _
Optional ByVal Volume As Single = Nothing)
Dim Wave As New NAudio.Wave.WaveOut
Wave.Init(New NAudio.Wave.BlockAlignReductionStream(NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(New NAudio.Wave.WaveFileReader(Stream))))
If Not Volume = Nothing Then Wave.Volume = Volume
Wave.Play()
End Sub
' Play Sound (Unmanaged MemoryStream)
Private Sub Play_Sound(ByVal Stream As IO.UnmanagedMemoryStream, _
Optional ByVal Volume As Single = Nothing)
Dim Wave As New NAudio.Wave.WaveOut
Wave.Init(New NAudio.Wave.BlockAlignReductionStream(NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(New NAudio.Wave.WaveFileReader(Stream))))
If Not Volume = Nothing Then Wave.Volume = Volume
Wave.Play()
End Sub
' Play Sound (NAudio Stream)
Private Sub Play_Sound(ByVal NAudio_Stream As Object, _
Optional ByVal Volume As Single = Nothing)
Dim Wave As New NAudio.Wave.WaveOut
Wave.Init(NAudio_Stream)
If Not Volume = Nothing Then Wave.Volume = Volume
Wave.Play()
End Sub
' Set Volume (NAudio Stream)
Private Function Set_Volume(ByVal NAudio_Stream As Object, ByVal Volume As Single) _
As NAudio.Wave.WaveOut
Dim Wave As New NAudio.Wave.WaveOut
Wave.Init(NAudio_Stream)
Wave.Volume = Volume
Return Wave
End Function
End Class
#End Region