C# NAudio:如何访问 SignalGenerator 提供的示例以便将它们保存为 WAVE 格式?

C# NAudio: How to access the samples provided by SignalGenerator in order to save them to WAVE format?

我有以下构造函数,它成功地将粉红噪声直接播放到我的音频输出设备:

public WAVEManager(string inputFileName, string outputFileName)
{
        IWavePlayer outputDevice;
        outputDevice = new WaveOutEvent();

        SignalGenerator pinkNoiseGenerator = new SignalGenerator();
        pinkNoiseGenerator.Type = SignalGeneratorType.Pink;
        outputDevice.Init(pinkNoiseGenerator);
        outputDevice.Play();

        // Wait for 10 seconds
        System.Threading.Thread.Sleep(10000);
}

一切正常。我知道现在如果我想写入 .wav,我必须像这样初始化一个 WaveFileWriter:

WaveFileWriter writer = new WaveFileWriter(outputFileName, pinkNoiseGenerator.WaveFormat);

然后写入创建的WAVE文件:

writer.WriteData(buffer, 0, numSamples);

问题是我不知道如何直接从 pinkNoiseGenerator 填充 buffer。我搜索了文档和示例,但找不到与此相关的任何内容 - 我想它必须涉及 SignalGenerator class 的 .Read() 方法,但随着生成器无限期地播放,它没有定义的长度。对我来说,这意味着 buffer 不能像我们直接从输入 WAVE 文件读取(据我所知)那样填充。

有人能给我指出正确的方向吗?

谢谢。

以下是创建包含 10 秒粉红噪音的 WAV 文件的方法:

var pinkNoiseGenerator = new SignalGenerator();
pinkNoiseGenerator.Type = SignalGeneratorType.Pink;
WaveFileWriter.CreateWaveFile16("pinkNoise.wav", pinkNoiseGenerator.Take(TimeSpan.FromSeconds(10)));