Tippach Michael

Универсальный ASIO-драйвер для звуковых WDM-устройств

Универсальный ASIO-драйвер для звуковых WDM-устройств

Руководство по использованию

Редакция от 11 марта 2009 г.

Введение

Спасибо за использование ASIO4ALL! Сведения в данном руководстве помогут правильно установить и настроить этот драйвер.

Чтобы добиться наилучших результатов, удостоверьтесь в том, что:

• …выбрана схема управления питанием с наименьшей вероятностью переключения P-состояния процессора. В случае с Windows XP это схема «Включен постоянно», в случае с Windows Vista — «Высокая производительность». При наличии соответствующих навыков можно изменить нужную схему таким образом, чтобы тактовая частота процессора не менялась (это единственный критично важный параметр).

• …системные звуки отключены. Звуки редких событий (вроде запуска и завершения работы) не являются проблемой, но более частые и менее предсказуемые могут блокировать процесс инициализации звукового устройства для ASIO4ALL.

Найти обновления, получить дополнительные справочные сведения и поддержку можно по этим адресам:

www.asio4all.com — сайт ASIO4ALL

mtippach.proboards40.com — форум поддержки

http://www.asio4all.com/ — сайт ASIO4ALL

http://mtippach.proboards40.com/ — форум поддержки

Приступая к работе

Настройка звукового ПО

Чтобы использовать соответствующие звуковые приложения с драйвером ASIO4ALL, их нужно настроить. В каждом конкретном случае эти настройки индивидуальны, но общим для всех является необходимость выбрать «ASIO4ALL v2» в качестве устройства ввода и/или вывода.

В одном окне с меню, где выбирается устройство, должна быть кнопка вызова панели управления драйвером. Нажав эту кнопку, можно вызвать окно настроек ASIO4ALL. Узнать о том, как выбирается устройство и вызывается окно его настроек в конкретном приложении, можно в руководстве к этому приложению.

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

Значок появляется, когда приложение инициализирует драйвер ASIO4ALL. Если значка нет, то приложение не использует этот драйвер в данный момент. Уведомления можно отключить, просто открыв дополнительные параметры в панели управления ASIO4ALL.

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

Изменения в настройках иногда могут вступать в силу лишь после перезапуска приложения.

Основные параметры конфигурации

Рис. 1: Панель управления ASIO4ALL в упрощённом режиме

1. Список звуковых WDM-устройств, найденных в вашей системе.

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

Устройства активируются кнопкой-индикатором слева от названия. На рис. 1 активным является «SoundMAX Integrated Digital HD Audio». Возможна одновременная активность любого числа устройств.

Рядом с индикатором активности есть индикатор, сообщающий состояние устройства:

Готово к работе — Устройство успешно запущено.

Бездействует — Устройство, должно быть, доступно, но в данный момент не запущено и не используется.

Недоступно — Устройство используется другим приложением или стандартным синтезатором Windows («Программный синтезатор звуковой»). Использовать стандартный синтезатор крайне не рекомендуется.

Не контролируется — Устройство по неизвестной причине отказывается от запуска или ведёт себя странно. Иногда проблема исчезает после повторного открытия панели управления или переподключения USB-устройств. Кроме того, в некоторых случаях такое состояние равноценно «Недоступности», что говорит о некорректном предоставлении данных о состоянии от устройства.

Если список пуст, то в вашей системе нет звуковых WDM-устройств или для таких устройств не установлены драйверы, которые можно получить на сайте производителя.

2. Размер буфера ASIO.

Этот ползунок управляет размером ASIO-буфера выбранного устройства. Чем меньше размер буфера, тем меньше задержка. Если в звуке возникают щелчки, то необходимо увеличить размер.

3. Кнопка загрузки настроек по умолчанию.

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

4. Кнопка отображения дополнительных параметров.

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

Дополнительные параметры рассматриваются в следующей главе.

Дополнительные параметры конфигурации

Рис. 2: Панель управления ASIO4ALL в расширенном режиме

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

Список содержит устройства, интерфейсы устройств и т. н. «выводы» (в терминологии Микрософт®).

Как и с целыми устройствами в упрощённом режиме, здесь можно включать/выключать уже отдельные элементы устройств и настраивать устройства на совместное использование.

При совместном использовании устройства работают по одному тактовому источнику. Этого можно достичь, например, последовательным соединением по интерфейсу S/PDIF. К счастью, USB-устройства, работающие от хост-контроллеров с одним тактовым источником, уже синхронизированы. Если вы не пользуетесь дополнительными USB-контроллерами, то все устройства работают от одного тактового генератора, расположенного на материнской плате.

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

Справа расположены дополнительные элементы управления 5–9.

5. Компенсация задержки

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

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

При совместной работе нескольких устройств выбирается наибольшее значение. Если разные устройства имеют различные собственные задержки, то в результате возможна асинхронность.

6. Включение/отключение аппаратного буфера

В случае с драйверами WaveRT (Windows Vista) этот флажок подписан как «Режим извлечения (WaveRT)».

Доступ к аппаратному буферу обычно встречается только в драйверах типа «WavePCI». Другие типы WDM-драйверов, как правило, не дают прямого доступа к аппаратному буферу. Самое большое преимущество при использовании аппаратной буферизации в том, что основные вычислительные ресурсы системы расходуются значительно меньше.

Основные параметры, влияющие на производительность аппаратного буфера, — «Размер буфера ASIO» и «Смещение в буфере» (п. 7). Аппаратная буферизация лучше работает с мелким буфером ASIO, нежели с крупным. Для начала попробуйте установить размер буфера на 128 или 256 сэмплов.

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

«Режим извлечения (WaveRT)»

Есть два основных метода доступа к устройствам WaveRT. «Режим извлечения» (pull-mode, «режим событий») и «режим помещения» (push-mode, «режим опроса»). Последний поддерживается всеми драйверами WaveRT и всеми версиями платформы. В отличие от него режим извлечения был довольно поздно документирован Микрософтом и потому работает далеко не везде.

Если флажок не поставлен, то ASIO4ALL никогда не будет использовать этот режим. Иначе будет использовать его по возможности. Режим извлечения лучше синхронизирован и считается технически более совершенным, чем режим помещения.

Драйвер ASIO4ALL версии 2.8 работал так, как если бы флажок был установлен. Если при работе с установленным флажком проблем не возникает, то следует оставить этот режим для большей производительности.

7. Число буферов ядра / смещение в буфере

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

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

Если же аппаратная буферизация используется, то параметр отвечает за величину зазора в миллисекундах между позицией, где ASIO4ALL будет записывать данные (и где будет происходить их чтение), и позицией, которую ASIO4ALL считает текущей позицией чтения или записи. Это звучит сложно до тех пор, пока вы не видите код, который всё это рассчитывает:)

Общее правило звучит так: с более высокими значениями увеличивается и стабильность, и задержка, с более низкими эффект обратный.

В звуковых картах, построенных на базе Envy24, может быть параметр «DMA Buffer Transfer Latency» (задержка при передаче данных в буфер с прямым доступом к памяти) или что-то в этом роде. Этот параметр следует ставить на минимальное значение.

8. Преобразование между 44.1 и 48 Кгц

ASIO4ALL может в реальном времени преобразовывать частоту дискретизации от 44.1 КГц в 48

КГц и обратно. Преобразование происходит автоматически в случаях, когда ASIO4ALL открывается в режиме 44.1 КГц, а WDM-драйвер не поддерживает эту частоту.

В некоторых случаях драйверы стандарта AC97 могут поддерживать частоту 44.1 КГц, преобразовывая её самостоятельно. Однако преобразование выполняется с довольно сомнительным качеством и проблемами со стабильностью. Чтобы избавиться от этого, включите данный параметр. Как минимум с одной из версий WDM-драйвера SoundMAX (smwdm.sys) этот параметр обязательно должен быть включён, чтобы частота 44.1 КГц вообще поддерживалась.

9. Принуждение к работе WDM-драйвера в 16-разрядном режиме

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

Примером такого драйвера является SigmaTel AC97.

Правила оптимизации в общих случаях

Игра вживую на программных синтезаторах.

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

Компьютер в роли эффект-процессора.

В этом случае звуковые входы нужны. Но, как всегда, неиспользуемые каналы следует отключить.

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

Компьютер как обычный секвенсор.

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

Когда задержка вовсе не играет роли.

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

Использование «ReWuschel»

Если при установке вы отметили одноимённый пункт, то входы, предоставляемые ASIO4ALL, будут доступны в ReWire-приложениях. Смысл в этом есть, когда программа поддерживает только ASIO-выходы, но при этом имеет полноценную поддержку ReWire — например, Reason.

Чтобы подавать звук в Reason в реальном времени, ASIO4ALL должен быть установлен в качестве текущего драйвера. После этого вызовите в меню: Create → ReBirth Input Machine. Теперь входы ASIO4ALL подключены к выходам устройства «ReBirth Input Machine».

Учитывайте, что с установленным компонентом ReWuschel вы не сможете пользоваться ReBirth в Reason. Чтобы это стало возможно, необходимо будет переустановить ASIO4ALL без ReWuschel.

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

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

Наиболее распространённые проблемы и их решения:

ASIO4ALL отсутствует в списке драйверов.

Есть две возможные причины. Первая состоит в том, что программа не поддерживает ASIO.

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

После установки ASIO4ALL уже не требует прав администратора для работы.

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

Стоит отдельно удостовериться в том, что устройство не занято чем-то вроде «Программного синтезатора звукового» в вашей MIDI-конфигурации. Если есть основания полагать, что такой программный синтезатор является причиной проблемы, то попробуйте перезапустить приложение, предварительно перенастроив его.

Некоторые драйверы не успевают вовремя освободить устройство при переключении с них на ASIO4ALL.

Если устройство поддерживает «горячее отключение» (USB / FireWire / PCMCIA), то закройте панель управления ASIO4ALL, отключите устройство, подключите его вновь и откройте панель управления.

Звук в другом приложении пропадает при активности ASIO4ALL.

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

Измерители свидетельствуют о наличии звука и всё вроде проигрывается, но фактически звука нет (характерно для Windows Vista)

В драйверах устройств наподобие «High Definition Audio» SPDIF-выходы нередко поставлены перед аналоговыми выходами. Как следствие, первые два (или более) ASIO-канала выведены на SPDIF-интерфейс. Можно переназначить каналы в приложении. Если интерфейс SPDIF не нужен вообще, то можно попробовать отключить его.

Изменения, сделанные в панели управления из одного приложения, не распространяются на другие приложения

… и между разными пользователями то же самое. Так и должно быть. ASIO4ALL хранит настройки отдельно для каждой программы и для каждого пользователя. Это позволяет работать одновременно нескольким экземплярам ASIO4ALL, если они не назначены на одно и то же устройство. Кроме того, это предохраняет пользователей от изменения настроек друг друга, что особенно важно там, где одним компьютером пользуются несколько человек под разными учётными записями.

Величина задержки, отображаемая, например, в Cubase SX3, не соответствуют размеру буфера, заданному в панели управления ASIO4ALL.

ASIO4ALL поддерживает компенсацию задержки, если это реализовано в хост-программе. Эта возможность ещё дорабатывается и, время от времени, в неё будут вноситься исправления.

Значения, сообщаемые программе, это не только та задержка, которую вносит ASIO4ALL, а общая задержка по всей системе. Поэтому то, что отображается в программе, и то, что отображается как размер ASIO-буфера — просто не одно и то же.

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

© 2004–2009, Michael Tippach.

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

Пер. с англ.: Петров Егор (entrase@ya.ru), © 2009

Content

Tippach Michael Универсальный ASIO-драйвер для звуковых WDM-устройств

Универсальный ASIO-драйвер для звуковых WDM-устройств

Приступая к работе

Настройка звукового ПО

Основные параметры конфигурации

Дополнительные параметры конфигурации

Правила оптимизации в общих случаях

Использование «ReWuschel»

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