oldi

Виртуальный звуковой кабель VAC

 

Идея

Назначение программы

Устройство и работа программы

Добывание, установка и удаление

Пример использования

Планы на будущее

Идея

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

  • Отсутствие универсальности. Несколько программ не могли быть соединены в цепочку, как это делается в студии или даже дома, в случае блочной аппаратуры (проигрыватель, предварительный усилитель, эквалайзер, усилитель мощности и т.п.). Таким образом, каждая программа представляла собой «моноблок» с определенным набором функций, расширить который было довольно сложно.
  • Потеря качества при работе в реальном времени. Запись результатов работы с выхода звукового адаптера при работе программы в реальном времени неминуемо влекла потерю качества исходного цифрового звука при преобразовании его в аналоговую форму. Чтобы сохранить качество сигнала неизменным, требовался адаптер с цифровым интерфейсом вместе с цифровым же магнитофоном (ценой порядка 1000 долл.).
  • Ограничение оперативности при работе в режиме записи. Некоторые программы позволяли записывать результаты в звуковой файл на диске, и тогда никаких потерь качества не происходило. Однако при этом терялась возможность оперативного управления параметрами звука, и прослушать созданный фрагмент можно было лишь после завершения его записи на диск.

Программа Virtual Audio Cable позволяет практически полностью решить все эти проблемы, организуя в системе компьютерный вариант обычного звукового соединительного кабеля, которым подключаются друг к другу блоки звуковой аппаратуры — бытовой или студийной. Можно сказать, она эмулирует набор звуковых адаптеров, у каждого из которых вход и выход намертво соединены изнутри.

В начало В начало

Назначение программы

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

Устройство и работа программы

Виртуальный звуковой кабель VAC представляет собой звуковой (Wave) драйвер Windows, создающий в системе два звуковых устройства (порта): Virtual Cable n In и Virtual Cable n Out, где n — номер кабеля начиная с 1. К каждому из портов может быть присоединено любое количество приложений (клиентов); эта возможность в зарубежных документах носит название multi-client feature. Звуковые сигналы, выводимые приложениями в порт Out, смешиваются в единый сигнал, который затем передается всем приложениям, извлекающим звук из порта In. От приложений требуется лишь умение работать со стандартными Wave-устройствами Windows — и ничего больше.

В Windows 9x/Me VAC создает для каждого кабеля порт вывода DirectSound, доступный через соответствующие интерфейсы и работающий параллельно с обычным выводным портом (Wave Out). Ввиду несовершенства реализации подсистемы DirectSound в Windows отсутствует возможность корректно предотвратить эмуляцию Wave-устройств подсистемой, в связи с чем в списке устройств DirectSound одновременно присутствуют и «родные» устройства VAC, и эмулируемые. Разумеется, при работе следует выбирать «родные» порты, имеющие суффикс (DirectSound).

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

Смешивание и передача звуковых данных выполняются внутри VAC строго равномерно, по событиям (прерываниям) от системного таймера, с тем чтобы каждое виртуальное устройство работало, как реальное, обеспечивая заданную скорость звукового потока. По каждому прерыванию передается блок определенного размера, зависящего от интервала между таймерными прерываниями (latency). Минимальный интервал — 1 миллисекунда — обеспечивает наиболее плавную передачу потока, однако на «слабых» компьютерах может привести к чрезмерным накладным расходам.

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

Точно так же у каждой программы обработки звука, взаимодействующей со звуковым адаптером, могут быть вход и выход. Путем выбора устройства записи (Wave In) вход программы соединяется с выходом АЦП нужного звукового адаптера, а путем выбора устройства воспроизведения (Wave Out) ее выход подключается ко входу ЦАП того же или другого адаптера. Здесь налицо определенная путаница в терминах, поскольку в Windows мультимедийные устройства классифицируются не по входам-выходам, а по портам ввода-вывода. Понятно, что порт ввода (In) — это на самом деле выход устройства, обращенный внутрь системы, а порт вывода (Out) — такой же обращенный внутрь системы вход. Звук, поданный, например, на внешний линейный вход адаптера (Line In), преобразуется АЦП в цифровую форму и передается адаптером во внутренний порт ввода, а цифровой звук, переданный программой во внутренний порт вывода, преобразуется в аналоговую форму в ЦАП, после чего выводится на внешний выход (Line Out или Speaker Out).

Поскольку VAC является цифровым кабелем, он передает на свой выход звуковые данные именно в том формате (сочетании частоты дискретизации, разрядности отсчета и количества каналов), в каком они получены от источника звука. Это означает, что пока один конец кабеля (порт In или Out) открыт в каком-либо формате, другой может быть открыт только в точно таком же формате. Преобразования форматов при передаче VAC не выполняет.

Для того чтобы можно было подключать к кабелю не только программы, но и сами звуковые адаптеры, в комплект VAC входит программа Audio Repeater (звуковой повторитель). Она делает то же, что и драйвер VAC, но наоборот — передает звуковой поток от одного устройства Wave In к другому устройству Wave Out. Повторитель полезен для контроля сигнала, передаваемого по кабелю, или для

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

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

Когда один из концов кабеля свободен (не имеет присоединенной программы), он ведет себя как обычный провод. Звук, выводимый в порт Out, теряется, а из порта In вводится абсолютная тишина.

В начало В начало

Добывание, установка и удаление

В настоящее время распространением VAC занимается компания NTONYX (http://www.ntonyx.com/). Демонстрационные версии доступны на страницах http://www.ntonyx.com/vac.html (VAC 2.05) и http://www.ntonyx.com/vac111.html (VAC 1.11). Версия 2.05 — современная, с поддержкой DirectSound, улучшенными алгоритмами реального времени, в вариантах для Windows 95/98/Me и NT 4/2000. Версия 1.11 — устаревшая, только для Windows 3.x/95, без поддержки DirectSound.

Последующие версии VAC будет распространять другая компания, о чем я сообщу после достижения договоренности с нею на сайте моих программ (http://www.spider.nrcde.ru/music/software.html).

Демонстрационные версии предоставляют все возможности VAC, ограничение касается только количества независимых кабелей (один) и интервала между таймерными прерываниями — 100 мс. Этого вполне достаточно для большинства применений программы.

Документация к VAC сделана только на английском языке — главным образом из-за почти полного отсутствия в России покупателей полной версии. По этой же причине рынок VAC ориентирован в основном на зарубежных пользователей.

Для установки VAC необходимо вначале распаковать дистрибутивный архив в любой пустой каталог. Установка выполняется стандартными средствами системы из панели управления:

  • в Windows 95/98/Me/2000 — при помощи мастера установки оборудования. Следует отказаться от автоматического поиска нового оборудования, выбрать в списке класс звуковых устройств, нажать кнопку «Установить с диска», указать каталог, в котором находится дистрибутив программы, после чего следовать указаниям системы;
  • в Windows NT 4 — при помощи панели Мультимедиа. В закладке «Устройства» необходимо нажать кнопку «Добавить», выбрать в списке «Установить с диска», указать путь к каталогу дистрибутива и следовать указаниям системы.

При успешной установке перезагрузки системы не потребуется и звуковые порты будут доступны сразу же.

Удаление программы также выполняется стандартными средствами через панель управления:

  • в Windows 95/98/Me/2000 — при помощи общего списка устройств (Система). Список доступен также через пункт «Свойства» контекстного меню объекта «Мой компьютер». В списке следует открыть класс звуковых устройств, выбрать Virtual Audio Cable и нажать «Удалить»;
  • в Windows NT 4 — при помощи той же панели Мультимедиа. В закладке «Устройства» необходимо выбрать «Аудиоустройства», далее — Virtual Audio Cable и нажать «Удалить».

Удаляется драйвер также без перезагрузки.

В начало В начало

Пример использования

Предположим, что в системе имеется один виртуальный кабель с портами Virtual Cable 1 In и Virtual Cable 1 Out. Необходимо записать результат работы некоей программы, которая не предлагает возможности выбора звукового устройства, а выводит звук исключительно на стандартное системное устройство (Wave Mapper).

Открываем Панель управления, там — панель Мультимедиа. В закладке Аудио выбираем устройство воспроизведения Virtual Cable 1 Out. После этого пропадает значок регулятора громкости из панели задач — этого пугаться не нужно, так как VAC не имеет собственного микшера.

Запускаем любую программу цифровой записи (Sound Forge, Cool Edit, Gold Wave, WaveLab) и выбираем в списке устройств записи Virtual Cable 1 In. Если формат цифрового звука программы, результат которой нам необходим, заранее известен (например, 44100/16/стерео), — сразу устанавливаем его в программе записи. Иначе запускается «играющая» программа и производится подбор в программе записи нужного формата из числа стандартных. Как только запись включилась — формат подобран верно.

Наконец, включаем запись, стартуем «играющую» программу сначала, записываем фрагмент, выключаем запись. Если в процессе записи необходимо слушать звук, проходящий по кабелю — запускаем Audio Repeater, выбираем устройством ввода Virtual Cable 1 In, а устройством вывода — реальный звуковой адаптер, выставляем формат, нажимаем Start. Повторитель снимает с выхода кабеля копию звукового потока и отправляет «железному» адаптеру, не влияя на процесс записи.

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

В начало В начало

Планы на будущее

В ближайшее время будет выпущена линия VAC 3 — с новыми, более надежными алгоритмами передачи звуковых данных, исключающими потери блоков из-за недостаточного размера буфера в подключенных приложениях. Это позволит свести к минимуму задержки распространения (latency), сегодня нередко составляющие 100 мс и более.

Кроме того, VAC 3 будет снабжен программой визуальной настройки, отображающей и текущий формат звукового потока для каждого кабеля. Также в ближайших версиях планируется введение управления громкостью (volume control) и преобразования форматов.

Информация об очередных версиях будет размещена на сайте моих программ (http://www.spider.nrcde.ru/music/software.html).

С автором этой статьи можно связаться по e-mail: music@spider.nrcde.ru

КомпьютерПресс 5'2001