Попытка понять буферы относительно NAudio в C #

Я студент химии, пытаюсь использовать NAudio в C # для сбора данных с микрофона моего компьютера (планирую переключиться на аудиопорт позже, на случай, если уместно, как на это ответят). Я понимаю, что такое исходные потоки и как NAudio использует обработчик событий, чтобы узнать, стоит ли начинать чтение информации из указанного потока, но я озадачен, когда дело доходит до работы с данными, считанными из потока. Насколько я понимаю, буферный массив заполняется в байтовом или WAV-формате из исходного потока (с помощью команды AddSamples). Пока все, что я пытаюсь сделать, это заполнить буфер и записать его содержимое в консоль или сделать простую визуализацию. Кажется, я не могу вывести свои значения из буфера, и я пытался рассматривать его как WAV и байтовый массив. Может ли кто-нибудь помочь мне понять, как работает NAudio с нуля, и как извлечь данные из буфера и сохранить их в более полезном формате (т.е. удваивает)? Вот код, который у меня есть для обработки NAudio и всего, что с ним идет:

public NAudio.Wave.BufferedWaveProvider waveBuffer = null; // clears buffer 

NAudio.Wave.WaveIn sourceStream = null; // clears source stream

public void startRecording(int samplingFrequency, int deviceNumber, string fileName)
{       
    sourceStream = new NAudio.Wave.WaveIn(); // initializes incoming audio stream
    sourceStream.DeviceNumber = deviceNumber; // specifies microphone device number 
    sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(samplingFrequency, NAudio.Wave.WaveIn.GetCapabilities(deviceNumber).Channels); // specifies sampling frequency, channels

    waveBuffer = new NAudio.Wave.BufferedWaveProvider(sourceStream.WaveFormat); // initializes buffer

    sourceStream.DataAvailable += new EventHandler<NAudio.Wave.WaveInEventArgs>(sourceStream_DataAvailable); // event handler for when incoming audio is available

    sourceStream.StartRecording();

    PauseForMilliSeconds(500); // delay before recording is stopped          

    sourceStream.StopRecording(); // terminates recording
    sourceStream.Dispose();
    sourceStream = null;
}

void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
{
    waveBuffer.AddSamples(e.Buffer, 0, e.BytesRecorded); // populate buffer with audio stream
    waveBuffer.DiscardOnBufferOverflow = true;
}

Ответы на вопрос(1)

Ваш ответ на вопрос