Библиотека Naudio - преобразование SignalGenerator в StreamPlayer

Я создаю в Naudio звуковую волну через SignalGenerator:

var beep1 = (new SignalGenerator() { Frequency = 800, Gain = 0.2 }).Take(TimeSpan.FromSeconds(1));
using (var wo = new WaveOutEvent())
        {
            wo.Init(beep1 );
            wo.Play();
            while (wo.PlaybackState == PlaybackState.Playing)
            {
                Thread.Sleep(500);
            }
        }

При этом, хочу воспроизвести этот сигнал через StreamPlayer (для постоянного потокового воспроизведения):

public class StreamPlayer : IDisposable
{
    private SoundStream stream;
    private WaveOutEvent waveOut;
    private WaveFileReader reader;

    public StreamPlayer(int sampleRate = 8000)
    {
        stream = new SoundStream(sampleRate);
        waveOut = new WaveOutEvent();
    }

    /// <summary>
    /// Write audio samples into stream
    /// </summary>
    public void Write(params short[] samples)
    {
        stream.Write(samples);
    }

    /// <summary>
    /// Write audio samples into stream
    /// </summary>
    public void Write(IEnumerable<short> samples)
    {
        stream.Write(samples);
    }

    /// <summary>
    /// Plays sound
    /// </summary>
    public void PlayAsync()
    {
        ThreadPool.QueueUserWorkItem((_) =>
        {
            reader = new WaveFileReader(stream);
            waveOut.Init(reader);
            waveOut.Play();
        });
    }

    /// <summary>
    /// Stop playing
    /// </summary>
    public void Stop()
    {
        waveOut.Stop();
    }

    /// <summary>
    /// Volume
    /// </summary>
    public float Volume
    {
        get { return waveOut.Volume; }
        set { waveOut.Volume = value; }
    }

    /// <summary>
    /// Count of unread bytes in buffer
    /// </summary>
    public int Buffered
    {
        get { return stream.Buffered; }
    }

    public void Dispose()
    {
        waveOut.Dispose();
        reader.Dispose();
        stream.Dispose();
    }
}

Как мне запихать SignalGenerator в StreamPlayer? Получить из SignalGenerator short?


Ответы (0 шт):