Раз пошла на форуме такая движуха с конверторами , я освежу что есть WASAPI и что есть ASIO и KS в применении к операционкам от MS. Так как многие именно так и будут использовать конверторы.
Золото.
1 ASIO - Audio Stream Input/Output это просто протокол передачи данных.Обычно поддержка ASIO реализована изначально в драйвере звуковой карты или любого другого прибора , имеющего драйвер поддержки для вывода звука. Например ЦАП с поддержкой USB либо конвертор.Разработала этот протокол фирма Steinberg
Цель была проста - решить следующие проблемы:
-
Минимизация задержек записи и воспроизведения (что важно - так как все пошло от музыкальных инструментов и МИДИ к последующему применению к выводу на ЦАПы и прочие дела)
-
Предоставление стандартного интерфейса (описанного в своем СДК для программирования ) для мультиканального ввода и вывода звуковой информации.
Технология ASIO способна обеспечить задержки менее 2мс оставляя достаточно времени (минимально достаточно при самых “быстрых” значениях) для процессирования и обработки для запаздывающих по разным причинам пакетов.
Например Kernel Streaming обеспечивает задержки не менее 20-21мс - а в DirectSound доходит и до задержки в 50-80 мс. Чем задержки выше - тем хуже реакция устройства.
Весь процесс организован от и до следующим образом.
Процесс работы приложения с ASIO разделяется на несколько основных этапов:
-
Инициализация, выбор драйвера (начальная процедура при подключении нашего прибора - взяли пульт, тыц… ).
-
Создания аудио буферов (сели в кресло , расслабились готовы к наслаждению )
-
Запуск драйвера ( все закрутилось - начинаем выбираем треки )
-
Работаем с драйвером, копируя данные из входных буферов и в выходные (собственно слушаем музыку)
-
Останавливаем драйвер (собираемся идти гулять с собакой
)
-
Удаляем аудио буферы ( завершаем все плееры, собака несет поводок)
-
Отключаем драйвер от приложения (собака счастлива и крутится у дверей - уходим на прогулку ).
Основная функция ASIO проста - обеспечить поддержку минимального буфера для минимальной задержки воспроизведения звука.При этом устройство должно работать стабильно, не пропускать пакеты, не вызывать перервывов или сбоев в приеме-передаче данных. Как написан драйвер ASIO - так собственно и выглядит (слышен ) результат.
Однако помимо возможности регулировать объем буфера, в большинстве случаев ASIO выполняет ту же задачу, что и режим WASAPI, т.к. при выборе этого интерфейса, звуковой поток направляется сразу в драйвер звукового устройства, минуя микшер ОС. Потому как так надо для профессионального использования этого протокола.
Сам буфер это величина " кэширования". Разные звуковые устройства могут поддерживать разные размеры, одни поддерживает размеры буферов кратные степени двух, длительность аудио данных в которых выражется дробным количеством миллисекунд, другие - только буферы длительностью в целые миллисекунды.
Размер буфера можно задать с помощью окна параметров АSIO-интерфейса устройства , вызываемого с помощью кнопки Control Panel. Содержание этого окна зависит от его драйвера , но, как правило, в нем присутствует параметр Buffer Latency или Buffer Size, определяющий задержку при вводе/выводе звуковых данных. Вот тут то свобода творчества - устройство обязательно отреагирует на “пришпоривание” или “отпускание поводьев” разницей в звуке.
Вот примерно так !
Наш новый герой , обладатель серебряной медали
Режим вывода звука WASAPI (Windows Audio Session API)
В Майкрософт тоже сидят не совсем уж любители плохого звука и , начиная с Висты, появился режим WASAPI который должен был заменить необходимость в ASIO поддержке для простых пользователей ( и улучшенным по звуку вариантом режима KS в WINXP) .
Коротко - это специальный метод вывода звука, поддерживающий побитовое воспроизведение (что важно) и выключение всех остальных звуков в среде Windows Vista и Windows 7 (что не менее важно). Кроме того для производителя оборудования (а значит и драйверов - куда без них ) оставили возможность использования двух режимов WASAPI (Общий режим) и Wasapi Exclusive Mode (Монопольный режим) - между ними есть не только отличия в приоритетах и использовании (утилизации) процессора.
Для нас важно , что при использовании WASAPI (нормальный режим) динамический диапазон сужается на 3 дБ ( по отношению к 90 дБ полного диапазона ,для примера).
Кроме того у WASAPI еще существует два отдельных способа использования алгоритма буфферизации (вспомните как это важно по аналогии с ASIO) — Event и Push .
Event предназначен для решения проблем совместимости с USB устройствами и отличается щадящим алгоритмом буферизации . Основным и рекомендованным считается Push - вот такое характерное решение головной боли топором…
Если посмотреть на все это громадье вариантов - становится ясно что это все не просто так сделано и усложнено . Собака порылась вот где - WASAPI Exclusive - прямой вывод звука только на одно - уникальное устройство, все остальное игнорируется.Этот режим поддерживают не все плееры . При воспроизведении через WASAPI Exclusive звуковой поток обходит и не использует ни микшер , ни ресемплер ОС (основной гадящий компонент WIN7) .Получается это не всегда - и не на всех платформах.
Все для фронта - все для победы так сказать приводит к потерям. Этот режим , несмотря на подводные камни в использовании ресурсов, очень высокого приоритета загрузки процессора по звуку теоретически может приближаться к ASIO на многих устройствах (но по опыту за совместимость расплата - именно худший звук).
Какие минусы всего этого? Большая сложность управления всем этим хозяйством, нет такой прямой "управляемости " как в ASIO . который уже кажется простым и родным после всего этого буйства вариантов. Ну и конечно полное отсутствие “профессиональных” корней - со всеми вытекающими последствиями по звуку ( драйверы более унифицированные и “безликие” , ограничены жестким АПИ от Майкрософт и скорее предназначенные для транспортировки звука из точки А в точку Б через дебри ОС, обходя ее хребты и горы чем получение звука высокой верности.
Мое мнение - использование логично , если нет поддержки нативного ASIO .
Бронзовый призер
KS (Kernel Streaming )
Если Вы прочитали про золотого и серебряного медалиста все внимательно (а я старался , чтобы это небыло заумно-нудным чтивом, как мог) то возникает вопрос - зачем нужно что-то еще ? Вот этим вопросом мы и займемся.
Что ты такое ?
Kernel Streaming (потоковая передача данных на уровне ядра)
Коротко - это попытка программистов от Майкрософт создать свой универсальный ASIO , причем они замахнулись на “самого Уйльяма нашего Шекспира” - реализовали его с прямым доступом драйвера аудиокарты к буферу памяти приложения-плеера и полным удалением из пути следования всех, без исключения элементов штатного микшера Windows.Поддержка на уровне системных служб должна ,теоретически, давать дополнительную устойчивость всей конфигурации .
Должно бы получиться просто шедевральное произведение, отменяющее все предыдущие варианты вывода за ненадобностью.
Что получилось в итоге ? Увы здесь сработал сценарий ,традиционный для профсектора. Никто не захотел переходить в своих драйверах устройств на новый API при наличии своего “намоленного” устойчиво работающего драйвера ASIO. Преимущества “универсальности” не вывели WDM Kernel Streaming в лидеры.
Опять же Майкрософт славится своей привычкой обновлять что ни поподя ,когда не вздумается. Рынок ,по сути, просто проигнорировал KS .
Плееры, за исключением Фубара, тоже не жалуют KS особым вниманием.
Вывод : если вы используете старое (бывает что и доброе) изделие и оно “от рождения” имеет поддержку ASIO , WASAPI и KS два первых варианта дадут более новые драйверы (если изделие вообще поддерживается) , последний обычно будет ровесник самого изделия. Чем это плохо ? Плохо тем, что со сменой и обновлением операционной системы никто уже не гарантирует что KS будет совместим на том же уровне, что и в той, для которой он разрабатывался. Отсюда и “вылеты” , перезагрузки и “синие экраны” при попытках его применить у части устройств.
“Хотели как лучше, получилось как всегда” - девиз на корпоративном флаге Майкрософт.