Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用NAudio播放口吃_Vb.net_Naudio - Fatal编程技术网

Vb.net 使用NAudio播放口吃

Vb.net 使用NAudio播放口吃,vb.net,naudio,Vb.net,Naudio,当我播放音频文件(Wave)时,我会口吃 我试图改变我链接在一起的ISampleProviders的实例化顺序 公共属性FilePath()作为字符串 得到 返回m_文件路径 结束 Set(ByVal New_FilePath As String) Try Dim nCount As Integer = 0 Dim retval As Integer = 0 If New_FilePath.Leng

当我播放音频文件(Wave)时,我会口吃

我试图改变我链接在一起的ISampleProviders的实例化顺序

公共属性FilePath()作为字符串 得到 返回m_文件路径 结束

    Set(ByVal New_FilePath As String)
        Try
            Dim nCount As Integer = 0
            Dim retval As Integer = 0

            If New_FilePath.Length = 0 Then
                DisposeInputResources()
                m_FilePath = ""
                ChangeStatus_Controls(False)
                Exit Property
            End If

            PositionTrackBar.Value = 0
            m_Position = 0
            m_LastPosition = 0
            durationLabel.Text = ConvertTime(0)
            m_FilePath = New_FilePath
            DisposeInputResources()
            AudioFileReader1 = New AudioFileReader(FilePath)
            playerStatus = PhilipsStatus.stopped
            SpeedControl = New VarispeedSampleProvider(AudioFileReader1, 100, New SoundTouchProfile(False, False))
            SpeedControl.PlaybackRate = 1
            AutomaticGainControl = New SoftLimiter(SpeedControl)
            AutomaticGainControl.Boost.CurrentValue = fileAmplificationTrackBar.Value / 2
            'AudioFileReader1 = New AudioFileReader(FilePath)
            'Equalizer1 = New EqualizerClass(AudioFileReader1, bands)
            'SpeedControl = New VarispeedSampleProvider(Equalizer1, 100, New SoundTouchProfile(False, False))
            'SpeedControl.PlaybackRate = 1
            'VolumeSampleProvider1 = New VolumeSampleProvider(SpeedControl)
            audioLengthLabel.Text = ConvertTime(AudioFileReader1.TotalTime.TotalSeconds)
            AudioFileReader1.CurrentTime = TimeSpan.Zero
            If WaveOut1 IsNot Nothing Then WaveOut1.Stop()
            WaveOut1 = New WaveOutEvent()
            WaveOut1.Init(AutomaticGainControl)
            Thread.Sleep(1000)
            nCount = 60
            Volume = m_Volume
            Speed = m_Speed
            Position = 0
            PressStopKey()
            Dim sWAVFileName As String = Nothing

            If Path.GetExtension(New_FilePath).ToUpper() = ".DSS" Then
                sWAVFileName = Path.ChangeExtension(New_FilePath, "WAV")
                'I assume that ConvertDSSToWAV() has already been called to convert the .DSS to .WAV if necessary
                New_FilePath = sWAVFileName
                m_FilePath = sWAVFileName
            End If

            PositionTrackBar.Maximum = AudioFileReader1.TotalTime.TotalSeconds
            PositionTrackBar.Minimum = 0
            PositionTrackBar.LargeChange = PositionTrackBar.Maximum * 0.1
            If PositionTrackBar.LargeChange = 0 Then PositionTrackBar.LargeChange = 1
            PositionTrackBar.SmallChange = PositionTrackBar.Maximum * 0.01
            If PositionTrackBar.SmallChange = 0 Then PositionTrackBar.SmallChange = 1
            PositionTrackBar.TickFrequency = PositionTrackBar.SmallChange
            ChangeStatus_Controls(True)
        Catch ex As Exception
            MessageBox.Show("Property Set FilePath(New_FilePath= " & New_FilePath & ")" & vbCrLf & ex.Message, "FootPedalsControl", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Set
End Property
在这段代码中,我链接ISampleProviders,并在每次加载新文件时将它们传递给WaveOut.Init。我先停止摇摆

期待一个流畅的聆听体验(听写)。
实际结果:播放时出现口吃。

这解决了我的问题:每次停止播放时,我都会破坏信号链。当播放再次启动时,我重建信号链。

这个C看起来有点可疑;-)它可以工作,但有时播放时会出现口吃。你说可疑是什么意思?它是
VB
:-)。。。。。我只是开玩笑。一般来说,这是一个很难回答的问题,因为设置将很难复制。哦,哈哈!我忘了这部分代码是VB。我剩下的代码是C#。多亏了马克·希思,我解决了这个问题。我发现了他几年前写的一篇文章。几个月前我读过这篇文章,但随着这些事情的发展,你总是在第一次阅读时就对它们有了全面的了解。谢谢你的努力!感谢马克·希思对这一领域的贡献!有没有办法把这个问题标记为已回答。顺便说一下,如果有人想知道我做了什么,下面是答案。每次停止播放并在下次播放时重新创建时,我都会破坏信号链。