2017-02-18 3 views
1

Я искал помощь с ошибкой, которая, как представляется, возникает на некоторых устройствах ASIO при воспроизведении звука непосредственно на устройстве ASIO. Если звук WAV не остановлен до достижения цели, приложение будет висеть и постоянно воспроизводить быстрые вспышки последнего звука (это звучит как эффект заикания). В этот момент поток пользовательского интерфейса будет зависать, и приложение должно быть принудительно закрыто.NAudio ASIO Воспроизведение на некоторых устройствах

Эта проблема может быть воссоздана с использованием «ASIO Direct Demo», предоставленного на сайте gigaub от NAudio. Все, что я делаю, это открыть WAV-файл в демо и нажать кнопку воспроизведения. Как только звук достигнет конца, приложение зависает.

Я протестировал эту проблему и обнаружил, что это происходит на Behringer X-Air x18, но не M-Audio M-Track MKII. Мне было интересно, нашел ли кто-нибудь способ кодировать эту ошибку? Спасибо.

PS - NAudio - УДИВИТЕЛЬНЫЙ фреймворк, а Марк Хит (автор) имеет отличные уроки по множественному количеству очков, которые полностью стоят абонентской платы.

+0

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

ответ

0

Некоторые люди сообщали о проблемах с автоматической остановкой в ​​ASIO (где вы доходите до конца вашего ввода и пытаетесь остановить воспроизведение с помощью обратного вызова ASIO). Таким образом, одним простым способом является передача бесконечного потока в AsioOut и обнаружение, когда он прошел конец вашего звука, а затем остановить воспроизведение извне.

+0

Привет, Марк, спасибо за быстрый ответ и за отличную основу. Я видел подобный ответ на другом посту, но я не мог найти никакой реализации бесконечного потока. У вас есть какие-либо сообщения в блоге или ответы, которые описывают, как это можно сделать. Надеюсь, что я смогу создать поток и передать его мультиплексирующему аппарату на существующий выходной канал. –

+0

Несколько потоков в NAudio никогда не заканчиваются. WaveChannel32 можно настроить таким образом, и я думаю, что большинство потоков микширования тоже. Очень легко написать собственный IWaveProvider, который в своем методе чтения читает из источника, а затем просто возвращает тишину после того, как источник закончился –

Смежные вопросы