Может и у Хило есть, если сделать более реперезентативную выборку. Из экземпляров так десяти-двадцати. В моем случае важно было что устройства отличаются по дате выпуска .
Небольшой обзор по
Pi 2 Design 502DAC — плата расширения для Raspberry Pi с ЦАПом и цифровым выходом
Раз пошла на форуме такая движуха с конверторами , я освежу что есть 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 будет совместим на том же уровне, что и в той, для которой он разрабатывался. Отсюда и “вылеты” , перезагрузки и “синие экраны” при попытках его применить у части устройств.
“Хотели как лучше, получилось как всегда” - девиз на корпоративном флаге Майкрософт.
Добрый день !
Можно, так-же красочно, про кернел стриминг ?
Понимаю, что не всегда драйвер написан корректно, но зачем распространять это утверждение на все случаи?
Все верно мной написано - “не менее” , это значит что такие задержки гарантированы. При стечении обстоятельств (большом шаманском бубне, или другой атрибутике ) возможны и лучшие результаты.
Но ASIO по -прежнему будет впереди планеты всей.
Приятно читать профессионала, а не домыслы. Спасибо, Олег!
Если можно, объясните качественное и техническое отличие кернел стриминг от асио и васапи. У меня, на слух, на кернел стриминг, прозрачнее явно звук, чем на других двух. Глюк? Железо?
https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/low-latency-audio
// Describe constraints for small buffers
static struct
{
KSAUDIO_PACKETSIZE_CONSTRAINTS TransportPacketConstraints;
KSAUDIO_PACKETSIZE_PROCESSINGMODE_CONSTRAINT AdditionalProcessingConstraints[1];
} SysvadWaveRtPacketSizeConstraintsRender =
{
{
1 * HNSTIME_PER_MILLISECOND, // 1 ms minimum processing interval
FILE_256_BYTE_ALIGNMENT, // 256 byte packet size alignment
0, // reserved
1, // 1 processing constraint below
{
STATIC_AUDIO_SIGNALPROCESSINGMODE_DEFAULT, // constraint for default processing mode
128, // 128 samples per processing frame
0, // N/A hns per processing frame
},
},
};
Прямо как в анекдоте:
“Юстас - Центру… Нарисовал на заборе танк - уже три дня роют около забора противотанковый ров. Продолжаю наблюдение” Было гладко на бумаге…
Давайте попробуем проанализировать.
Действительно, хотелось бы послушать начальника транспортного цеха…
Т.е. при лучше асио, победил кернел (на конкретном железе). Так звезды сошлись. Аминь. ))
Какие интересные выводы Вы делаете уже - может не стоит и про KS дальше писать, если уже все понятно? А что за ЦАПчик у Вас применяется и какая ОС ?
Плиз, если есть время и желание.)) Винда 7/32 (подготовленная), карта esi u24xl, затем Yamaha da2x.
Давайте угадаю - плеер основной Фубар ?
Нет. Аплеер. Больше понравился по минимализму и понятным настройкам.
В нем установлен плагин-дополнение для режима KS ? И как производилось сравнение с режимом ASIO при прочих равных.
Я не просто так пытаю - производитель почти всех ESI всегда рекомендовал, на моей памяти,
drivers for Windows 10/8.1/8/7/Vista/XP with ASIO 2.0 support with low latency . И даже Кубэйс обрезанный в довесок (от самих разработчиков ASIO Steinberg ).
Было бы очень интересно как в вашей конфигурации покажет себя самая “поддерживающая” KS программа по имени Фубар. Она реально одна из немногих, которая с самого начала была ориентирована и на KS тоже.
Сравнивал примитивно. В Аплеере вкл режим АСИО реалтайм, затем КС реалтайм (со всеми сопутствующими необходимыми изменениями). Слушал в ушах и АС. На КС чуть лучше (прозрачнее), на АСИО наблюдал стробы по загрузке одного ядра (до 50%) в диспетчере задач, в интернетах говорят - это особенность карты. Х.З. Звук чуть мутнее, не принципиально, на любителя. Пока идет через КС.
Да - говорят верно , это особенность старых волфсонов даже больше чем карты.
Вывод в принципе прост - ASIO реалтайм сильно грузит всю систему, KS в Вашем конкретном случае работает более корректно. Имеем в общем-то не ASIO хуже-лучше, а ASIO не работает нормально.
Но все-таки попробуйте Фубар последний - просто для эксперимента.
Согласен. Стыковка с системой не айс, но по факту звук чуть лучше (или уже кажется :)). Опять - же проц-у спокойнее (0-2% загрузки). В Фубаре пробовал ВАСАПИ. Не впечатлил. Поставлю вновь, опробую еще разок на АСИО и КС.
Как ни крути АСИО лидер, КС - полуфабрикат, минимальная задержка - путь в лучшем направлении ?