dsd wasapi что это

Цифровой аудиотракт: апсемплинг и апскейлинг, 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. Поэтому цены на различные фирменные реализации цифрового транспорта меня реально шокируют.

Кардинальное и самое правильное решение для устранения джиттера и получения действительно правильного звука — это использование внешнего мастер клока. При этом и железо плеера, и ЦАП должны быть подключены к нему в слэйв-режиме. Именно такой подход используется в студиях звукозаписи.

Вывод: качество звука лучше улучшать не эзотерическим софтом, а железным цифровым буфером с реклоком. Самое правильное решение — это использование внешнего мастер клока

Источник

Организация качественного вывода звука на компьютере (foobar2000, Windows XP — 10)

ВНИМАНИЕ: статья постоянно дорабатывается и дополняется. На данный момент информация актуальна для foobar2000 v1.5.x и операционных систем Windows XP — Windows 10.

Copyright © 2020, Taras Kovrizhenko

Полное или частичное копирование текста допускается только с письменного разрешения автора.

1. Общие сведения

Критерием качества воспроизведения звука является количество искажений, которое вносится в сигнал при его прохождении через звуковой тракт. Искажения вносятся практически при любой обработке, так что главная для нас задача — свести к минимуму или вообще исключить обработку звука там, где это возможно. Также сигнал может искажаться при передаче (при передаче в аналоговом виде это неизбежно).

Приведенная ниже схема охватывает типичные способы воспроизведения звука на компьютере с использованием цифровых и аналоговых интерфейсов.

Источник — звук в одном из форматов lossy, lossless PCM или DSD. Может быть файлом на жестком диске, сетевом диске, флешке, либо же потоком данных из сети.

Плеер — содержит декодер, обработчики звука, вывод.

Микшер Windows, драйвер звуковой карты — тесно взаимодействующие элементы. На данном этапе может выполняться программная обработка звука (порой некачественная), что крайне нежелательно.

Звуковое устройство ПК — это может быть встроенная в материнскую плату или дискретная PCI/PCI-E звуковая карта, HDMI выход видеокарты или Bluetooth-адаптер. Особый интерес представляют именно звуковые карты, важным элементом которых является Digital Signal Processor, совершающий необходимую обработку звукового потока, а также обработку в соответствии с выставленными настройками в драйвере звуковой карты. Большинство операций, которые производит звуковая карта, зависит от модели звуковой карты и её настроек. Также звуковая карта содержит цифро-аналоговый преобразователь, который используется в случае вывода звука в аналоговом виде.

Внешний ЦАП / звуковая карта — внешнее звуковое устройство, подкюченное по цифровому интерфейсу к USB порту или цифровому выходу звуковой карты. Такое утсройство берет на себя цифро-аналоговое преобразование, а также может выполнять обработку аналогично внутренней звуковой карте. Разделение устройств на ЦАП и звуковые карты условно: как правило, ЦАП больше ориентирован на воспроизведение и имеет миинимум функций; звуковая карта же обычно является мультимедийным устройством, может содержать сложные обработчики, а также позволяет записывать звук.

Усилитель — усилитель звуковой частоты. Аналоговый элемент, предназначенный для увеличения уровня электрического сигнала до необходимого для воспроизведения через звукоизлучатели. Ресиверы, как правило, уже содержат в себе УЗЧ, позволяющий выводить звук на колонки. Звуковые карты и ЦАП обычно имеют на выходе уровень сигнала достаточный только для воспроизведения через наушники и потому для вывода на колонки нужен дополнительный УЗЧ.

Цифровой ресивер — аудио-видео ресивер. Высокотехнологичное устройство со множеством цифровых и аналоговых входов, включающее в себя ЦАП, различные обработчики и усилитель звука. Позволяет выводить звук на колонки, наушники, а также (некоторые модели) на Bluetooth устройства воспроизведения.

Звукоизлучатели (отмечены значками наушников и колонок) — электроакустические элементы, которые преобразовывают электрический сигнал от усилителя в звуковые волны. Как правило представляют собой динамические головки громкоговорителей (колонок) или наушников. Каждому выходному каналу УЗЧ соответствует один или несколько звукоизлучателей колонок или наушников.

Bluetooth устройства вывода (отмечены наушниками со значком Bluetooth) — беспроводные устройства, на которые можно выводить звук в цифровом виде с Bluetooth-адаптера компьютера или с ресивера (если он оборудован передатчиком). Содержат в себе декодер, ЦАП и усилитель. Передача чаще всего происходит в lossy формате SBC.

Интерфейс вывода, канал передачи (стрелки, соединяющие элементы) — транспортное звено между элементами тракта. Могут быть аналоговыми и цифровыми. Передача аналогового сигнала технически осуществляется проще, однако такой канал подвержен воздействию помех, создающих в сигнале шумы, причем чем меньше уровень передаваемого сигнала, тем значительнее воздействие помех на форму сигнала. Цифровые интерфейсы менее подвержены воздействию шумов (при низких уровнях помех они вообще не влияют на передачу данных), но здесь в случае синхронной передачи данных (когда данные на ЦАП непосредственно тактуются синхроимпульсами с источника сигнала) существует проблема джиттера, дающего искажения на выходе ЦАП. Передача по цифровым интерфейсам может осуществляться в несжатом (PCM, DSD) или сжатом (чаще с потерями — DTS, Dolby, SBC) форматах.

2. Рекомендации по выбору и настройке компонентов

2.1 Источник

Важно понимать, что если изначально запись некачественная, нет большого смысла тратить усилия на настройку остального тракта.

Источники можно подразделить на три типа:

Если для вас не слишком важен объем файлов, то можно качать DVD-audio рипы в форматах 24/96, однако они не дадут ожидаемого многими прироста качества относительно грамотно сконвертированных из тех же исходников CD дисков в формате 16 бит / 44.1 кГц (читайте Загрузки в формате 24/192 — почему они не имеют смысла). Поэтому разумным выбором будут именно качественные CD-рипы в не слишком ресурсоёмких форматах FLAC или WavPack. Также может возникнуть вопрос, что выбрать — image + CUE или tracks + CUE. Здесь я рекомендую второй вариант, т. к. он значительно удобнее в обращении (далеко не весь софт умеет хорошо работать с CUE), а потерь качества при порезке на треки не происходит (при неграмотной порезке максимум можно потерять пару секунд тишины между треками).

В случае, если для вас критичен размер треков и вы не можете позволить себе хранить аудио с битрейтом

800 кбит/c, можете сделать выбор в пользу качественного lossy. Хорошим вариантом будет скачать lossless исходники и конвертировать их в lossy, выбрав кодек согласно рекомендациям. Надо учитывать, что если для lossless PCM проблемы качественного воспроизведения сводятся к минимуму, то для наиболее качественного воспроизведения lossy необходимо принять определенные меры (см. далее).

Отдельно надо сказать про High-Res рипы винила. Винил уступает по всем характеристикам даже формату Audio CD, поэтому хранить рипы винила в формате 24/192 как минимум неразумно. Тут советую ознакомиться со статьей Заблуждения о виниле (HA Wiki). Если вам нравится окрас, который даёт записям винил, более чем достаточно будет рипов в формате 16/44.1. Если же вы ожидаете от виниловых записей какого-то невероятного качества, вы обманываетесь.

2.2 Операционная система

Учитывая популярность ОС Windows, её документированность, широкие возможности настройки, а также тот факт, что под многие звуковые устройства полноценный драйвер с ПО для доступа ко всем настройкам можно найти только под Windows, здесь выбор не вызывает никаких сомнений. Рекомендую использовать последнюю обновленную версию Windows 10 установленную на ПК.

2.3 Выбор и подключение оборудования

Несмотря на обширную информацию, посвященную программным элементам тракта (то что называется software), огромный вклад в характер звучания системы вносит именно оборудование (hardware), т. к. именно здесь выполняется преобразование цифровых данных в непрерывный аналоговый сигнал, его обработка (в цифровом или аналоговом виде) и конечно же преобразование в звуковые волны (пожалуй, самый важный пункт). Именно здесь в форму сигнала вносятся искажения, задающие характер его звучания. Поэтому прежде вcего вам необходимо выбрать и приобрести (если вы еще этого не сделали) компоненты, которые подойдут под ваши требования по объективным характеристикам — соотношение сигнал/шум, частотный диапазон, неравномерность АЧХ, чувствительность, уровень громкости. Кроме объективных характеристик, важно чтобы характер звучания системы нравился именно вам, поэтому перед покупкой акустики, наушников — крайне важно их оценивать на слух.

Помните, что имея некачественное оборудование, вы не исправите его звучание никакими волшебными плеерами или ресемплерами. Почитать на эту тему можно в моей публикации Ещё раз о печальной правде: откуда на самом деле берётся хорошее звучание?.

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

2.3.1 Звуковая карта: встроенная или дискретная?

В последние годы большинство встраиваемых в материнские платы аудиокодеков обеспечивают достаточный уровень качества при выводе на внешний усилитель. Чтобы убедиться в этом, в спецификации своей материнской платы найдите, какой кодек в ней используется, после чего найдите в интернете его тест (например, с использованием RightMark Audio Analyzer). Однако встроенной звуковой карты может оказаться недостаточно для прослушивания аудио через наушники, особенно если это качественные высокоомные наушники. Также в случае, если вы хотите выводить аудио по цифровому интерфейсу S/PDIF на внешнее устройство, встроенная звуковая карта может давать повышенный уровень джиттера (хотя как правило на слух он не воспринимается) или не поддерживать необходимую частоту дискретизации (например, 176.4 кГц для вывода DSD over PCM).

Если по какой-то из причин встроенная звуковая карта вам не подходит, обратитесь за советом на форум, изложив при этом свои требования к устройству и бюджет. Что касается выбора типа звукового устройства (внутренняя или внешняя, карта или ЦАП) — также исходите из свои требований и личных предпочтений. Из объективных характеристик — внешние USB устройства меньше подвержены наводкам, которые могут создаваться внутри системного блока ПК (например, видеокартой, находящейся в непосредственной близости). Также их можно быстро переподключать к другим устройствам, в т. ч. к телефону.

2.3.2 Какому интерфейсу отдавать предпочтение

Если ваше звуковое устройство ПК не имеет ЦАП (например, это видеокарта с HDMI выходом) или у вас есть внешнее устройство, у которого характеристики ЦАП и аналогового тракта выше, чем у вашей звуковой карты, вы можете вывести цифровой поток по одному из доступных цифровых интерфейсов. Например, у вас есть качественный цифровой ресивер и встроенная звуковая карта с интерфейсом S/PDIF. Логично будет выводить звук в цифровом виде на ресивер, и уже к нему подключать проводные наушники или колонки. Если вы подключите ресивер по аналоговому интерфейсу, то получите менее качественное ЦА-преобразование, а также искажения вносимые усилителем звуковой карты + искажения от аналогового тракта ресивера, а возможно еще и от преобразования в цифровой вид и обратно, если ресивер выполняет цифровую обработку сигнала. В случае цифрового подключения ресивер получит нетронутые цифровые данные, при необходимости обработает их, затем пустит на свой качественный ЦАП и затем на усилитель — что является оптимальной схемой.

Но нередко бывает, что есть несколько вариантов, как вывести цифровой сигнал на внешнее устройство. Например: у ресивера есть оптический и коаксиальный S/PDIF, HDMI вход, а также Bluetooth приёмник. Или у ЦАП есть S/PDIF и USB интерфейс — что выбрать? Ниже я перечислю и дам описание интерфейсам, начиная с наиболее рекомендуемых

USB — наиболее совершенный и надежный интерфейс. Обычно им оснащены внешние звуковые карты и ЦАП. Подавляющее большинство USB устройств использует асинхронную передачу цифрового потока — передача полностью контролируется устройством, что сводит проблему джиттера на нет. USB поддерживает передачу данных на очень высокой скорости (например, PCM 32 бит/384 кГц) и идеально подходит для передачи DSD потока. Большинство USB-устройств оснащены ASIO драйвером.

S/PDIF — спецификация от Sony и Philips, имеющая две аппаратных реализации — коаксиальную и оптическую. Различия между этими реализациями — вечная тема для холиваров. Каждая из них имеет свои недостатки: коаксиальный канал подвержен затуханию сигнала, воздействию помех и имеет проблему земляной петли между устройствами; оптический интерфейс сейчас более распространен, он более высокотехнологичен и не подвержен помехам, однако оптический кабель уязвим для изгибов и из-за отражений имеет проблемы с передачей на высоких частотах (более 96 кГц). Так что для передачи DSD over PCM (176.4 и 196 кГц) лучше выбрать коаксиальный кабель, для передачи же аудио до 96 кГц включительно лучше выбрать оптику.
Также ограничения зависят от реализации приёмника и передатчика. Например, многие встроенные карты не поддерживают передачу потока с частотой выше 48 кГц.
В целом интерфейс S/PDIF является довольно проблемным, в частности из-за джиттера: сигнал синхронизации передаётся по тому же каналу, что и данные, в итоге джиттер может зависеть от формы сигнала. Кроме того, S/PDIF не позволяет выводить многоканальное аудио без сжатия, а сжатие в таком случае происходит с потерями — в форматах DTS, Dolby Digital (AC3). Однако неплохим вариантом является передача AC3 аудио-дорожек фильмов без промежуточной конвертации в PCM на устройство, но эту функцию должен поддерживать плеер.

Bluetooth — беспроводной интерфейс, чаще всего используется в беспроводных наушниках и портативных колонках. Отличается удобством, однако ценой кодирования в lossy формат. Большая часть устройств использует довольно старый кодек SBC с битрейтом до 384 кбит/c, который впрочем доёт достаточно прозрачное качество. Но следует учитывать, что битрейт понижается при ухудшении связи и часто восстанавливается только при переподключении. Также существует альтернативный формат для Bluetooth аудио — aptX. Прочитать дательный разбор Bluetooth-аудио можно на Хабре.
Советую использовать Bluetooth только если удобство беспроводного канала для вас важнее бескомпромиссного качества. Предварительно стоит проверить качество декодера на вашем устройстве с помощью тестового файла, т. к. на некоторых устройствах тракт BT воспроизведения оставляет желать лучшего и на тестовом сигнале можно услышать сильные искажения.

Сетевое проигрывание по DLNA. DLNA является стандартом взаимодействия мультимедийных устройств в домашней сети. Цифровые ресиверы (или другие устройства воспроизведения) с его поддержкой могут выступать в локальной сети в качестве устройства медиарендеринга. С помощью ПО с поддержкой вывода по DLNA можно выводить звук из плеера прямо на такое устройство. Недостатком такого способа является ограниченное количество поддерживаемых форматов вывода, невозможность использовать сетевое устройство как обычное звуковое устройство Windows, а также значительная задержка при инициализации вывода.

2.3.3 Кабели для коммутации

Не стоит покупать кабели за сотни долларов в надежде, что они украсят звучание вашей аппаратуры. Кабель должен быть просто качественным: надежным, достаточно толстым, с хорошей изоляцией. Это касается как цифровых так и аналоговых кабелей. Наиболее чувствительным к качеству кабеля является оптический интерфейс S/PDIF, тут желательно не поскупиться уж совсем и взять что-то хотя бы за 7$ (существуют тонкие некачественные кабели по 3 доллара). Но опять же, помните, что качество передачи не увеличивается прямо пропорционально цене кабеля.

Не используйте слишком длинные кабели — это увеличивает уровень шумов, наводимых в них электромагнитными полями.

Также важно обеспечить надежное крепление соединительных проводов в соответствующих гнездах: хороший контакт очень важен, плохой же контакт станет узким местом и сведёт на нет качество самого добротного кабеля.

2.3.4 Принцип последовательного включения

2.4 Плеер

Я настоятельно рекомендую использовать foobar2000, из-за его максимально качественного и прозрачного звукового тракта, а также широких возможностей настройки. Ниже привожу, собственно, схему тракта плеера:

1. Как видно из схемы, присутствие всех компонентов необязательно — некоторые можно отключать, а некоторые включаются только при необходимости. Так, например, декодер нужен только для сжатых форматов, а конвертер глубины бит включается при несоответствии формата входных данных настройкам вывода (output data format).
2. Для Windows 7+ возможен вывод в формате с плавающей точкой (32-битный вывод через DS).

2.4.1 Декодер

Декодирует входные данные, в результате чего получаем несжатый звуковой поток в виде импульсно-кодовой модуляции. Большинство lossy декодеров работают в режиме с плавающей точкой (32-битном). На выходе декодеров lossless получаются данные с параметрами аналогичными исходному аудио (которое сжималось). Обратите внимание, что поток DSD (если SACD/DSD декодер работает в режиме DSD) следует на вывод, минуя все звенья, через которые проходит PCM.

2.4.2 Постпроцессор

Выполняет роль декодера форматов HDCD и DTS (только lossless источники — пока только CDDA, WAV, FLAC, ALAC и WV). Так как для успешного декодирования этих форматов данные с обычного декодера должны передаваться бит-в-бит, постпроцессор находится в тракте сразу после него.

2.4.3 Обработчики

Совершают цифровую обработку звукового потока. Надо отметить, что использовать их надо только при необходимости, т. к. практически любая обработка звука — будь то даже изменение громкости — непременно вносит определенные искажения. Все обработчики по умолчанию работают в режиме с плавающей точкой. К цифровым обработчикам foobar2000 относятся:

ReplayGain

RG может использоваться в нескольких целях:

а) Для предотвращения клиппинга.

б) Для воспроизведения разного музыкального материала с одинаковой громкостью (чтобы не крутить каждый раз ручку громкости).

в) Для повышения громкости до максимально возможного уровня с целью улучшения соотношения сигнал/шум. Это называется пиковая нормализация до 0 dBFS, читайте о ней в статье по ссылке выше.

г) Для корректной работы тонкомпенсации, если ваше оборудование имеет такую функцию. Настройка описана в отдельной статье.

Я рекомендую не использовать ReplayGain без необходимости, а проблему клиппинга решать с помощью Advanced Limiter DSP (см. дальше)

Это цифровые обработчики звука, необходимы для выполнения различных преобразований звукового потока в режиме реального времени.

В идеале любая обработка звука, конечно же, должна отсутствовать, но в некоторых случаях для достижения более высокого качества приходится использовать некоторые обработчики. В частности, ресемплер просто необходим при отсутствии аппаратной поддержки звуковой картой частоты дискретизации воспроизводимого сигнала (чаще всего это материал со звуковых компакт-дисков с частотой дискретизации 44.1 кГц) для выполнения предварительного преобразования звукового потока в вид соответствующий аппаратным возможностям звуковой карты (чаще всего это преобразование 44.1->48/96/192 кГц).

Примечание: для встроенных визуализаций поток снимается сразу после прохождения через цепочку DSP.

Выявление некачественной передискретизации

На этот случай существует специальный семпл:

udial.flac
[СКАЧАТЬ] (0.18 MБ)

Этот семпл состоит из последовательности тональных сигналов с наложенным на неё синусоидальным сигналом, частота которого плавает в пределах 19—20 кГц:

В случае некачественного софтового ресемплинга при воспроизведении этого семпла вы услышите скрежет, шум, или другие искажения.

Примечание: для точной проверки ресемплинга сначала следует установить правильные настройки вывода (см. п. 2.4.1/2.4.2).

Настройка

Рассмотрим два варианта для воспроизведения материалов с частотой дискретизации 44.1кГц:

a) Ваше устройство вывода аппаратно поддерживает данную частоту дискретизации. В этом случае для достижения максимального качества на вкладке DSP должны отсутствовать какие-либо включенные обработчики (первый список, слева).

б) Ваше устройство вывода аппаратно НЕ поддерживает данную частоту дискретизации. Для достижения максимального качества установите плагин SoX Resampler и выставьте в его настройках максимальную частоту дискретизации, которую аппаратно поддерживает ваше устройство. После плагина SoX Resampler в список активных плагинов обязательно добавьте Advanced Limiter — этот плагин позволит предотвратить клиппинг, «на лету» занижая уровни участков звукового потока, которые в результате ресемплинга сигнала (или другой обработки) могут оказываться выше максимального уровня.

Если у вас второй случай и вы выставили рекомендуемые настройки, то теперь появится возможность максимально качественно (для этой звуковой карты) воспроизводить не только записи 44.1 кГц, но и записи с любой другой частотой дискретизации. В случае, если частота воспроизводимого материала совпадет с максимальной поддерживаемой устройством, ресемплер просто отключится (за ненадобностью).

Есть и ещё один вариант настройки, который подойдёт для дорогих высокотехнологичных звуковых карт/ЦАП. Дело в том, что в некоторых случаях (а именно, при выводе через WASAPI Exclusive или ASIO — о них читайте далее) такие устройства умеют автоматически подстраивать свою опорную частоту под частоту дискретизации воспроизводимого потока (т. н. автомат частоты). В этих случаях использование ресемплера для тех частот, с которыми устройство может работать на аппаратном уровне, излишне, и идеальным решением будет использование SoX Resampler mod:

Здесь я указал все частоты, поддерживаемые подключенным сейчас у меня ЦАП iFi nano iDSD. Теперь при подаче потока с любой из указанных частот ресемплер включаться не будет, а ЦАП будет сам определять и подстраивать свою частоту:

В случае нестандартной частоты источника (например, 32000 Гц) она будет преобразовываться в 384 кГц. Конечно, не каждая звуковая карта может похвастаться такой поддержкой частот (в данном случае SoX Resampler можно даже не включать — записи с другими частотами дискретизации практически не встречаются), для линейки Creative X-Fi 2004 года, например, автомат частоты работает только при выводе через ASIO в режиме Audio Creation и только с частотами 44.1/48/88.2/96 кГц. Пользоваться описанным методом можно только если вы уверены в «родной» поддержке указанных частот и можете проверить текущую опорную частоту в панели устройства или на цифровом индикаторе.

Регулятор громкости (Volume Сontrol)

Собственный регулятор громкости плеера. В случае необходимости программной регулировки громкости рекомендуется использовать именно его (а не регуляторы в настройках звуковой карты/микшере Windows). При выводе через WASAPI shared («DS: » в Windows Vista+) синхронизируется с регулятором программы в микшере Windows.

Конвертер глубины бит

Используется для преобразование данных в формат, который способна воспринять звуковая карта (обычно это 16 или 24-битное аудио в формате PCM с фиксированной точкой). Возможности выбора формата зависят от используемого плагина вывода (смотрите следующий пункт).

2.2.4 Вывод

Плагин вывода необходим как связующее звено между плеером и Windows/драйвером звуковой карты. Плагин определяет каким образом и через какой интерфейс будет производиться вывод полученного (в результате работы всех предыдущих звеньев) аудиопотока из плеера на звуковую карту. Иногда использование альтернативных интерфейсов позволяет обойти некоторые некачественные участки тракта. Надо отметить, что на этапе вывода поток чаще всего преобразуется в формат с фиксированной точкой (глубина бит от 8 до 32 бит — в зависимости от выбранных параметров), к чему это может привести — уже рассматривалось в разделе о ReplayGain. На данный момент в foobar2000 существуют следующие способы вывода звука: DirectSound, Kernel Streaming, ASIO, WASAPI Shared и WASAPI Exclusive (только для Vista — 10).

Ввиду принципиальных различий между архитектурами Windows XP и Windows Vista+ рассмотрим настройку вывода для них отдельно.

Windows XP

Вот примерная схема звуковой подсистемы Windows XP:

Как видно, при выводе через DirectSound или MME звук проходит через микшер Windows (Kmixer). Главное отличие DirectSound состоит в широких возможностях использования аппаратных ресурсов звукового устройства, в т.ч. аппаратного микширования и низкой задержке. Но дело в том, что эти возможности напрямую зависят от используемых драйверов. Таким образом, из-за некачественных драйверов звуковой карты (это сейчас не редкость, особенно устаревшие драйвера) в аудио могут вноситься искажения. Возникать они могут как в результате работы регулятора Wave (входящего в Kmixer), так и в результате некачественной программной передискретизации или другой нежелательной обработки.

Решить проблему помогут два других вывода, которые способны обойти Kmixer — ASIO и Kernel Straming. Kernel Streaming — это средство по-битового вывода звука от Microsoft, входящее в DirectSound (на схеме — поток обходящий Kmixer). ASIO (Audio Stream Input/Output) также позволяет является профессиональным стандартом ввода/вывода, призванным минимизировать задержки (значение задержек для простого воспроизведения музыки совершенно не критично и на качество не влияет), и также позволяет обойти Kmixer.

ОБРАТИТЕ ВНИМАНИЕ: для многих современных звуковых карт с нормальными драйверами, результаты для всех выводов (в foobar2000) при регуляторе Wave на максимум (имеет значение только для DirectSound) совпадают. А при поддержке 24-битного (и выше) вывода вообще можно обойтись одним DirectSound, даже в случае когда уровень Wave нельзя выставить на максимум — качество будет таким же, как и при выводе через KS. Чтобы окончательно развеять Ваши сомнения, рекомендую к прочтению статью foobar2000: Kernel Streaming против DirectSound.

Настройка:

Итак, если Ваша звуковая карта поддерживает ASIO, скачайте и установите со страницы плагинов foobar2000 ASIO Output. Если же поддержки нет, установите Kernel Streaming. Далее запустите foobar2000 и на странице вывода выберите в Output device драйвер ASIO производителя Вашей карты (например: ASIO: Creative ASIO, ASIO: Xonar Essence STX ASIO) или же KS: :

Buffer Length — это регулировка буфера плеера. Чем меньше значение — тем быстрее (считая от момента включения/изменения) будут вступать в силу изменения громкости, включение плагинов и т. д. На качество вывода данная опция не влияет, изменять стандартное значение не рекомендуется (т. к. при высокой нагрузке могут появится щелчки и треск).

Output format / Postprocessing

Output data format: установите максимальную разрядность, поддерживаемую вашей звуковой картой. Форматы 8 и 16 бит являются полноценными форматами с фиксированной точкой. Формат 24 бит соответствует либо i24v24 («integer 24 valid 24», 24 бита с фиксированной точкой, 24 значащих бита) либо i32v24 (32 бита, фиксированная точка, 24 значащих бита) — в зависимости от поддержки драйвером звуковой карты. Формат 32 бита соответствует либо 32 битам с плавающей точкой (f32v32), либо, в случае отсутствия поддержки драйвером плавающей точки — 32 битам с фиксированной точкой (i32v32). В некоторых случаях (для вывода ASIO и в более новых ОС) разрядность вывода плеер выбирает сам, на основе полученных от драйвера данных.

Dither: включение dithering + noise shaping (подробно читайте в статье «Системы понижения разрядности в мастеринге». Данная функция может быть полезна только при выполнении одного из следующих условий:

а) Если ваша звуковая карта аппаратно НЕ поддерживает разрядность звука выше 16 бит и вы используете одну из функций: ReplayGain, DSP, Volume Control (регулятор громкости в foobar2000).

б) ваша звуковая карта аппаратно НЕ поддерживает разрядность звука выше 16 бит и вы воспроизводите в foobar2000 материал с разрядностью более 16 бит.

Во всех остальных случаях (например, если все обработчики выключены и вы воспроизводите материал с разрядностью 16 бит) включение данной функции только ухудшит качество.

Если вы используете вывод ASIO, его также необходимо настроить:

Use 64-bit ASIO drivers — если у вас 64-битная ОС и имеется 64-битный драйвер ASIO, очень желательно включить этот параметр для повышения производительности.

Run with high process priority — запускает обработчик ASIO (процесс ASIOHOst[64].exe) с высоким приоритетом. Также позволяет улучшить производительность.

Разрядность (если она настраивается в вашем драйвере) рекомендуется установить в 24 бита, оптимальное значение буфера ASIO обычно 20—40 мс. Обратите внимание на то, что буфер ASIO влияет на частоту обновления визуализаций плеера (чем меньше — тем выше частота), при этом малое значение может привести к явным искажениям, щелчкам и зависаниям.

Windows Vista — Windows 10

В этих ОС звуковая подсистема имеет совершенно иную структуру. Ниже представлена её упрощенная блок-схема:


API — Application Programming Interface
APO — Audio Processing Object
CPT — Cross Process Transport
KST — Kernel Streaming Transport

Как видно из схемы, никакого DirectSound тут нет (есть только его видимость для совместимости со старыми программами). По-умолчанию все звуки выводятся через интерфейс WASAPI (Windows Audio Session API) в т. н. общем (shared) режиме, который включает в себя различные службы, софтовые обработчики и микшер. Также очевидно, что звук передается драйверу устройства только пройдя все вышеуказанные составляющие. Таким образом, все звуки приводятся к одной частоте и битности, смешиваются, (вся обработка идет с использованием вычислительных ресурсов ЦП), а на звуковую карту поток поступает уже в готовом виде.

Как показала практика, в некоторых случаях обработчики подсистемы WASAPI могут сужать динамический диапазон записи, привнося в него некоторый шум. Это зависит от выбранной разрядности в настройках устройства, однако, так или иначе, получить побитовый вывод при использовании WASAPI shared удаётся не всегда.

В данных ОС также присутствует Kernel Streaming (KST), но на практике он далеко не всегда работает — порой устройство по непонятным причинам оказывается «занято».

Если посмотреть на схему, то можно заметить, что прямой доступ к драйверу имеется через ASIO. Отсюда вывод: если ваша карта аппаратно поддерживает ASIO (и имеет вменяемый драйвер ASIO 2.0) — используйте этот интерфейс. Не забывайте, что для этого необходим плагин ASIO Output.

Но что же делать если у карты нет поддержки ASIO? Сразу скажу, что ASIO4ALL тут едва ли поможет, так как работает через тот же нестабильный Kernel Streaming.

К счастью, выход из этой неприятной ситуации всё же существует. Разработчики оставили нам лазейку, и называется она WASAPI Exclusive. В этом режиме можно обойти все нежелательные составляющие WASAPI. Правда, в эксклюзивном режиме действуют жесткие ограничения — при использовании приложением этого режима звуки всех остальных приложений отключаются.

Примечание: описание настроек вывода можно найти в предыдущем разделе. Здесь освещены лишь специфические для новых ОС моменты.

Как я уже сказал, если у вашей карты есть поддержка ASIO — используйте его (описание настроек можно найти выше). В противном случае скачайте со страницы плагинов foobar2000 и установите плагин WASAPI Output, после чего выберите его для вывода:

Обратите внимание: у WASAPI exclusive существует два режима буферизации — Event и Push. Первый режим является технически более совершенным и лучше совместим с USB устройствами. Однако, режим event поддерживается не всеми звуковыми картами. Таким образом, предпочтительным является режим event. Если же воспроизведение в нем работать отказывается, необходимо переключиться на режим push.

В связи с частыми проблемами щелчков и треска во время воспроизведения звука в Windows Vista и более новых здесь немаловажно упомянуть дополнительные настройки воспроизведения, которые находятся в File->Preferences->Advanced->Playback:

Hardware buffer in MS — аппаратный буфер вывода для каждого из режимов WASAPI Exclusive. Если наблюдаются проблемы со щелчками, попробуйте увеличить значение для используемого вывода.
High worker process priority — этот параметр устанавливает высокий приоритет выполнения обработчика WASAPI Exclusive, который запускается в отдельном процессе WASAPIHost[64].exe (аналогично ASIO Host). Для достижения максимального эффекта можно установить и этому процессу, и процессу foobar2000.exe в Диспетчере задач Windows приоритет реального времени.

Thread priority — устанавливает приоритет для потока, отвечающего за воспроизведение. Желательно установить в максимум.
Use MMCSS — включает взаимодействие со службой Multimedia Class Scheduler Service, которая занимается распределением процессорных ресурсов. Эту функция рассматривается в статье по разбору звуковой подсистемы WASAPI.
MMCSS mode — выбор режима MMCSS. Для наилучшей производительности и стабильности рекомендуется значение Pro Audio.

3. Настройка звуковой карты и микшера Windows

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

3.1 Настройка средствами Windows

3.1.1 Windows XP

Чтобы начать настройку, вам необходимо перейти в Панель управления Windows->(Звук, речь и аудиоустройства->)->Звуки и аудиоустройства.

Рис. 1.1 Громкость следует установить на максимум, регулировку уровня громкости производить аналоговым методом (например, ручкой на усилителе). Если вы используете наушники без регулятора громкости, регулируйте её средствами foobar2000. По окончании настройки нажать на кнопку Дополнительно в графе Громкость микшера.

Рис. 1.2. Все источники, кроме Wave (его надо установить на максимум) и Play Control конечно же, следует отключить. Wave тоже можно отключить, если вы не используете в плеере вывод через DirectSound, при этом все остальные звуки, в том числе системные, не будут слышны. Предварительно необходимо перейти в «Свойства» и включить отображение всех источников:

Рис. 1.3. Тут вы должны включить отображение всех источников воспроизведения для настраиваемого устройства.

Рис. 1.4. Данное окно вызывается с помощью кнопки Дополнительно в графе Настройка динамиков окна изображенного на рис. 1.1. Здесь вы должны выбрать Вашу конфигурацию динамиков. Далее переходим на вторую вкладку.

Рис. 1.5. Тут оба регулятора следует выставить в максимальное положение. Естественно, подразумевается, что никаких неполадок с воспроизведением звука (чаще всего это может происходить в играх) у вас не возникает. Если же неполадки есть, подберите наибольшие положения регуляторов, при которых неполадки исчезнут. В таком случае, стоит отметить, что данные настройки не влияют на воспроизведение с использованием Kernel Streaming и ASIO, из этого следует, что если вам пришлось установить один из регуляторов в более низкое положение, для качественного вывода звука в плеере необходимо использовать один из этих плагинов вывода.

По завершении настроек в каждом окне следует нажимать кнопку Ок.

3.1.2 Windows Vista — Windows 10

Чтобы начать настройку, вам необходимо перейти в Панель управления Windows->Оборудование и звук->Звук и на первой вкладке дважды нажать на устройстве воспроизведения, которое вы хотите настроить.

Рис. 2.1 Основную громкость установить на максимум. Все ненужные источники (микрофон, линейный вход) выключаем, регуляторы каналов (Front, Rear и т.д. — на скриншоте их не видно) устанавливаем в максимальное положение..

Рис. 2.3 На этой вкладке нас больше всего интересует включение монопольного режима, необходимого для работы WASAPI. Параметр Предоставить приоритет приложениям монопольного режима оставьте включенным.

Настройка частоты и глубины бит здесь тоже работает лишь для общего режима, т.е. это опорная частота и глубина бит программного микшера, к которой будут приводиться все поступающие в него звуки. Частоту желательно установить соответствующую характеристикам вашей звуковой карты, глубину бит — максимальную поддерживаемую (используйте кнопку Проверка).

Эта вкладка отображается для цифровых интерфейсов. На ней либо указаны форматы, поддерживаемые устройством (для HDMI определяются автоматически), либо их поддержку можно проверить и указать самому. Эта страница никак не влияет на вывод через ASIO и WASAPI Exclusive.

3.2 Настройка звуковой карты (общие рекомендации)

На этом этапе принцип настройки не отличается от предыдущих: необходимо обеспечить достоверную передачу цифрового аудиопотока без внесения в него каких-либо изменений (в идеале — до самого цифро-аналогового преобразователя). Рекомендации по настройке состоят в следующем:

4. Рекомендации по воспроизведению lossy аудио

Для получения наилучшего результата, перед воспроизведением выделите трек(и) в библиотеке или плейлисте foobar2000, нажмите на выделенном правую кнопку мыши и выберите из раскрывшегося списка Utils->Verify Integrity. Произведется сканирование трека(ов) на наличие ошибок. При наличии ошибок в файлах формата MP3 foobar2000 может их исправить. Если вы увидите ошибку вроде «Reported length is inaccurate. », выделите треки для которых отобразилась данная ошибка, нажмите правую кнопку и выберите Utils->Fix VBR MP3 Header, после обработки проверьте трек еще раз, ошибка должна отсутствовать.

Если при проверке вы наблюдаете ошибку вида «MPEG Stream error. », её можно исправить с помощью опции Utils->Rebuild MP3 Stream. После выполнения операции исправления ошибки не забывайте повторно проверять треки.

Источник

Читайте также:  что делать если кс го вылетает во время игры без ошибки на рабочий стол
Сказочный портал