Hi-Fi и High-End техника или энциклопедия звука и видео
ЗВУКОМАНИЯ
Hi-Fi и High-End техника или энциклопедия звука и видео
WASAPI
WASAPI
WASAPI — это драйвер с низкой задержкой, когда он используется в монопольном режиме и напрямую взаимодействует с драйвером аудиоустройства. Это собственный ASIO от Microsoft.
WASAPI
ASIO является проприетарным протоколом. Вы можете использовать только то, что поддерживает ваше аудиоустройство.
WASAPI является неотъемлемой частью Windows (Vista, ХР, 7, 10 и выше).
В принципе это работает со всеми аудио устройствами.
На практике не все комбинации аудиоприложений и драйверов аудиоустройств будут работать правильно с использованием этого интерфейса.

В эксклюзивном режиме никакое другое приложение не может использовать ЦАП или звуковую карту.
Нет больше системных звуков и даже на полную громкость в стерео!
скачать WASAPI + музыка во флак можно ЗДЕСЬ
Поскольку WASAPI в эксклюзивном режиме напрямую обращается к драйверу аудиоустройства, поток, отправляемый на это устройство (внешний ЦАП), должен соответствовать возможностям этого устройства с точки зрения глубины в битах, частоты дискретизации, количества каналов и формата аудио (в большинстве случаев PCM) в противном случае это будет тишина.
В случае USB-ЦАП (с использованием драйверов основного режима) вы получаете автоматическое переключение частоты дискретизации с использованием эксклюзивного WASAPI.
Если частота дискретизации источника не поддерживается аппаратными средствами, например, источником 192 кГц с аудиоустройством 96 кГц, программа, использующая WASAPI, должна выполнить SRC (преобразование частоты дискретизации).
Это можно сделать, вызвав SRC, предоставленный Windows, или тот, который предоставлен приложением.
Аудио архитектура Windows начиная с Виста и далее
Плюсы аудио движка:
Переход к 32-битной с плавающей запятой, а не к 16-битной, что значительно улучшает качество звука при работе с несколькими аудиопотоками или эффектами.
Переход от режима ядра к режиму пользователя с целью повышения стабильности системы (плохие драйверы не могут отключить систему).
Концепция конечных точек, а не аудиоустройств — для пользователей Windows проще отправлять звуки в «наушники» или записывать звук с «микрофона», а не требовать от них технической информации о звуковой карте, установленной в их системе.
Группировка аудио потоков
В Vista, ХР и выше вы можете сгруппировать все аудиопотоки из одного приложения и отдельно контролировать их громкость. Другими словами, регулятор громкости для каждого приложения. Это немного сложнее, чем может показаться на первый взгляд, потому что некоторые приложения, такие как IE, содержат все виды процессов и плагинов, которые все воспроизводят звук по-своему.
Приложения, плееры отправляющие звук на микшер, должны следить за тем, чтобы частота дискретизации соответствовала частоте микшера по умолчанию. Это значение по умолчанию установлено на вкладке «Дополнительно» в звуковой панели.
Даже если источник соответствует частоте дискретизации по умолчанию, применяется сглаживание.
Если вы не применяете какие-либо эффекты для каждого потока или глобальные эффекты и
слушаете только одно приложение, выводящее звук, и частота дискретизации и битовая глубина, установленные для Ц, соответствуют частоте дискретизации материала, то теоретически не должно быть никакой разницы с оригиналом, потому что преобразование даже из 24-разрядного целого числа в 32-разрядное число с плавающей запятой без потерь.

Эксклюзивный режим ВАСАПИ
Как правило, приложение отвечает за предоставление аудиобуферов Audio Engine в формате, который поддерживается аудио-движком. Форматы аудиосэмпла состоят из частоты дискретизации, битовой глубины и количества каналов. Собственная битовая глубина сэмплов, которую Audio Engine использует для внутреннего использования, составляет 32-битное число с плавающей запятой. Однако Audio Engine принимает большинство целочисленных форматов, которые до 32-бит. Кроме того, Audio Engine конвертирует большинство форматов в представление с плавающей запятой внутри.
Панель управления звуком задает требуемую частоту дискретизации в качестве «Формат по умолчанию». Формат по умолчанию определяет формат, который используется для предоставления контента аудиоустройством. Количество каналов, которые поддерживает Audio Engine, обычно является количеством АС для аудиоустройства.
Изменение частоты дискретизации и глубины в битах данных называется преобразованием частоты дискретизации. Приложение может решить написать свой собственный преобразователь частоты дискретизации. В качестве альтернативы, приложение может решить использовать API-интерфейсы, такие как PlaySound, WAVE, цифровой интерфейс музыкальных инструментов (MIDI) или микшер. В этих API преобразование происходит автоматически. Когда это необходимо, проигрыватель Windows Media выполняет преобразование частоты дискретизации в своем внутреннем конвейере Media Foundation.
Однако, если проигрыватель воспроизводит аудио, которое Audio Engine может обрабатывать изначально, проигрыватель перестраивает свой собственный конвейер без преобразователя частоты дискретизации. Такое поведение происходит, чтобы уменьшить промежуточные аудио преобразования и улучшить производительность.

WASAPI можно использовать в режиме push и в режиме pull (стиль события).
На основе событий:
На основе push:
WASAPI — Стиль события
Режим вывода позволяет звуковому устройству извлекать данные из плеера. Этот метод поддерживается не всеми аппаратными средствами, но рекомендуется при его поддержке.
WASAPI — Event Style имеет несколько преимуществ:
Для использования WASAPI требуется плеер, поддерживающий этот драйвер в эксклюзивном режиме.
Я думаю, что эксклюзив WASAPI немного более прозрачен по звуку, чем DS (Direct Sound), аудио-движок Win по умолчанию.
Однако, поскольку все, что отправляется на конечную точку аудио, должно точно соответствовать возможностям этого устройства, WASAPI также более проблематичен. Малейшее несоответствие по количеству каналов, битовой глубине или частоте дискретизации, и вы слышите тишину.
Советы по АСИО и ВАСАПИ
ИТОГИ
WASAPI — это интерфейс с низкой задержкой для драйвера аудиоустройства.
Обход микшера — это все, что он делает. Разработчик или пользователь приложения, использующие WASAPI, должен убедиться, что свойства аудиофайла + плеера и возможности аудиоустройства (внешний ЦАП) совпадают.

Зачем нужно WASAPI и как правильно выводить звук в Windows
Windows Audio Session API (WASAPI) позволяет клиентским устройствам управлять потоком аудиоданных между приложением и конечным аудиоустройством. Делает комфортным прослушивание музыкальных композиций и микширование без нежелательных задержек и без потери качества. Удобно wasapi скачать на нашем сайте и установить.
Что такое WASAPI
Каждый аудиопоток, воспроизводимый на устройстве, является участником audio сеанса. С помощью абстракции сеанса клиент WASAPI может идентифицировать аудиопоток как член группы связанных аудиопотоков. Система может управлять всеми потоками в session как единым целым.
Аудиодвижок – это аудиокомпонент пользовательского режима, через который приложения совместно используют доступ к конечному аудиоустройству. Звуковая машина передает аудиоданные между буфером конечной точки и конечным устройством. Для воспроизведения аудиопотока через устройство конечной точки рендеринга приложение периодически записывает аудиоданные в буфер конечной точки рендеринга. Звуковой движок микширует потоки из различных приложений. Чтобы записать аудиопоток с устройства конечной точки захвата, приложение периодически считывает аудиоданные из буфера конечной точки захвата.
WASAPI состоит из нескольких интерфейсов. Первый из них – это интерфейс IAudioClient. Чтобы получить доступ к интерфейсам WASAPI, клиент сначала получает ссылку на интерфейс IAudioClient конечного аудиоустройства, вызывая метод IMMDevice :: Activate с параметром iid, установленным на REFIID IID_IAudioClient. Клиент вызывает метод IAudioClient :: Initialize для инициализации потока на устройстве конечной точки. После инициализации потока клиент может получить ссылки на другие интерфейсы WASAPI, вызвав метод IAudioClient :: GetService.
Многие методы в WASAPI возвращают код ошибки AUDCLNT_E_DEVICE_INVALIDATED, если конечное аудиоустройство, используемое клиентским приложением, становится недействительным. Часто приложение может исправить эту ошибку.
WASAPI реализует следующие интерфейсы в foobar.
В чем отличие Wasapi Exclusive (Event) от Wasapi Exclusive (Push)
Оба передают одни и те же аудиоданные и звучат одинаково. Отличие заключается, исключительно, в возможности работать с тем или иным оборудованием.
Обратите внимание: начиная с версии «MC 18.0.183», WASAPI теперь используется, как программа по умолчанию. Если ваше аудиоустройство не поддерживает этот режим, его можно отключить в диалоговом окне настроек устройства.
Версии до 18.0.183. В режиме вывода WASAPI данные из Media Center передаются на звуковое устройство. Он работает практически со всем оборудованием.
WASAPI Event Style позволяет звуковому устройству извлекать данные из Media Center. Этот метод поддерживается не всем оборудованием, но рекомендуется, если он поддерживается. Это дает несколько преимуществ:
Это позволяет аудиоподсистеме извлекать данные вместо того, чтобы отправлять данные в систему.
Оборудование (или интерфейс WASAPI) никогда не видит вызовов паузы или сброса. Вместо этого при паузе или сбросе тишина доставляется в цикле pull. Это устраняет необходимость во взломах карт, которые окружают свои буферы при паузе, сбросе и т. Д. (ATI HDMI и т. д.). Это обеспечивает более прямой путь данных к driver/оборудованию. В основном «цикле извлечения» используется круговой буфер без блокировки (система, которую Дж. Ривер построил для ASIO), поэтому выполнение запроса на извлечение выполняется как можно быстрее.
В чем разница между Directsound и Wasapi Shared
Windows – наиболее широко используемая операционная система в мире. люди используют ее для решения повседневных задач, и прослушивание звука – одна из них. Microsoft Windows 7 и выше может воспроизводить звук двумя способами. используя прямую поддержку звука Directx и поддержку WASAPI. большинство приложений Windows используют подход Direct Sound. Windows может воспроизводить несколько потоков из разных приложений при использовании прямого звука. Directsound работает как промежуточный уровень между программным обеспечением и звуковыми драйверами. Он берет звук из другого программного обеспечения, затем передискретизирует весь звуковой поток в один поток, а затем отправляет его в аудиодрайверы. Обратной стороной этого подхода является то, что мы никогда не получаем то, что на самом деле играем. например, если кто-то воспроизводит звуковой файл на 192 кГц, 24 бит. тогда окна, вероятно, преобразуют его в 44 кГц, 16 бит с другим звуком. Прямой звук автоматически передискретизирует звуковой поток до соответствующей частоты дискретизации, которая может поддерживаться аудиооборудованием.
WASAPI предоставляет два режима работы. общий режим и эксклюзивный режим. Общий режим работает так же, как прямой звук, а микшер Win выполняет повторную выборку и микширование. В эксклюзивном режиме WASAPI обходит звуковой микшер Windows, и приложение может напрямую отправлять данные на звуковую карту. в этом режиме приложение может декодировать такие форматы, как DTS, DTS master audio, DOLBY True HD, Dolby digital, Flac и т. д., и отправлять неизмененный поток на звуковую карту.
Кроме различных режимов, важно также, как WASAPI управляет данными между буферами. WASAPI использует подход пуш и PULL для запроса данных, которые необходимо обработать. При использовании метода push приложение помещает данные в буферы и постоянно отслеживает их, и как только видит, что они опустошены, оно заполняет их снова. В подходе PULL, который является современной разработкой, приложение использует два буфера. Аудиодрайверы вызывают приложение, как только оно видит пустой буфер, и начинает использовать данные из другого буфера. тем временем приложения заполняют пустой буфер.
Что лучше ASIO или WASAPI
ASIO был разработан для обхода исходной некорректной аудиоподсистемы Windows, которая заставляла все работать с фиксированной скоростью, смешивала системные звуки и аудиопотоки и имела серьезные проблемы с задержкой. ASIO был разработан для обеспечения интерфейса с малой задержкой для профессиональных аудио вычислений. Wasapi – это разработка Microsoft, устраняющая недостатки на более ранней стадии, и она работает стабильно. Но она меньше поддерживает нестандартные скорости воспроизведения и может не поддерживать dop dsd или более высокие скорости dsd.
ASIO изначально поддерживает все частоты дискретизации, которые может обрабатывать подключенный ЦАП, и не имеет проблем с dsd. Длина буфера в основном зависит от общей загрузки системы, поскольку компьютеру приходится прерывать другие операции для загрузки следующего фрагмента выборок в выходной буфер, поэтому в системах с низким энергопотреблением или более загруженных системах очень короткий или очень длинный буфер может увеличить нагрузку на процессор. Это может спровоцировать нежелательную задержку при воспроизведении музыкальных композиций.
ASIO – это модель аудиоинтерфейса Steinberg, используемая практически во всех профессиональных аудиоприложениях, и обычно это лучший способ работы с очень низкими задержками. Производители профессиональных звуковых карт предоставляют драйверы ASIO. Его единственная слабость заключается в том, что вы можете использовать только один драйвер ASIO за раз, что может вызвать проблемы в будущем, поскольку все больше и больше студийного оборудования, такого как микрофоны, звуковые модули и мониторы (именно так называются динамики в мире профессионального обучения). audio) поставляются с интерфейсами USB, а не с более старой моделью, объединяющей все ваши входы и выходы в единый аудиоинтерфейс.
Многие компании, производящие потребительское аудио, в наши дни производят asio-драйверы для своих ЦАП, поскольку они исключают из уравнения любые вычисления в Windows и обеспечивают более высокие шансы на получение хороших результатов от их продукта.
Какие операционные системы поддерживают Wasapi
Wasapi разработан для операционного семейства Windows и стабильно работает с ОС, начиная от Windows 7 и XP. Wasapi в Windows 10, по мнению большинства пользователей, является наиболее удобной.
Где скачать драйвер Wasapi
Скачать драйвер для Wasapi, а также сопутствующее программное обеспечение можно тут.
Вывод
WASAPI предоставляет два варианта рендеринга звука – общий режим и эксклюзивный режим. В монопольном режиме вы – единственное приложение, которое обращается к рассматриваемой аудио конечной точке – все остальные приложения не могут издавать никакого шума. Это дает наилучшую возможную производительность, как и все профессиональные аудио-приложения, такие как Cubase, SONAR, REAPER, Pro Tools и т. д. Но они не используют WASAPI. Они используют aimp ASIO или Kernel Streaming.
Радиоинженер (по первому высшему образованию). С раннего детства слушаю разнообразную музыку. Всегда интересовался звуковоспроизводящей аппаратурой, которую обновлял множество раз. Я увлеченный любитель и музыка по жизни всегда со мной. Увлекаюсь HI-Fi уже более 20 лет.
Цифровой аудиотракт: апсемплинг и апскейлинг, WASAPI, ASIO и внешний мастер клок для USB-аудио
Пара слов о составе, работе и оптимизации цифрового аудиотракта с использованием компьютера и USB. В принципе, тема скучная и букв получилось много, так что если осилить сложно — сразу переходите к выводам.
Basic
Звуковой сигнал, в общем случае, кодируется последовательностью значений амплитуды сигнала, измеренных через равные промежутки времени. Единичное значение амплитуды называют сэмплом, а время между двумя соседними измерениями — частотой дискретизации или частотой квантования. В подавляющем большинстве случаев сэмпл при передаче на аудиоустройство описывают знаковым целым числом — разрядности 16, 24 или 32 бита. Разрядность в 32 бита может быть использована для выравнивания буфера устройства по границе двойного слова, тогда семпл кодируется только первыми 24 битами, или же для полноразрядного кодирования. Первый вариант доступен в ASIO и WASAPI, второй только в WASAPI.
Максимально достижимое соотношение сигнал/шум определяется разрядностью сэмпла и вычисляется как 20log(2^q) где q — разрядность сэмпла.
Частоты дискретизации (количество сэмплов в секунду для одного канала) из-за взаимной кратности стоит выписать в два набора: <44100, 88200, 192000>и <48000, 96000>. Два набора частот приводят к тому, что аудиоустройству нужно два осциллятора для качественной синхронизации. Конечно, можно использовать и один с кратной частотой, например, как 88200, так и 96000 Гц, но это существенно повышает сложность исполнения точного тактового контура.
Вывод: качественное аудиоустройство должно иметь два осциллятора, один для работы с частотами <44100, 88200>, второй для <48000, 96000, 192000>.
При обработке цифрового сигнала (DSP — digital sound processing) сэмпл масштабируется как минимум к 64-битному числу с плавающей точкой (double64) в диапазоне от –1 до 1. Наиболее часто применяются преобразования upsampling/downsampling и upscale/downscale. Второе заключается в изменении разрядности сэмпла и в подавляющем большинстве реализаций сводится к простому масштабированию 64-битного double к желаемой битовой разрядности. Данное преобразование помимо масштабирования полезного сигнала делает точно такое же масштабирование и шума, поэтому upscale не меняет соотношение сигнал/шум исходного сигнала, а downscale дополнительно увеличивает долю шума за счет деградации разрядности полезного сигнала.
Upsampling/downsampling очень часто выполняется через решения полинома n-го порядка (как правило, кубического). Берется последовательность из K-сэмплов, и из них рассчитываются коэффициенты интерполирующего полинома, затем полученный полином решается для новых точек семплирования. В идеальном случае, согласно теореме Найквиста-Котельникова, upsampling может только сохранить разрешение исходного сигнала на новой частоте семплирования. В неидеальном случае возможно появления шума на высших гармониках. Интересно, что downsampling после upsampling вернет исходное значение сигнала, даже если после upsampling в нем появились искажения и шум.
В студиях используют алгоритмы, объединяющие upsampling и upscale в единый процесс для увеличения разрешения сигнала и его динамического диапазона. Эти алгоритмы достаточно «тяжелы» и не могут быть использованы при воспроизведении в реальном времени.
Еще один случай обработки DSP — это convolution (свертка), применимая для адаптации сигнала под акустические свойства комнаты. Здесь исходный сигнал разлагается на гармоники в ряд Фурье до n-го порядка. К сожалению, все быстрые алгоритмы как правило работают с амплитудой сигнала определенной частоты без учета фазы (которую еще очень непросто правильно измерить). Более того, быстрые алгоритмы не решают интеграл, а берут среднее значение в диапазоне. В результате вся коррекция сводится к параметрическому эквалайзеру. Простые полосные фильтры вносят фазовые искажения на частотах разделения, из-за этого параметры convolution нужно еще раз и еще раз подстраивать.
MQA на высоких гармониках, на мой взгляд, инкрементально кодирует первую производную (наклон) функции амплитуды сигнала. Зная частоту гармоник кодировки, простым разложением в ряд Фурье очень просто вытащить и восстановить поведение производной. А имея производную, можно уже делать upsampling не полиномами, а сплайнами со сглаживанием. Вот тогда, уже в реальном времени, можно делать upsampling и upscale с увеличением разрешения и динамического диапазона сигнала. Конечно, это не будет оригинальный Hi-Res, но уже кое-что.
Выводы: Upscale не улучшает соотношение сигнал/шум. Upsampling не улучшает разрешения сигнала. Upsampling имеет смысл для перехода от линейки 44100 к 48000, если осциллятор Вашего устройства лучше для 48000. Использование room correction требует итеративной настройки и, во многом, непредсказуемо.
Software player
Я ограничусь рассмотрением Windows-архитектуры, как наиболее доступной и наиболее оптимальной для создания цифрового транспорта. Windows предоставляет три варианта доступа к аудиоустройству: Kernel Streaming, Direct Sound, WASAPI. Плюс подавляющее большинство аудиоустройств поставляются с ASIO-драйвером. Из перечисленных способов только Direct Sound и ASIO являются полноценными аудиоинтерфейсами с возможностями DSP: upsampling/downsampling, upscale/downscale, управлением громкостью и микшированием. Кроме того, ASIO имеет возможность расширения аудиотракта за счет плагинов.
Kernel Streaming и WASAPI являются протоколами низкого уровня для управлений различными устройствами, в том числе и аудио. При этом тяжесть любой DSP-обработки сигнала ложится на программный плеер, использующий эти протоколы. Современные высококачественные программные плееры используют в работе WASAPI и/или ASIO, поскольку оба они предоставляют возможность асинхронной передачи аудиоданных из памяти компьютера в память аудиоустройства.
На всякий случай замечу, что память компьютера и память аудиоустройства — физически разные микросхемы. Программный плеер при работе имеет доступ только к памяти компьютера, где и формирует аудиоданные. Перезапись сформированных данных из одной памяти в другую осуществляется драйвером аудиоустройства.
WASAPI и ASIO имеют практически идентичный принцип работы: плеер подготавливает данные в буфере обмена и указывает протоколу адрес этого буфера, затем он подготавливает следующий буфер и ждет пока протокол не закончит обработку первого. Поскольку процесс подготовки данных и их воспроизведение идут параллельно, то протоколы называют асинхронными. WASAPI в отличие от ASIO имеет два режима работы.
Первый режим — «совместное использование» устройства, когда несколько процессов одновременно могут передавать данные устройству. Второй режим — «эксклюзивный», когда устройство блокируется для монопольного использования только одной программой (одним клиентом). ASIO работает исключительно в эксклюзивном режиме. С точки зрения воспроизведения разницы между WASAPI и ASIO не существует, кроме разве что возможности передачи по WASAPI полноразрядного 32-битного семпла (ASIO если и будет поддерживать такой режим, то все равно будет использовать только первые 24 бита из 32).
Как было отмечено выше, upscale не улучшает соотношение сигнал/шум и, поскольку полноразрядного 32 исходного файла я ни разу не встречал, то и здесь нет никакой разницы между WASAPI и ASIO. Тем не менее, я как программист и как слушатель предпочитаю WASAPI, естественно, в эксклюзивном режиме. Но это дело исключительно вкуса и личных симпатий.
Вывод: если Вы (как и я) воспроизводите аудиосигнал без DSP-обработки, то Вы можете использовать любой (*) программный плеер, поддерживающий WASAPI Exclusive и/или ASIO.
(*) смотри внимательно следующий раздел.
USB Audio
Начну с хорошей новости для Windows: начиная с релиза 1703 включен нативный драйвер USB Audio 2.0.
USB-аудио может работать в трех режимах: асинхронном, синхронном и адаптивным. При асинхронном режиме источник устанавливает значение клока и передает это значение вместе с буфером данных на аудиоустройство. Оно должно синхронизироваться по полученному клоку, обработать буфер, используя свой клок, и послать подтверждение источнику.
При синхронном режиме источник и аудиоустройство периодически синхронизируют свои клоки, а данные уже передаются без тайминга. При адаптивном режиме значения клока указывает аудиоустройство, а источник должен синхронизировать передачу данных.
Как видно, синхронный режим — самый требовательный, поскольку требует качественного клока как на источнике, так и на аудиоустройстве. Как правило, система работает в асинхронном режиме, а значит использует клок компьютера, качество которого не отвечает требованиям Hi-Fi и порождает огромный джиттер. Собственно говоря, это проблема породила кучу эзотерических плееров, которые перепрограммируют системный таймер, меряют скорость процессора, захватывают наибольший приоритет или вообще кладут компьютер в гибернативный режим.
Проблему это целиком не решает, но джитер снижается. Более приемлемый способ решения — это использование промежуточного буфера с реклоком. Это устройство не воспроизводит полученный буфер данных, а передает его дальше по цепочке, но уже с собственным временным кодом, полученным от собственного прецизионного осциллятора. Качество звука при этом существенно улучшается. На мой взгляд, из доступных буферов наиболее хорош Amanero, но можно использовать и XMOS с хорошим осциллятором.
Другое решение — это использование специализированного цифрового транспорта. В таком транспорте установлен качественный независимый выделенный осциллятор (как правило, два) для работы с частотами <44100, 88200, 192000>и для <48000, 96000>. Во всем остальном, это устройство намного примитивнее чем обычный компьютер. Как правило, при наличии опыта, очень качественный цифровой транспорт можно собрать самому на основе одноплатовых миникомпьютеров и софта Open Source. Поэтому цены на различные фирменные реализации цифрового транспорта меня реально шокируют.
Кардинальное и самое правильное решение для устранения джиттера и получения действительно правильного звука — это использование внешнего мастер клока. При этом и железо плеера, и ЦАП должны быть подключены к нему в слэйв-режиме. Именно такой подход используется в студиях звукозаписи.
Вывод: качество звука лучше улучшать не эзотерическим софтом, а железным цифровым буфером с реклоком. Самое правильное решение — это использование внешнего мастер клока








