相关疑难解决方法(0)

NAudio使用C#播放正弦波x毫秒

我正在使用NAudio播放给定频率的正弦波,如在NAudio的博客文章Playback of Sine Wave中.我只想让声音播放()x毫秒,然后停止.

我尝试了一个thread.sleep,但声音立即停止.我尝试了一个计时器,但是当处理WaveOut时,会出现一个跨线程异常.

我尝试了这段代码,但是当我打电话给beep时,程序会冻结.

public class Beep
{
    public Beep(int freq, int ms)
    {
        SineWaveProvider32 sineWaveProvider = new SineWaveProvider32();
        sineWaveProvider.Amplitude = 0.25f;
        sineWaveProvider.Frequency = freq;

        NAudio.Wave.WaveOut waveOut = new NAudio.Wave.WaveOut(WaveCallbackInfo.FunctionCallback());
        waveOut.Init(sineWaveProvider);
        waveOut.Play();
        Thread.Sleep(ms);
        waveOut.Stop();
        waveOut.Dispose();
    }
}

public class SineWaveProvider32 : NAudio.Wave.WaveProvider32
{
    int sample;

    public SineWaveProvider32()
    {
        Frequency = 1000;
        Amplitude = 0.25f; // Let's not hurt our ears
    }

    public float Frequency { get; set; }
    public float Amplitude { …
Run Code Online (Sandbox Code Playgroud)

c# trigonometry naudio wave

6
推荐指数
1
解决办法
4716
查看次数

标签 统计

c# ×1

naudio ×1

trigonometry ×1

wave ×1