Может ли многоканальная аудиосвертка в реальном времени выполняться в приложении C#? - PullRequest
1 голос
/ 26 февраля 2020

В частности, я хочу выполнить двухканальную операцию свертки для аудиофайла при воспроизведении. т.е. чтобы добавить эффект реверберации к файлу с помощью импульсного отклика, прежде чем он будет отправлен на звуковую карту для воспроизведения.

Существует явное отсутствие примеров или ссылок на выполнение этой операции в режиме реального времени в C# заявка.

Библиотеки NAudio (и, возможно, CScore ) выглядят наиболее многообещающе, но отсутствие встроенного механизма свертки кажется странным, скорее всего, потому что не достаточно вызова для или это более вероятно, что управляемое приложение не подходит для таких операций?

Поэтому оно заставляет меня задать опубликованный вопрос Может ли многоканальная аудиосвертка в реальном времени выполняться в C# приложение?

1 Ответ

0 голосов
/ 26 февраля 2020

Да, нет проблем, вы можете сделать это. Однако приложения C# не очень хороши для воспроизведения аудио из-за возможных задержек при сборке мусора. Вам понадобится довольно большой буфер на звуковой карте, и это вносит задержку в ваш сигнал. Из файла, который не проблема, с микрофона в режиме реального времени это не так здорово. У меня есть система, которая воспроизводит три музыкальных потока c одновременно на трех отдельных звуковых картах и ​​мультиплексирует в дополнительных речевых файлах с приглушением всего, записанного в C#. Я также запускаю потоки воспроизведения с более высоким приоритетом.

Относительно того, почему не существует библиотеки для этого (возможно, есть), это довольно тривиальный кусок кода: просто умножение и добавление одномерного потока значения.

...