Авторская тема OlegSA: обсуждение разных цифровых источников

Может и у Хило есть, если сделать более реперезентативную выборку. Из экземпляров так десяти-двадцати. :wink: В моем случае важно было что устройства отличаются по дате выпуска .

Небольшой обзор по

Pi 2 Design 502DAC — плата расширения для Raspberry Pi с ЦАПом и цифровым выходом

Раз пошла на форуме такая движуха с конверторами , я освежу что есть WASAPI и что есть ASIO и KS в применении к операционкам от MS. Так как многие именно так и будут использовать конверторы.

Золото.

1 ASIO - Audio Stream Input/Output это просто протокол передачи данных.Обычно поддержка ASIO реализована изначально в драйвере звуковой карты или любого другого прибора , имеющего драйвер поддержки для вывода звука. Например ЦАП с поддержкой USB либо конвертор.Разработала этот протокол фирма Steinberg

Цель была проста - решить следующие проблемы:

  1. Минимизация задержек записи и воспроизведения (что важно - так как все пошло от музыкальных инструментов и МИДИ к последующему применению к выводу на ЦАПы и прочие дела)

  2. Предоставление стандартного интерфейса (описанного в своем СДК для программирования ) для мультиканального ввода и вывода звуковой информации.

Технология ASIO способна обеспечить задержки менее 2мс оставляя достаточно времени (минимально достаточно при самых “быстрых” значениях) для процессирования и обработки для запаздывающих по разным причинам пакетов.

Например Kernel Streaming обеспечивает задержки не менее 20-21мс - а в DirectSound доходит и до задержки в 50-80 мс. Чем задержки выше - тем хуже реакция устройства.

Весь процесс организован от и до следующим образом.

Процесс работы приложения с ASIO разделяется на несколько основных этапов:

  1. Инициализация, выбор драйвера (начальная процедура при подключении нашего прибора - взяли пульт, тыц… ).

  2. Создания аудио буферов (сели в кресло , расслабились готовы к наслаждению )

  3. Запуск драйвера ( все закрутилось - начинаем выбираем треки )

  4. Работаем с драйвером, копируя данные из входных буферов и в выходные (собственно слушаем музыку)

  5. Останавливаем драйвер (собираемся идти гулять с собакой :) )

  6. Удаляем аудио буферы ( завершаем все плееры, собака несет поводок)

  7. Отключаем драйвер от приложения (собака счастлива и крутится у дверей - уходим на прогулку ).

Основная функция 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 будет совместим на том же уровне, что и в той, для которой он разрабатывался. Отсюда и “вылеты” , перезагрузки и “синие экраны” при попытках его применить у части устройств.

“Хотели как лучше, получилось как всегда” - девиз на корпоративном флаге Майкрософт. :slight_smile:

17 лайков

Добрый день !
Можно, так-же красочно, про кернел стриминг ?

1 лайк

Понимаю, что не всегда драйвер написан корректно, но зачем распространять это утверждение на все случаи?

2 лайка

Все верно мной написано - “не менее” , это значит что такие задержки гарантированы. При стечении обстоятельств (большом шаманском бубне, или другой атрибутике ) возможны и лучшие результаты.
Но ASIO по -прежнему будет впереди планеты всей. :slight_smile:

2 лайка

Приятно читать профессионала, а не домыслы. Спасибо, Олег!

4 лайка

Если можно, объясните качественное и техническое отличие кернел стриминг от асио и васапи. У меня, на слух, на кернел стриминг, прозрачнее явно звук, чем на других двух. Глюк? Железо?

1 лайк

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
},
},
};

3 лайка

Прямо как в анекдоте: :slight_smile:

“Юстас - Центру… Нарисовал на заборе танк - уже три дня роют около забора противотанковый ров. Продолжаю наблюдение” Было гладко на бумаге… :slight_smile:

Давайте попробуем проанализировать. :slight_smile:

Действительно, хотелось бы послушать начальника транспортного цеха…

1 лайк

Т.е. при лучше асио, победил кернел (на конкретном железе). Так звезды сошлись. Аминь. ))

Какие интересные выводы Вы делаете уже - может не стоит и про KS дальше писать, если уже все понятно? :slight_smile: А что за ЦАПчик у Вас применяется и какая ОС ?

Плиз, если есть время и желание.)) Винда 7/32 (подготовленная), карта esi u24xl, затем Yamaha da2x.

Давайте угадаю - плеер основной Фубар ?

Нет. Аплеер. Больше понравился по минимализму и понятным настройкам.

1 лайк

В нем установлен плагин-дополнение для режима 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%) в диспетчере задач, в интернетах говорят - это особенность карты. Х.З. Звук чуть мутнее, не принципиально, на любителя. Пока идет через КС.

1 лайк

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

Но все-таки попробуйте Фубар последний - просто для эксперимента.

1 лайк

Согласен. Стыковка с системой не айс, но по факту звук чуть лучше (или уже кажется :)). Опять - же проц-у спокойнее (0-2% загрузки). В Фубаре пробовал ВАСАПИ. Не впечатлил. Поставлю вновь, опробую еще разок на АСИО и КС.
Как ни крути АСИО лидер, КС - полуфабрикат, минимальная задержка - путь в лучшем направлении ?

1 лайк