Wasapi или asio что лучше
Зачем нужно ASIO для аудиофилов?
Каждый, кто сталкивался с вопросом о качественном воспроизведении звука рано или поздно встречается с аббревиатурой ASIO, как важной и необходимой опцией.
Что это и в чем практический смысл?
Прежде всего, ASIO имеет отношение только к звуковой части записи/воспроизведения с компьютера через звуковую карту или USB-ЦАП под операционными системами семейства Windows. Тем, кто слушает музыку со смартфона или с сетевого проигрывателя с собственной ОС иметь представление ASIO тоже полезно, т.к. знание об этой «опции» позволяет избежать ряд проблем, присутствующих в смартфонах и соответственно позволяющая понять, почему не все платформы для звука одинаково полезны.
ASIO – это программный интерфейс передачи данных от программы, которая воспроизводит или принимает звуковой сигнал напрямую в драйвер звуковой карты, минуя звуковую подсистему ОС.
Необходимость в ASIO возникла исключительно для профессиональных задач. Самой большой проблемой была и остается минимальная задержка для передачи аудио сигнала. Когда мы смотрим фильм, нам не важно, сколько времени требуется системе для старта воспроизведения видео и аудио, доли миллисекунды или пару секунд после нажатия на кнопку «play». Главное, чтобы видео и аудио были синхронны относительно друг друга. В студии же требования очень жесткие, т.к. часто требуется игра вживую на виртуальных инструментах, с которых звук необходимо обрабатывать в реальном времени. Невозможно полноценно играть на midi клавиатуре, если нажатие на клавишу слышишь не сразу, а спустя секунду.
Штатно в ОС семейства Windows задержка составляет от 7 до 300 мс и зависит от текущей загруженности системы. Как несложно догадаться, звуковая система не является приоритетной в Windows и все что от нее требуется, это что бы звук просто не заикался, а для этого аудио данные собираются отдельный буфер и передаются сразу большим куском. Для сверх малых задержек буфер должен быть маленьким и постоянно передаваться небольшими пакетами.
ASIO является альтернативным мостом, который обеспечивает передачу звукового потока от программы до драйвера с фиксированным значением буфера, минуя штатную систему передачи данных ОС. Т.к. ASIO не является разработкой Microsoft (которой, к слову, на звук традиционно положить три кучи), то поддержка вывода и приема в ASIO ложится на плечи производителя ПО и звуковых устройств. Первоначально ASIO был разработан компанией Steinberg под свои продукты в момент перехода от MIDI к виртуальному синтезу и сегодня поддерживается практически всем профессиональным софтом и звуковыми интерфейсами.
Как несложно догадаться, аудиофилам без разницы на то, какая задержка в системе. Но полезно знать, на что ОС тратит свои силы под передачу звука и как это сказывается на качестве.
Как влияет звуковая подсистема ОС на звук
В ОС много программ, которые являются источниками звука, это Skype, ICQ, браузер с музыкой в вКонтакте, системными звуками, видеопроигрывателем и другими приложениями. Все эти звуковые потоки различаются как дискретностью, так и частотой семплирования, а на ЦАП должен придти всего один стерео поток с определенной разрядностью и частотой дискретизации. Соответственно все звуковые потоки необходимо заранее смикшировать. Что бы представить уровень проблемы, представим, что есть несколько фотографий с разными исходными разрешениями, которые нужно одновременно вывести на экран ЖК монитора, при этом каждая фотография должна заполнить весь экран. Если фото вывести пиксель в пиксель и фото займет часть экрана – это будет аналогично тому, что звук будет воспроизводиться медленнее или быстрее.
Если разрешение фотографии 600х480 пикселей, а разрешение монитора 1024х768, то необходимо фотографию предварительно перевести в 1024х768. Четкость фотографии несомненно снизится. Примерно так страдает и звук, который система пересчитывает из 44,100 кГц в 48000 или 96000 кГц. Качество ресемплера в Windows оставляет желать лучшего, т.к. идет максимальная экономия ресурсов.
Возвращаясь к фотографии, у нас есть фото с разрешением в 600х480 пикселей, 1024х768 пикселей и 2048х1536 пикселей и все фотографии надо вывести на 1024х768 пикселей. До сложения необходимо 600х480 и 2048х1536 пересчитать в 1024х768 и после три фотографии просуммировать, накладывая одну картинку на другую.
Обычно только одна программа воспроизводит основной звук, а остальные проигрывают звук периодически (ICQ, Skype) и их можно сравнить с логотипами и надписями поверх основной фотографии. Вполне очевидно, что картинка с исходным разрешением в 1024х768 меньше всего пострадает в качестве и если она будет основной и совпадать с разрешением монитора, то в снизится качество лишь вспомогательных картинок: логотип и надписи.
Так же и в системе можно формально выставить конечную частоту семплирования 44.100 кГц под аудиоплеер и пренебречь качеством системных звуков, которые звучат лишь время от времени.
Однако для наименьших потерь в качестве при микшировании звуковых потоков добавляется специальный шум (диттер) и системе все равно, одна программа воспроизводит звук или несколько. Таким образом, даже при воспроизведении всего одного звукового потока без его конвертирования в другую частоту семплирования, он все равно подвергается обработке и уже не поступит на ЦАП «бит в бит».
Если раньше ОС отслеживала, с какой частотой семплирования поступают на вход данные и автоматически выставляла максимальную поддерживаемую звуковой картой частоту дискретизации к входящим звуковым потокам (например при входящих 22, 44,1 и 48 кГц выставлялась 48 кГц, а при 22 и 44,1 понижалась до 44,1 кГц ), то начиная с Win7 в системе принудительно выставляется общая частота семплирования и автомата опорной частоты нет. Стабильность ОС повысилась, но метод не всех обрадовал.
Описанная ситуация в равной степени справедлива для всех ОС и платформ, которые могут воспроизводить звук одновременно с разных программ. В мобильном телефоне это к примеру воспроизведение телефонного разговора и системный сигнал о севшей батарее.
Условно общая схема выглядит так. При использовании ASIO Звуковой поток направляется сразу в микшер драйвера звуковой карты (Mixer Driver), минуя ресемплер (SRC) и микшер ОС.
Для необходимости воспроизвести звуковой поток «бит-в-бит” есть специальные режимы, в ОС Windows это «Kernel Streaming» (версии до XP) и WASAPI (версии после XP включительно). В таком режиме право передать звуковой поток имеет только одна программа в системе и тут полностью исключается микширование и пересчет данных. Более того, есть поддержка системой автоматического переключения опорной частоты (но при соответствующей поддержке драйвера звуковой карты).
Этот режим не рекомендуется использовать обычному пользователю, т.к. несет за собой разные проблемы. Например, пользователь включает Foobar2000 с WASAPI и после запускает видео ролик с ранее запущенного браузера. Звуковой драйвер не принимает звуковой поток от браузера и происходит крах флеш плагина. Налицо — система порушилась, а это: «печаль, беда и огорченье». Производители ПО крайне редко делают возможность вывода звука в KS/WASAPI, т.к. воинствующие пользователи будут винить в проблемах не свои кривые руки, а программу «из-за которой все порушилось».
Режимы KS/WASAPI можно встретить только в аудиоредакторах, секвенсорах и редких программных плеерах, предназначенных для аудиофилов – под подготовленных пользователей, которые понимают, что будет страдать стабильность работы ОС и кроме плеера/аудиоредактора/секвенсора звука не будет. Продвинутые аудиофилы, отказавшиеся от встроенного звука обычно для музыки используют отдельную звуковую карту, а системные звуки направляют на встроенный звук, что обеспечивает высокую стабильность работы ОС.
Т.е. по сути, KS/WASAPI – это идеальный вариант для вывода звука для аудиофила. Поддерживается в Foobar2000, AIMP, Winamp. Тем, кто хочет и фильмы в качестве слушать – есть плеер Light Alloy.
ASIO или WASAPI?
Профессионалы используют режим ASIO, который передает в драйвер звуковой поток «бит-в-бит» и обеспечивает фиксированный уровень задержки. WASAPI штатными настройками ОС не позволяет управлять задержкой. Уровень задержки в профессиональной работы приоритетнее, а «бит-в-бит» лишь приятный бонус.
Что происходит, когда задействованы одновременно звуковая система ОС и ASIO?
Для звукового драйвера есть два звуковых потока, одни из них приходит из подсистемы ОС, другой из ASIO. Исключительно от того, как был написан драйвер, будет происходить микширование финального потока до ЦАП. В одних случаях, если есть звуковой поток из ASIO, то звук от подсистемы ОС отключается, в других случаях происходит микс потоков из ОС и ASIO и «бит-в-бит» остается только в теории. ASIO, как и WASAPI позволяет лишь избежать алгоритмов SRC (передискретизации) и микширования подсистемы ОС и ничего более. Целостность финального потока будет зависеть от драйвера.
В любом случае, практически всегда звуковая карта работает в том же режиме семплирования, что и поступающий поток из ASIO, что дает некоторое преимущество для ASIO.
Микширование в драйвере может быть программным, а может аппаратным. Особенно забавно выглядят попытки аудиофилов в качестве источника ставить профессиональный интерфейс для «качественной цифры», где цифра выдается после аппаратного микширования. Впрочем, некоторым отмикшированный звук нравится больше оригинального … чище, прозрачнее и душевней…
Если логически просмотреть цепочку, по которой должен пройти звуковой поток, то для идеологии «бит-в-бит» звуковой интерфейс должен поддерживать всего один вариант, либо отключать микширование потоков при работе только одного интерфейса. Только в этом случае шансы получить «бит-в-бит» максимальны.
К примеру, возьмем OPPO HA-1 c поддержкой ASIO. Если запустить одновременно Foobar2000 с WASAPI и AIMP с ASIO, то на выходе мы услышим одновременно оба звуковых потока. Цифровых выходов у OPPO нет и соответственно нет возможности проверить звуковой поток на «бит-в-бит» отдельно для ASIO и WASAPI перед ЦАП.
А вот с ASUS Essence STU ситуация иная. Если AIMP с ASIO играет, то Foobar2000 с WASAPI уже молчит, звуковые потоки не смешиваются, отдавая приоритет для ASIO. Проверить цифровой поток аналогично возможности нет, но шансов, что звуковой поток поступил «бит-в-бит» на порядок больше.
Считается, что USB-ЦАП обязательно должен поддерживать ASIO, но на практике мы получаем дополнительное звено, где должны смешиваться или переключаться потоки из звуковой системы ОС и ASIO. И тут отсутствие ASIO – это отсутствие неизвестного звена, где может быть принудительное микширование, которое нельзя протестировать без цифровых выходов. В тоже время микширование на этом этапе обычно производится в разрядности 24 или 32 бита и соответственно услышать шум диттера маловероятно. Проблема лишь в идеологии «Hi-End».
Является ли ASIO панацеей от всех бед?
Как показывает практика, все зависит от драйвера звукового устройства. Если устройство профессиональное, то обычно стабильности и качеству у производителя ASIO максимум внимания. Если устройство бытовое, то ASIO может работать на порядок хуже режима KS/WASAPI. С практической точки зрения при выборе использования KS/WASAPI и ASIO нужно использовать тот интерфейс, с которым ОС работает более стабильно.
Универсальный драйвер ASIO4ALL
Драйвер ASIO4ALL необычайно популярен, но является при этом мостом между выходом ASIO из программы на вход KS/WASAPI в ОС. Это важно знать, т.к. если у вас звуковая карта не поддерживает ASIO, то после установки ASIO4ALL в том же Foobar2000 у вас выбор, выбрать изначально вывод в KS/WASAPI или ASIO через ASIO4ALL, который направит звуковой поток в тот же KS/WASAPI в ОС.
Ремарка для фанатов ASIO4ALL – да, там есть еще разные настройки, вроде выбора буфера и т.п., но эти возможности нужны лишь в профессиональной работе и ничего полезного не дают аудиофилам, для которых предназначен данный материал.
Что дает право утверждать, что ASIO4ALL доносит данные «бит-в-бит» до KS/WASAPI? Ведь теория и практика зачастую дают противоположные результаты. Для оценки качества работы ASIO4ALL был задействован Audiolab M-DAC с функцией проверки входящего звукового потока на «bit perfect» через воспроизведение специального звукового файла. Тест подтвердил, что данные приходят действительно «бит-в-бит» при воспроизведении из Foobar2000 через ASIO4ALL.
Кстати, приходили утверждения со стороны программистов, что например ASIO драйвер внешних карт E-MU (USB версий) сделан аналогично ASIO4ALL в виде моста и именно это является источником низкой стабильности карт…
Android и «бит-в-бит»
Возвращаясь к плеерам на базе ОС Android. В данной ОС есть аналогичный режим KS/WASAPI, но вот явных настроек под него нет. Единственный программный плеер, в котором есть режим прямого вывода в ЦАП используется в iBasso DX100. Разумеется, собственный программный плеер работает только в DX100 его нельзя скачать и поставить например в плеер Sony.
Проверить работу в Android на «бит-в-бит» очень просто. Запустите любой будильник и плеер. Если поверх звука из плеера вы услышите будильник, то никаких «бит-в-бит» на выходе нет.
ASIO – это возможность передать звуковой поток “бит-в-бит” минуя обработку звука в подсистеме ОС, но помимо ASIO есть и альтернативный вариант KS/WASAPI. Качество и точность передачи в конечном итоге обеспечивает лишь драйвер звукового устройства и порой отсутствие ASIO лишь отдельный плюс.
Цифровой аудиотракт: апсемплинг и апскейлинг, 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. Поэтому цены на различные фирменные реализации цифрового транспорта меня реально шокируют.
Кардинальное и самое правильное решение для устранения джиттера и получения действительно правильного звука — это использование внешнего мастер клока. При этом и железо плеера, и ЦАП должны быть подключены к нему в слэйв-режиме. Именно такой подход используется в студиях звукозаписи.
Вывод: качество звука лучше улучшать не эзотерическим софтом, а железным цифровым буфером с реклоком. Самое правильное решение — это использование внешнего мастер клока
WASAPI, DS, KS, ASIO
Цифра цифрой, но в какой-то момент любители аудио столкнулись с утверждениями, что программные проигрыватели звучат по-разному. Стали субъективно оценивать воспроизведение на foobar2000, jriver, winamp, aimp, aplayer и развеиватели мифов сообщали, что слышат разницу, кому-то один проигрыватель заходил, кому-то другой.
Учитывая проприетарный код многих проигрывателей провести анализ и найти причины такого поведения мы не в силах, но помимо проигрывателя, в воспроизведении аудио участвует и часть операционной системы компьютера. Т.е. это такой компонент, который отвечает за воспроизведение звучания в ОС.
В разных операционных системах аудиосистема разная, и даже в одном семействе операционных систем могут использоваться разные методы взаимодействия с аудио.
Например в Linux изначально использовалась звуковая архитектура OSS (Open Sound System от компании 4Front Technologies),
которая использовалась в профессиональных целях с музыкальным оборудованием — она прекрасно звучала, но здесь произошли коллизии с лицензией — OSS была выпущена тогда под закрытой лицензией, а сообщество требовало GPL. Поэтому разругавшись часть программистов-линуксоидов просто решила написать с нуля аудиосистему и создала ALSA.
Alsa не была лучше (по звучанию даже хуже, по крайней мере на начальном этапе, в настоящий момент не сравнивал), в ней даже нормального микшера не было, пришлось дописать костыль pulseaudio, но были соблюдены GPL-лицензии.
На данный момент Alsa доминирует в Linux, а ряд популярных дистрибутивов выпилили OSS даже из ядра, поэтому прикрутить OSS к той же Ubuntu без перекомпиляции ядра просто не получится, а более демократичный Arch Linux вам позволит использовать и OSS. Есть другая небольшая проблема — если раньше все аудиопрограммы были написаны под звуковую архитектуру OSS, и при появлении alsa они не работали (поэтому был написан модуль совместимости и при его установке OSS программы думают, что работают с OSS, хотя на самом деле с «новой» ALSA посредством aoss из пакета alsa-oss), то теперь наоборот — современные линукс-программы работают только с ALSA и уже их придеться обманывать аналогичным модулем для OSS — они будут думать, что работают с ALSA, а на самом деле с OSS (osspd — OSS Proxy Daemon).
Что мне очень нравилось в звуковом ядре OSS — это истинный юникс вей, т.е. абсолютно юниксовый подход — всё есть файлы, и с любым устройством я могу делать все тоже, что и с обычным файлом, копировать в него, с него, читать, писать.
TrueOS — десктопная BSD-система
Ваша звуковая карта в Linux — это файл с названием dsp (а так же audio), который лежит в папке /dev.
Чтобы проиграть музыкальный файл (сырой raw или PCM) я могу просто копировать этот файл (или перенаправить просмотр) в устройство dsp и буду слушать музыку вообще без использования проигрывателей.
cat music.wav > /dev/dsp
cp mucic.wav /dev/dsp
Ну вы поняли это волшебство силы юникс.
Но, чтобы вас добить, я так же скажу, что раз файл dsp это звуковая карта, то я могу на нее же что-то и записать. Если писать с нее, то она является микрофоном (или другим устройством, если вы измените настройки по умолчанию).
Соответственно я могу вообще без каких либо сторонних программ записать звук с микрофона в файл, вот так например:
cat /dev/dsp > mysound.wav
Вот это все умела OSS. Alsa так не умеет — в ней много костылей, которые приходиться настраивать между собой во множестве конфигурационных файлов. Зато лицензия GPL (сарказм). На самом деле для Linux OSS теперь тоже GPL, но поезд ушел.
Немного перевода с wikipedia:
Изначально проект OSS был свободным программным обеспечением, но после успеха проекта, Саволайнен заключил контракт с компанией 4Front Technologies и запатентовал поддержку новых звуковых устройств и усовершенствований. В ответ сообщество Linux отказалось от реализации OSS, включенной в ядро, и усилия по разработке переключились на замену Advanced Linux Sound Architecture (ALSA). Некоторые дистрибутивы Linux, такие как Ubuntu, решили отключить поддержку OSS в своих ядрах и игнорировать любые ошибки, связанные с пакетами OSS4 (хотя поддержка OSS может быть повторно включена в Ubuntu).
Несмотря на это, несколько операционных систем, таких как FreeBSD, продолжали распространять предыдущие версии OSS и продолжают поддерживать и улучшать эти версии.
В июле 2007 года 4Front Technologies выпустила исходные коды для OSS под CDDL для OpenSolaris и GPL для Linux.
В январе 2008 года 4Front Technologies выпустила OSS для FreeBSD (и других систем BSD) под лицензией BSD.
При этом и OSS и ALSA — это профессиональные и великолепные по качеству аудио архитектуры дающие цифровому звуку прямой доступ к внешнему устройству (сохраняя битперфект разумеется).
Такой идеальный вариант в Windows называется ASIO (Audio Stream Input/Output). И если в Linux архитектура ALSA и в большей части OSS поддерживает все, что у вас выступает в роли аудиокарты, то в Windows на это могут претендовать только устройства со специальными драйверами от производителя, содержащими ASIO (а это далеко не все устройства).
Поэтому прямой кратчайший звук в Linux мы получаем даром, а в Windows не для всех и не всегда, но об этом позже.
OSS в Linux — это не устаревшая система, это современная система, которая и сейчас развивается, последняя версия уже OSS4. Просто в Linux по идейным соображениям (не по звуковым) она задвинута на задний план (смотрите выше).
Но зато в семействе истинно юниксовых операционных систем BSD — FreeBSD, OpenBSD, PC-BSD, TrueOS и тд — OSS единственная звуковая система.
Кто-то спрашивал на тематическом форуме почему на BSD не портируют ALSA, на что ответили: а зачем, в OSS все есть и без костылей, как в ALSA. Плюс есть конечно и у ALSA — быстрее всего поддержка новых чипов аудио появляется (скорее всего) именно в ней за счет большей поддержки.
Аудио опыты с FreeBSD и ее OSS 4.2 я наметил на ближайшее время, а пока вернёмся к WIndows.
В Windows плохой звук?
Для начала неплохо понять о какой Windows вообще речь. Все еще в ходу Windows XP, Windows 7, Windows 8 и тд.
В Windows XP со звуком было все плохо, что у ж говорить, там вы использовали по умолчанию архитектуру DirectSound — очень непрямой путь рассчитанный на добавление игровых эффектов ибо DSound был частью игрового API DirectX.
По картинке мы может увидеть сколь долог путь звука в Windows XP по пути DirectSound. Особенно жестоко портил звук всем знакомый микшер.
Я думаю вы без труда найдете измеренные графики и убедитесь в этом, как сделал я готовясь к написанию этого обзора.
Поэтому было очевидно, что хороший звук можно получить только с ASIO, драйвера на который есть не для любого аудиоустройства.
Но времена XP прошли и настала эпоха Windows Vista/7, которую я тоже не советую сегодня использовать.
Microsoft пыталась улучшить качество звука результатом чего стала прослойка WASAPI *(Window Audio Service API).
Многие отметили возросшее качество благодаря WASAPI, но стоит отметить, что WASAPI то же далеко не краткий путь (левая часть картинки), так же обратите внимание на блок с названием KST внутри WASAPI — это KS — kernel stream. В программе foobar2000 есть отдельный модуль для реализации kernel stream — его использование сильно сократит путь цифрового звука до аудиоустройства (будет выкинуто всё, что находиться «до»), а так же, логично, лишит вас возможности управлять например громкостью/микшером.
Мы видим, что KS очень схож с ASIO, но к сожалению его реализации достаточно нестабильны и его можно использовать только если на конкретно вашем компьютере он работает и не глючит.
Путь звука через KS — кратчайший
Так же обратите внимание, что никакого DirectSound на который многие любители аудио ругались за качество, здесь (в Vista, 7 и выше) уже нет.
Вы меня можете разоблачить заглянув в устройства в проигрывателе, где такое название будет присутствовать, но это название, как я понимаю, оставлено для совместимости и на самом деле все работает через WASAPI в режиме эмуляции DSound.
Кстати, в самом WASAPI присутствует более короткий эксклюзивный режим WASAPI exclusive mod (очень низкие задержи (latency) до 10 ms), активация которого приводит к удалению из пути звука ряда компонентов, т.е. по сути WASAPI exclusive оставляет на пути только Kernel Stream, т.е. довольствуется меньшей кровью (напомню — отдельный модуль KS нестабилен).
ASIO по-прежнему остается самым кратким, но мы видим, что и Kernel Stream и WASAPI exclusive позволяют нам и без ASIO получить высочайшее качество.
Очень сильно аудиочасть доработана в Windows 10, поэтому именно эту ОС, я бы и посоветовал аудиофилам (или Linux). Windows 10 (1809) в конце 2018 начале 2019 наконец-то выдала в моей системе звучание не уступающее линуксовой ALSA!
Так же отмечу, если вы при прослушивании регулируете громкость звука через микшер Windows — вы ухудшаете звучание. Регулятор громкости в проигрывателе и Windows всегда стоит держать на максимуме, а громкость регулировать на самом усилителе.
Итак, подведем итоги, какой же интерфейс в проигрывателе лучше выбирать.
Если с Linux и BSD вопрос не стоит, там ALSA и OSS, то в Windows у нас есть вариации.
В Windows XP есть только одно качественное решение — это ASIO, при условии наличия таких драйверов на ваше устройство.
Что касается более новых ОС, то конечно стоит перейти на Windows 10 и иметь в виду, что никакого DirectSound уже нет — есть лишь эмуляция этого режима посредством WASAPI (подробнее).
Остается выбор между ASIO, которое доступно не для всех устройств, между KS (kernel stream, который может быть нестабилен) и WASAPI.
Безотносительно стабильности эти вариации распределяются (гипотетически) так (выше — лучше):
1. ASIO
3.WASAPI
Путь через WASAPI
ASIO замечателен для популярных сегодня транспортов XMOS, Amanero и тд, но если вы пользуетесь другими устройствами, то драйверов ASIO может просто не существовать.
Продвинутые аудиоманы возразят, что существует универсальный драйвер asio4all, но какой профит вы собираетесь получить с него, если он на самом деле работает через WASAPI?
Т.е. смысла в ASIO4ALL на Windows выше XP никакого нет для прослушивания аудио.
На условном втором месте расположился Kernel Stream (KS), он передает напрямую, как и ASIO данные сразу получателю, в данном случае ЦАП-у, но KS глючный с рядом оборудования, и не факт, что у вас заработает, а кроме того, более менее, вменяемый плагин KS я знаю только для проигрывателя Foobar2000. Итого — KS хорош, он имеет путь короче WASAPI, но он опять же может у вас не работать.
Остается WASAPI. Для аудиофильных задач нас интересует только режим WASAPI exclusive, который фактически отрубает большую часть лишнего оставляя лишь KC и еще немного. Мы получаем дико низкие лэтенси (задержки) вплоть до 10 миллисекунд, как и в ASIO! Ну, на самом деле, у меня есть один ASIO-интерфейс Korg, в нем задержка 1 мс, но это нетипично, даже для ASIO-устройств.
И по сути нет никаких сокровенных причин не использовать нативный, поддерживающий безглючно все и вся WASAPI exclusive получая, по сути, тоже самое, что и в других случаях.
Т.е. гипотетически я бы использовал в первую очередь ASIO. Если не работает, то KS. Если не работает, то WASAPI exclusive. Но по звуку они все дают великолепный звук и нет никакой причины зацикливаться на одно варианте — будет звучание одинаково. Просто выбирайте то, что вам удобнее использовать. И, да, больше нет никакого ужасного, не аудиофильного DSound.
38 Комментарии
Есть еще OpenAL выход, для Foobar2000 есть плагин, там присутствует низкоуровневый доступ к ЗК. Не помню какой у меня билд W10 стоит, но как я не пытался там настроить качественный звук, ничего не получилось. W10 выдает безжизненный серый звук. И ни WASAPI EXCLUSIVE, ни другие выходы звука его спасти не могут. Такое чувство, что звук слегка посыпали грязью, а потом разрубили на кусочки! На Ubuntu всё звучит цельно и намного приятнее! Жизнь музыки бьёт ключом!)
@ Breeze:
Как можно сравнивать ностальгические впечатления полученные когда-то давно и сравнение 2х вещей вживую?
Вот включаю я Leo Rojas — El condor pasa (2012), на винде (wasapi excl.) стереопанорама есть, но вообще не впечатляет, на дудке отчетливо чувствуется песок и шероховатости, даже уши немного режет, нет четкого разделения инструментов. Перезагружаюсь в Ubuntu Studio, запускаю Audacious c выводом на ALSA — звук преображается — стереопанорама расширяется, дудки сочно поют, никакого песка и прочего, каждый инструмент отчетливо слышен, звук представляет собой единую живую картину!
Посмотрел, у меня 1803, сейчас обновлюсь до 1809 и опишу впечатления!
@ ItalyanecZ:
Как можно назвать звук серый и безжизненный — это же великое из искусств. Я вот например умею получать удовольствие от прослушивание музыки в формате mp3 с битрейтом 128кбс через DirectSound, жесть да))
А вот 64кбс уже действительно плачевно звучит:(
Музыку можно слушать на чем угодно, а звук, только на хорошей аппаратуре.
@ hifi-audio.ru:
Ну вообще говоря здесь — звук, подразумевается музыка. Или кто-то здесь слушает определенную частоту?
Я вообще разницу уловил между ASIO и WASAPI, DS, только на формате 192кHz/24, битрейт там набежал аж 6000кбс. Вот тогда да, разница колоссальная, можно слушать вечно, а если брать контент ниже, 1400-320кбс то разница между ASIO, WASAPI, DS вообще не слышу. Обвинять в плохом разрешении ЦАП, усилитель или акустику не получается, тогда бы я разницу между ASIO, WASAPI, DS и на 192кHz/24 не услышал.
@ Breeze: есть аудиофилы, а есть меломаны. Меломанам лишь бы музыку послушать и неважно как! А аудиофилам лишь бы она хорошо звучала! Я тоже слушаю сжатую музыку со смартфона на работе и получаю удовольствие! Но к домашней системе я уже совершенно другие требования предъявляю!
Поставил 1809 сборку. Звук на ней действительно стал лучше! Ушел раздражающий песок с шероховатостью на ВЧ. Уже не могу сказать, что звук серый и неживой. До линукса всё еще далеко, но уже не пропасть как раньше. Смазанность инструментов как была, так и осталась. На линуксе каждый инструмент имеет очень точный контур, на винде всё скруглили и упростили.
@ ItalyanecZ:
Глупость какая. Для меня как меломана очень важно чтоб музыка звучала качественно. Я толкового определение «аудиофил» вообще не нашел, кроме как это определение для людей любящий просто аппаратуру.
Вот под какое определение попадает человек: когда покупает разъемы «банана» за 2000-8000 руб за 1шт. Разве это не очередной переходный процесс, не лучше ли подключить кабель напрямую через зажим терминала, или сетевой кабель за 10т.р толщиной с ногу, который упрется в проволочку предохранителя. В этом случаи он меломан или аудиофил? Можно еще дорогущие кабеля в пример взять, где используют припой со свинцом, да даже если без свинца, все достоинства кабеля увязнут в его соединение, почему бы не взять и не приварить их газовой или дуговой сваркой.
@ Breeze:
https://ru.wikipedia.org/wiki/Аудиофил
— человек, имеющий повышенные требования к качеству воспроизведения звука.
А дальше всё от человека зависит. Особо упоротые скупают кабели за 1000$ изготовленные из особых аудиофильских материалов под полной луной руками девственниц, которые заряжают их музыкальной энергией! А кто-то другой понимает, что это развод на бабки)
а я на собственном опыте убедился в огромном значении кабеля в стереосистеме…когда не было возможности сравнивать был как фома неверующий..
если человек не верит в кабель..ну это его мнение…я вот не знаю что такое мп-3 плэйер и что значит слушать музыку с компа через цап…каждому свое..
@ Capitan Tenkesh:
Я разве сказал что кабель не влияет. Конечно кабель влияет. На компе такая же цифра что и дисках, на первой магнитная головка считывает на втором лазер. Вы только на винили и бабинах слушаете?
@ Breeze:
https://ru.wikipedia.org/wiki/Аудиофил
— человек, имеющий повышенные требования к качеству воспроизведения звука.
Ну я и говорю «аудиофил» любитель аппаратуры. Меломания — страсть к музыки, звучанию.
@ Breeze:
Нет. Меломан — любитель музыки вообще. Любитель аппаратуры — это скорее коллекционер. Вот у меня на работе коллега коллекционирует исключительно советскую технику. Бриги, амфитоны и т.д. Слушает музыку в основном с кассет, иногда с катушек или винила. Учитывая ужасное качество звука с кассет, аудиофилом его назвать язык не повернется, если только советским)
@ hifi-audio.ru:
в статье написано, что ASIO4ALL работает через wasapi, а разве не через Kernel Streaming?
все работает через кернел стриминг (кроме азио), ибо КС часть васапи.
Читал когда описание, вычитал, что азиофорол через васапи работает.
В хр вообще не знаю через что, наверное совсем тухло.
В тексте есть ссылка на английском — там все подробнее можно почитать.
@ ItalyanecZ:
Это уже не коллекционер, это уже расстро
@ Breeze:
Любитель аппаратуры – это скорее коллекционер. Вот у меня на работе коллега коллекционирует исключительно советскую технику. Бриги, амфитоны и т.д. Слушает музыку в основном с кассет, иногда с катушек или винила. Учитывая ужасное качество звука с кассет,
Это уже не коллекционер, это уже расстройство какое-то. Одно дело коллекционировать аппаратуру для лицезрения, я в этом ничего плохого не вижу, самому нравится когда что-то крутится, винил, бобины, кассеты. Но если при этом давится отвратным качеством — это какой-то культ уже. Есть например секта чипов САБРЫ,АК,Мультибит. Они возводят их в культ и уже неизлечимо, я от таких даже советов слушать не хочу или впечатлений от данного цапа например.
@ hifi-audio.ru:
Да я вас и не считаю сектантом. Гуру секты определенных чипов поживают на Вегалабе и DiyAudio. После серьезных технически наводящих вопросов прекращают с тобой общаться или грозятся написать жалобу на блокировку. Хотя вопросы были не сложные. Например одному задал вопрос, конструктору: зачем вы используете в ЦАП два-три мощных 30Вт тороидальных трансформатора, если цифровой сигнал имеет импульсную природу передачи информации, можно использовать и импульсный блок питания, он же и для аналоговой части подойдет, можно и Ш-образной для аналоговой обвязки, лучше чем тороид, это же не мощник. В ответ никакой конкретики, только секта. Про чипы спрашивал, так это вообще дремучий лес, каждый возводит в культ только свой определенный чип, другие не признает. В итоги я ни с чем не определился и купил на АК, дешевле просто вышел.
Да тоже считаю, что торы не панацея, а порой и наоборот. Хоть тор эффективнее, не помню на сколько процентов, что-то вроде 10-20 кажется, но тор может гудеть, чтобы Ш гудели, я и невидел. Если только очень старые в ламповых самопальных усилках. Есть один такой, остался с времен, когда я себе ламповый усилок паял на 6н3п+6н14п.
Фон не победил, плюнул. Конечно причина была в неправильном разведении земли думаю. Но тогда, собрал все верно, музыку играет, и неплохо, но фонит собака такая. +еще сам транс гудел громко.
Пригонка деталей Тора ответственное дело. Он более компактный, я не вижу радикальных преимуществ Тора над ш образным, если в габаритах стеснения нет.
Мой опыт в усилителях заключается что чем больше запас по питанию или мощности, тем для баса лучше. Запас должен быть минимум трёхкратным.
тор лучше одназначно… есть допустим усилители марантц обычный и доработанный кеном ишиватой…разница в цене в 2 раза…с табличкой от кена. там и тор элементы получше и шасси омедненое.
А если окажется, что оригинальный дартзил такой же или хуже?
Я на ряд хайенда смотрю скептически — многие из этих аппаратов — разрекламированное хенд мейд с кучей вопросов ко всему. Начиная с дартзил.
Там еще играет фактор цены — втюхали тебе что то не очень за десятки тысяч долларов и либо ты признаешься, что ты либо идиот, либо лох. Не каждый пройдет объективно такое испытание.
Также цап онгаку вроде, стоит дофига, фнутри тда-шка копеешная и понты с соплями до колен.
Вот есть известные фирмы, с инженерной базой, производством, и у них есть верхние аппараты, порой очень не копеечные — но это как раз не надурилово.
Онкио, ямаха и тд.
А покупать какую-то муру гаражной сборки с легнндой про хайенд — это для избранных, нео.
не стоит так сильно углублятся..дорогие компоненты требуют такого же окружения и не все золото что блестит..есть у меня знакомый купил дорогие наутилусы 8 серии к ним шикарный ресивер 7,1 за 100 евро…ну и солидный источник айфон 8 пожалуй круче уже и не найти и кабеля солидные с радиорынка за 20 рублей 10 м хотел клоцы вначале, да подумал с такой системой и клоцы ни к чему..вот зовет в гости послушать «роскошную систему» я говорю, спасибо да я уже вроде догадываюсь как это звучит, не хочу растраиватся от» восторга».
привезли вот усилитель за недорого пионер а 400 пойду куплю и буду слушать, слишком много писали о нем, интересно самому убедиться.
@ hifi-audio.ru:
Ну это уже второе. Если клон играет лучше, так это же хорошо, но тут нужны пруфы. Dartzeel NHB-108 явно не стоит 3 миллиона, нет там ничего особенного, обычные схема, те же комплементарные пары, единственное что радует, это отсутствие эмиттерных резисторов которые неизбежно портят звук, как-то добились термостабилизации без них.
Нашел небольшой твик по улучшению звучания на ALSA. Там по умолчанию задействован самый быстрый алгоритм ресемплинга, что на звуке не очень хорошо сказывается. Поменял в конфиге alsa алгоритм ресемлинга с «samplerate» на «lavcrate_higher», определенно лучше стало! Только пакет с lavcrate-библиотеками нужно предварительно установить (alsa-plugins-extra на убунте). Улучшилась детализация, ВЧ стали более отчерченными и утонченными. По отзывам аудиофилов-линусоидов именно с такой настройкой звук ALSA доходит до уровня OSS. А вот реликт OSS4 так и не удалось послушать. Из самых популярных линуксовых дистрибутивов его давно выпилили, а в OpenBSD нет драйверов под мою звуковуху.
Я не использую ресемплеры в альсе. Без них ничего не надо.
Я выбираю устройство без софтверных дополнений.
А вы просто ресемплер включили.
Можно даже через пульс напрямую гнать — выбрать значение copy, или указать ресемплер. На сайте было многое в обзорах расписано.