Разделы сайта

О сайте

Данный сайт целиком и полностью посвящен электронной музыке, созданию музыки на компьютере. Если раньше, для того, чтобы исполнить написанную композитором мелодию требовался оркестровый ансамбль, то теперь его с успехом заменяет программный семплер или секвенсор. Теперь каждый композитор может создавать и "исполнять" свою музыку на компьютере. Причем звучание искусственных (VST или DX) инструментов порой даже превосходит звучание живых прототипов. Появились даже новые, не существовавшие ранее чисто электронные звуки, которые можно получить только на электронном синтезаторе. Настала эра электронной музыки!

CJ Форум

Последние записи

Музыкальные проекты

Что такое ASIO

Технология ASIO (Audio Stream Input Output) была создана для улучшения работы многоканальных устройств и снижения времени ожидания (latency).

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

Технология ASIO (Audio Stream Input Output) была создана для улучшения работы многоканальных устройств и снижения времени ожидания (latency).
Постепенно прогресс оснастил наши домашние компьютеры устройствами записи и воспроизведения звука достаточно высокого уровня, настолько высокого, что термин "домашняя студия звукозаписи" прочно вошел в нашу жизнь. Прогресс коснулся, естественно, не только аппаратуры, но затронул и сами принципы работы со звуком. Это хорошо видно на примере эволюции как звукового оборудования и интерфейсов для работы с аудио, так и самих операционных систем, на которых все это работает. Давайте для начала обратимся к истории и проследим развитие звука на ПК.

Эволюция звуковых карт

Первым в истории ПК (здесь и далее подразумевается спецификация IBM PC-совместимый компьютер) устройством воспроизведения звука являлся небезызвестный PC Speaker. За неимением лучшего программисты того времени ухитрились выжать из него максимум возможностей. Услышанные мною в начале 90х на этом самом спикере первые трекерные модули буквально поражали воображение. Это просто разительно отличалось от примитивного попискивания. Однако само звучание, кончено же, оставляло желать лучшего. Практически в это же время радиолюбители собственноручно собирали простейшие цифроаналоговые преобразователи (ЦАП), которые подключались к параллельному порту компьютера. Такие устройства имели общее название Covox. Качество воспроизведения на них модулей (а больше сравнивать тогда было не с чем) значительно превосходило убогий спикер. К тому же появилась возможность использовать любую акустику, которая была доступна. Однако ни то, ни другое устройство назвать звуковой картой было нельзя. Первой же в истории ПК полноценной звуковой картой принято считать Creative Music System (C/MS), выпущенной в 1987 году. Это была плата для разъема ISA. На борту были ЦАП/АЦП и один из первых FM-синтезаторов с 12-голосной полифонией. К сожалению, высокая цена не позволила этому устройству стать популярным – для своего времени оно было слишком инновационным. В то же самое время фирма Adlib выпускает одноименную, простую и доступную карту, построенную на чипе OPL2 (YM3812) от Yamaha. Эта карта не имела ЦАП/АЦП и являлось исключительно FM-синтезатором. Однако ее невысокая цена сделала ее весьма распространенной среди любителей игр. Сориентировавшись, фирма Creative отказывается от поддержки C/MS и выпускает на том же самом OPL2 звуковую карту, которую называет SoundBlaster. Однако, в отличие от Adlib, SoundBlaster уже содержит одноканальные 8 битовые ЦАП и АЦП. Чуть позже выходит слегка модифицированная версия SoundBlaster – SoundBlaster Pro, все еще 8 битовая, но уже поддерживающая режим стерео и частоту дискретизации 22050 Гц, которую в дальнейшем в продукте SoundBlaster 16, Creative повышает до 44100. Именная такая комплектность и функциональность звуковых карт находит широкое распространение на довольно продолжительный срок. Стандартом звуковых карт становится устройство, оснащенное ЦАП/АЦП (1 линейный вход, 1 микрофонный вход, 1 линейный выход, 1 выход на наушники), MIDI-синтезатор (MIDI/Game port) и встроенный аналоговый микшер. Позже, в конце 90х звуковые карты начали оснащаться процессором эффектов. Этот процессор мог реализовать такие эффекты, как: студийные (chorus, delay, reverb и т.д.) и игровые (имитация пространства, имитация объемного звучания) [подробнее об этих и других эффектах в продолжении серии статей]. Современное поколение звуковых карт настолько пёстро и разнообразно, что даже диву даешься. Если раньше звуковую карту всегда приходилось брать отдельно, то сейчас вы можете получить ее "бесплатно" в наборе, т.н. интегрированное аудио. Конечно, качество преобразователей в таких устройствах далеко от совершенства, хотя сам цифровой тракт может быть на весьма высоком уровне, но это вызвано требованием удешевить стоимость такого решения. Интерфейсы USB и FireWire подарили нам такое понятие, как внешнее аудиоустройство. Сфера применения звуковых карт существенно расширилась: для простого озвучивания ПК, для игр, для звукозаписи и т.д. Диапазон цен также значительно расширился от 1-2$ до нескольких тысяч. Соответственно изменился и способ работы с ними. И мы плавно подходим к следующему разделу:

Эволюция аудиоинтерфейсов

Итак, снова коснемся истории. Одной из первых широко распространенных операционных систем для ПК была знаменитая ОС MS-DOS (здесь и далее мы будем рассматривать только ОС Microsoft, как наиболее распространенные на ПК). В ней не было совершенно никаких средств для работы с аудио. Программисты могли полагаться только на себя самих. К тому же наличие большого количества несовместимых между собою звуковых карт еще больше усложняло их работу. Доходило до того, что некоторые программы работали только со строго определенной картой. Ситуация значительно улучшилась с появлением Windows, драйверов устройств и первого аудиоинтерфейса для ПК – Microsoft Multimedia Extention (MME). Драйверы устройств позволили программистам абстрагироваться от оборудования и сконцентрироваться на алгоритмах, а MME предоставил удобные функции для управления аудиоустройствами. Производительность ПК того времени не позволяла надеяться ни на серьезную работу со звуком ни на серьезные игровые приложения. Эти факторы и сказались на функциональности интерфейса, первоочередная задача которого свелась только к воспроизведению и записи одного источника звука. Т.е. изначально не была заложена многоканальность, микширование и многие другие, столь необходимые сегодня функции. С появлением Windows 95 свет увидел знаменитый DirectX, в состав которого вошел интерфейс DirectSound. По сравнению с Microsoft Multimedia Extention – это была революция. Функциональность была значительно расширена такими вещами как: разрядность аудиопотока до 24 бит, частоты дискретизации до 192 Кгц, микширование нескольких аудиопотоков, управление высотой и громкостью отдельных аудио каналов, появилась поддержка объемного звучания, значительно снижена задержка при воспроизведении. И самое главное – появилась возможность аппаратно выполнять некоторые функции обработки (в частности – микширование аудиопотоков). Мало того, если какая то из функций не поддерживается аппаратно, DirectSound берет на себя ее выполнение, при этом, правда, задействуется уже центральный процессор. Однако "игровая" направленность этого интерфейса тоже дает о себе знать. За 10 лет было выпущено 9 версий DirectSound, каждый раз он дополнялся новыми функциями, но все они больше применимы к игровым приложениям.

Небольшое лирическое отступление:

Почему именно к игровым? Давайте разбираться. Возьмем, к примеру, такую функцию как микширование аудиопотоков (эта функция, согласно спецификации DirectSound, должна выполнятся аппаратно). Прикиньте, сколько у вас потоков при работе в FruityLoops Studio? Прикинули? Не знаю, сколько у Вас получилось, но правильный ответ: 1 стереопоток. Ведь на звуковую карту у Вас попадает уже смикшированные и сэмплы и синтезированный звук. Почему так? Да потому, что перед окончательным сведением все генерируемые звуки проходят еще через микшер, в котором дополнительно обрабатываются назначенными эффектами. Хорошо, но ведь можно же аппаратно смикшировать уже обработанные каналы? Опять нет, - хост использует для этих целей еще и алгоритмы интерполяции и дизиринга для улучшения финального результата. И алгоритмы эти довольно сложные, а часто еще и патентованные! Разве можно такую функцию доверять звуковой карте?
Зачем же тогда нужно аппаратное микширование? Ответ прост – для игр. Ведь в играх у нас одновременно звучит множество источников: диалоги героев, выстрелы, взрывы и т.д. Зачем нагружать процессор, когда эту функцию можно доверить звуковой карте. Да и кто будет вникать в нюансы звучания выстрелов базуки в том же Doom 3?
Так, а что же собой представляет аппаратное микширование? В двух словах, и без технических подробностей, выглядит это следующим образом: программа загружает в память несколько звуковых файлов, затем в нужный момент подается команда на воспроизведение, драйвер передает команду звуковой карте и та, без участия процессора, подмешивает требуемый звук к общему потоку (естественно, используя собственные алгоритмы). В технических характеристиках карты часто говорится о 32 и 64 аппаратно ускоряемых потоках. Эта цифра означает, сколько же звуков может смешать карта одновременно. Аналог полифонии в MIDI.
И тут на арене появляется ASIO (Audio Streaming Input/Output – Потоковый Ввод/Вывод Аудио), ради которого и затевалась эта статья. Справедливости ради стоит сказать, что появился он достаточно давно, но отсутствие поддержки разработчиками звуковых карт для ПК долго продержало его в тени. Что же в нем такого, что заставляет некоторых "посвященных" с благоговением вздыхать, произнося его название?
Это изобретение компании Steinberg, представляет собой протокол цифрового аудио с очень маленькой задержкой. Благодаря ASIO, можно использовать виртуальные инструменты и эффекты такие, как reverb, delay, flanger, distortion в режиме реального времени. Не требуется покупка их "железных" аналогов и вам открываются практически неограниченные возможности. Сейчас в продаже доступны очень качественные виртуальные vst инструменты, такие как фортепиано, гитара, ударные. Работа с ними возможна именно благодаря ASIO драйверу. Ко всему прочему Nuendo оптимизирована для работы с аудио, так что запись превратится в сплошное удовольствие.
Начнем с того, что разрабатывался он специально для профессиональной работы с аудио. Т.е. его основные потребители – музыканты, звукоинженеры и т.д. Давайте посмотрим, что же говорит о своем детище сам разработчик – фирма Steinberg:
Платформе ПК действительно не хватало относительно простого пути доступа к аудио входам и выходам. В современных операционных системах присутствуют способы работы только со стерео сигналом и отсутствуют возможности расширения этих способов без преодоления серьезных проблем, например, таких как проблемы синхронизации между различными каналами.
Разработкой интерфейса ASIO фирма Steinberg желает помочь производителям аппаратного и программного обеспечения создавать оборудование и драйверы, которые расширят аудио возможности персональных компьютеров и оправдают ожидания пользователей (музыкантов и звукоинженеров).
ASIO обеспечивает такие аспекты эффективной аудио обработки как: высокая пропускная способность, синхронизация, малая задержка (latency), и аппаратная расширяемость. Интерфейс не ограничен фиксированным количеством входных и выходных каналов (хотя конечно это количество ограниченно производительностью самого ПК). Нет ограничения также: на частоту дискретизации (32 Кгц – 96 Кгц или даже больше), на формат выборки (sample format) (16, 24, 32 бита или 32/64 битные форматы с плавающей точкой).
Аудио подсистема (звуковое оборудование) управляется программным модулем, называемым "аудио драйвер". ASIO требует, чтобы производитель оборудования предоставлял такой драйвер, который бы абстрагировал ПО от железа, и которым ASIO смог бы управлять.
Для эффективной обработки и большой гибкости ASIO представляет каналы (и входные и выходные) как кольцевые буферы с блоками данных. Фактически используется механизм двойного буфера, который может быть легко адаптирован к большому количеству различных представлений. Один буфер всегда содержит данные только для одного канала. Такой подход позволяет программному обеспечению очень эффективно выполнять обработку (в отличие от модели обработки чередующихся буферов). Размер блока данных устанавливается драйвером для лучшей поддержки аппаратуры. Драйвер выделяет память для текущих аудио блоков. Это позволяет производителям оборудования подбирать лучший способ доступа к их решениям. Это один из ключевых моментов в достижении минимальной задержки при обработке сигнала.
Хочу прокомментировать несколько моментов из этого манускрипта. Дело в том, что ключевым подходом в ASIO является представление звука отдельными каналами. Вы спросите и что же здесь такого? И я Вам отвечу. Со времен Microsoft Multimedia, звук, моно он был или стерео, представлялся одним потоком (т.н. чередующаяся буферизация). Никто тогда особо и не представлял, что могут появиться стандарты 2.1, 5.1, 6.1, 7.1 и т.д. Почему Microsoft поступили именно так, история умалчивает. Вообще такой подход очень характерен для ПК - еще Intel при переходе от 8 к 16 битовым процессорам применил подход чередования байтов в словах (сначала шел младший байт, потом старший – программисты должны были быть крайне внимательны, чтобы не перепутать). Это же самое чередование сохранилось и в DirectSound. Основной минус чередующейся буферизации проявляется именно при обработке аудио. Дело в том, что для того, чтобы выполнить операции над звуком в DirectSound сначала нужно выделить из общего потока левый и правый каналы (четные и нечетные по порядку значения), затем сохранить каждый из них во временной памяти, произвести требуемые операции над каждым из них, снова "упаковать" в чередующемся формате и передать функции воспроизведения. С увеличением количества аудиоканалов увеличивается и количество "лишних" действий. Пусть размер буфера не так уж и велик, но количество операций неоправданно завышено, а ведь производительность ПК может пригодиться и для более полезной деятельности, например, для добавления в проект еще одного синтезатора! Этого-то недостатка и лишен ASIO: получили данные левого, правого канала по отдельным потокам, обработали, записали результат в те же потоки и все. Оговорюсь, что все вышесказанное справедливо для работы VST/ASIO хостов. В играх это не столь критично. Но для того, чтобы все работало именно так, как нам надо, необходимо оборудование, которое будет поддерживать такую схему работы и иметь рабочий ASIO-драйвер. Такие "заплатки" как ASIO4ALL, ASIO MULTIMEDIA и т.д., не помогут, т.к. они не обеспечивают аппаратную поддержку со стороны звуковой карты. Они просто добавляют в систему еще одно виртуальное аудиоустройство, имеющее ASIO-драйвер, но фактически работающее через DirectSound или MME. Обратите внимание, что в спецификации нет ни единого слова об аппаратном ускорении каких либо функций. Малая латентность заложена в саму архитектуру ASIO.

Настройка ASIO

Как бы смешно это не звучало, но вся настройка интерфейса ASIO сводится к указанию драйверу размера аудио буфера. Эта величина указывается в миллисекундах, соответственно его фактический размер рассчитывается так: размер в миллисекундах * количество каналов (1 - моно, 2 - стерео и т.д.) * разрядность потока (8бит - 1, 16 бит - 2, 24 бита - 3 и т.д.). Рассчитывать это значение никому не нужно. Вы просто задаете тот размер, при котором латентность минимальна, а звук не "хрустит". Определяется опытным путем и зависит от производительности всей системы в целом. Конечно, есть еще и более глубокие настройки вроде роутинга, но сейчас мы их касаться не будем. Это тема следующих статей, которые, я надеюсь, не за горами.

Выводы

Как я уже ранее говорил под виндовс все программы, которые пытаются одновременно принять звук скажем с линейного входа, обработать его и выдать обратно в звуковой тракт, работают с задержками. ASIO - стандарт интерфейса звуковых плат, разработанный фирмой Steinberg. Основное преимущество ASIO - достаточно малая задержка при обработке сигнала, что позволяет обрабтывать звук в реальном времени. Таким образом, после установки драйверов kX, дешевая звуковая карта класса SB Live, будет обладать возможностями достаточно дорогих плат. Используется в основном для написания музыкальных партий на различных инструментах с различными эффектами. Но просто послушать можно через него. Если у звуковой платы нет собственного ASIO-драйвера, то настраивать ничего не нужно: при первом запуске программы будет автоматически сконфигурирован стандартный ASIO Multimedia драйвер Cubase. Однако в этом случае очень сложно работать с виртуальными синтезаторами, так как время реакции на твои действия будет составлять порядка 700 миллисекунд. Рисовать мышью партии инструментов при этом еще можно, а вот играть в реальном времени на MIDI-клавиатуре не получится – звук синтезаторов в акустических системах будет появляться через 700 мс после нажатия клавиши. У автономных инструментов время реакции на действия составляет порядка 20 мс. Такой же результат можно легко получить в Cubase при наличии у звуковой платы ASIO-драйвера. ASIO-интерфейс придумал хорошими программистами для решения этой проблемы. После установки звуковой карты, которая поддерживает ASIO (на текущий момент это неофициально держит SB Live, Audigy и Audigy 2 - только в новых версиях драйверов) звуковая карта превражается в многоканальное устройство, способное сделать разницу во вводе и выводе звука до 2 ms. Естественно этой возможности можно добиться только исползуя программы, способные уметь работать с ASIO (Cubase например). Напомню примерную стоимость этих карт на рынке БУ. SB Live - 12-15 у.е. Audigy - 25 у.е. Audigy 2 - 45 у.е. К тому же вам придется найти плагины для CUBASE, которые бы подходили для вас, как для гитариста. Вроде казалось бы все хорошо - проблема с задержками решена, но тут есть нюанс. Большинство материнских плат имеет встроенную (и довольно хорошую) звуковую систему и как-то обидно тратить деньги еще на одну. Потом эта карта займет еще один слот (а у меня для ее установки придется что-то выдрать). И последнее, что злит и бесит. В системе Linux все используемые эффекты работали без задержек, а для проф. музыкантов есть еще и сервер JACK способный навернуть цепочки обработчиков. И он также работает без задержек. И все это на встроенной звуковой карте без всяких ASIO при загрузке процессора не более 14%. Как я понимаю ASIO это попытка обойти ограничения системы WINDOWS в уже готовой и устоявшейся системе драйверов. Вместо лечения этих проблем (скорее из-за нежелания майкрософта их лечить) программисты из того же Steinberg были вынуждены искать решение.