Ok I got it working after much trial and error and demo referencing. The working code is below if anyone needs a VB example.
Dim asioOut As AsioOut
Dim reader As AudioFileReader
Dim waveChannel As WaveChannel32
Dim waveToSample As WaveToSampleProvider
Dim meterSampleProvider As MeteringSampleProvider
Dim mixer As MixingSampleProvider
Dim sampleToWave As SampleToWaveProvider
Dim waveFormat As WaveFormat
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
For Each device In AsioOut.GetDriverNames()
comboBoxAsioDevice.Items.Add(device)
Next
If comboBoxAsioDevice.Items.Count > 0 Then
comboBoxAsioDevice.SelectedIndex = 0
End If
waveFormat = NAudio.Wave.WaveFormat.CreateIeeeFloatWaveFormat(44100, 2)
mixer = New MixingSampleProvider(waveFormat)
reader = New AudioFileReader("C:\samples\snare.wav")
waveChannel = New WaveChannel32(reader)
waveToSample = New WaveToSampleProvider(waveChannel)
meterSampleProvider = New MeteringSampleProvider(waveToSample)
AddHandler meterSampleProvider.StreamVolume, AddressOf OnPostVolumeMeter
mixer.AddMixerInput(meterSampleProvider)
sampleToWave = New SampleToWaveProvider(mixer)
asioOut = New AsioOut(comboBoxAsioDevice.Text)
asioOut.ChannelOffset = GetUserSpecifiedChannelOffset()
asioOut.Init(sampleToWave)
asioOut.Play()
End Sub
Private Function GetUserSpecifiedChannelOffset() As Integer
Dim channelOffset As Integer = 0
Integer.TryParse(textBoxChannelOffset.Text, channelOffset)
Return channelOffset
End Function
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
'play the sample
waveChannel.Position = 0
End Sub
Public Sub OnPostVolumeMeter(sender As Object, e As StreamVolumeEventArgs)
VolumeMeter1.Amplitude = e.MaxSampleValues(0)
End Sub







