Что такое 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.
Это изобретение компании 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 представляет каналы (и входные и выходные) как кольцевые буферы с блоками данных. Фактически используется механизм двойного буфера, который может быть легко адаптирован к большому количеству различных представлений. Один буфер всегда содержит данные только для одного канала. Такой подход позволяет программному обеспечению очень эффективно выполнять обработку (в отличие от модели обработки чередующихся буферов). Размер блока данных устанавливается драйвером для лучшей поддержки аппаратуры. Драйвер выделяет память для текущих аудио блоков. Это позволяет производителям оборудования подбирать лучший способ доступа к их решениям. Это один из ключевых моментов в достижении минимальной задержки при обработке сигнала.