tl; dr Я хочу поместить данные из события asio_DataAvailable(object sender, AsioAudioAvailableEventArgs e)
в BufferedWaveProvider
и воспроизвести их.
Здравствуйте,
Я пытаюсь создать приложение, которое будет записывать аудио в файл, а также воспроизводить его пользователю во время записи. Мне удалось сделать это с помощью WaveInEvent и WaveOutEvent и BufferedWaveProvider. Но я думал, что у ASIO будет лучшая задержка, поэтому я хотел сделать то же самое, используя ее.
Я нашел здесь вопросы по этой теме, но ни один из них не содержал полного ответа, и я не мог решить их, основываясь на них. Не могли бы вы опубликовать полный рабочий пример кода?
NAudio Asio Запись и воспроизведение
Как записывать и воспроизводить с помощью NAudio с помощью AsioOut
Я попробовал версию с Marshal.Copy, но получил IndexOutOfRangeException. Похоже, что в буферах (e.InputBuffers[i]
) недостаточно сэмплов. Я также хочу продолжить работу со звуком (сохранить его в файл) и одновременно воспроизвести другой звук (используя MixingSampleProvider), поэтому простое копирование буферов, вероятно, не сработает для меня.