Виртуальные эффекты и инструменты в Linux
У пользователей, рассматривающих возможность перехода на Linux и работающих со звуком, часто возникают два вопроса: запустятся ли там привычные программы и эффекты обработки, и что представляют собой "родные" для Linux решения.
Задача этой статьи - дать краткий обзор API эффектов и виртуальных инструментов, которые поддерживаются в операционной системе Linux. Сразу отметим, что к ним не относятся стандарты Audio Units и DirectX как платформозависимые, а также стандарт RTAS как не допускающий легальную свободную реализацию.
VST и VSTi
В течение долгого времени легальная поддержка этого широко распространённого API в свободном ПО была невозможна, поскольку официальный SDK, выпускаемый Steinberg, распространялся под несовместимой с СПО лицензией. Из-за этого поддержка огромного числа уже написанных эффектов и инструментов была по умолчанию невозможной, что делало Linux не очень привлекательной системой для соответствующей целевой аудитории.
Наконец, разработчики LMMS решили, что пора уже разорвать порочный круг, и воссоздали необходимые файлы SDK с нуля, дав получившемуся проекту название VeSTige. Список протестированных эффектов и инструментов поддерживается здесь.
Следует отметить, что хосты VST используют VeStige по-разному. Ardour, к примеру, позволяет загружать только сборки эффектов для Windows, т.е. файлы .dll, для чего используется WINE. Стабильная версия программы поддерживает только VST, а нестабильная, ввиду появления MIDI-дорожек, поддерживает и VSTi:
Вместе с тем, WINE пока что не справляется со всеми эффектами: некоторые из них могут "уронить" программу (механизм защиты в первом приближении уже реализован), а некоторые не работают просто потому, что не включается механизм регистрации лицензионной копии. Это одна из причин, по которым формально VST в этой программе не поддерживается, а её сборка с поддержкой VST выполняется лишь по желанию пользователя, причём конечный исполняемый файл получает другое название, чтобы избежать путаницы.
Qtractor, в свою очередь, также использует VeSTige, но загружает только сборки VST и VSTi для Linux. Таких эффектов и инструментов пока что не очень много. Их можно найти, к примеру, здесь и здесь.
Кроме того, с помощью FeSTige (использующего VeSTige приложения на Qt) можно запускать VST и VSTi, собранные для Windows, как самостоятельные клиенты JACK. Программа очень проста: она просто перечисляет найденные модули и позволяет их добавить сразу в JACK или сначала в комнату LADISH.
Наконец, с VSTi можно работать в любом хосте инструментов DSSI (о которых позже) через "мостик"
dssi-vst, который также использует VeSTige.
LADSPA
LADSPA, он же Linux Audio Developer's Simple Plugin API, является первым "родным" API звуковых эффектов для Linux. Работа была начата Ричардом Фёрсом (Richard Furse) в 2000 году, который позднее передал дела Стиву Хэррису (Steve Harris) и с тех пор вполне успешно занимается своей любимой темой - амбисоником.
LADSPA оказался достаточно простым API, настолько простым, что очень немногочисленное сообщество разработчиков осилило порядка четырёх сотен эффектов (если считать LV2, которые могут работать как LADSPA). Правда, основной массив эффектов был написан в первой половине нулевых.
Вместе с тем, в стандарт были заложены некоторые интересные идеи, которые позднее были использованы в новых API. К примеру, в LADSPA предусмотрена онтология на RDF, практическое применение которой заключается в возможности создавать дерево меню, группирующее эффекты по категориям, что существенно упрощает поиск необходимого эффекта.
У простоты LADSPA оказался и недочёт: этот API не подразумевает создание оригинальных интерфейсов, что автоматически делает его не очень интересным для разработчиков коммерческого ПО. На практике получается, что каждый хост рисует параметры эффектов как умеет. Обычно это выглядит как набор ползунков:
Преимущество LADSPA как самого старого API состоит в том, что сложно вспомнить звуковой редактор для Linux, который бы не поддерживал его. Больше того, доступ к LADSPA можно получить через каналы GStreamer, а ещё можно использовать тот или иной, скажем, эквалайзер прямо из ALSA.
По прошествии десяти лет LADSPA по-прежнему востребован и даже не перестаёт удивлять: все оригинальные наработки компании Harrison реализованы в дружественном форке Ardour под названием Mixbus именно как искусно замаскированный проприетарный эффект LADSPA.
DSSI
DSSI, или Disposable Soft Synth Interface, т.е. "доступный интерфейс программных синтезаторов" - первый свободный API виртуальных инструментов. Как конечный продукт он совершенно неожиданно оказался невостребованным: несмотря на историю длиной в добрых шесть лет количество прилично звучащих инструментов, реализованных как DSSI, пугающе мало.
Оправдать это можно тем, что на DSSI был отработан API создания оригинальных интерфейсов, что в плане имиджа является достаточно важным моментом, который не стоит недооценивать.
В настоящее время DSSI поддерживается в хосте Jost, свободных секвенсерах Rosegarden, MusE и Wired, а также в коммерческом трекере Renoise.
LV2
Вместе LADSPA и DSSI, а также неудачная работа над GMPI (см. ниже) в 2006 году привели к работе над новым стандартом, которых бы объединил и дополнил их. Этим стандартом и стал LV2, по сию пору являющийся наиболее современным API в Linux для создания виртуальных инструментов и эффектов.
Особенность API заключается в том, что он модульный. Существует спецификация на основную часть API, которая расширяется двумя наборами дополнений, ext и extensions, а также не связанными друг с другом внешними расширениями. У такого подхода есть ряд преимуществ чисто практического толка. В частности, авторы смогли достаточно быстро проработать основную спецификацию, чтобы её уже можно было реализовывать в хостах, после чего переключились на дополнения.
(Кстати, к такой же стратегии после долгих лет работы сейчас пришла рабочая группа W3C SVG, поскольку, как показала практика, на создание монолитного стандарта при участии нескольких сторон действительно уходят долгие годы.)
Ещё одной особенностью LV2 заключается возможность использовать эффекты LV2 как эффекты LADSPA, а инструменты LV2 - как инструменты DSSI в хостах, пока что не поддерживающих LV2.
Наиболее полная реализация всех расширений LV2 сейчас присутствует в готовящейся к выпуску третьей версии Ardour. К примеру, только в Ardour 3 сейчас реализована поддержка расширения persist, которое позволяет хосту сохранять состояние эффекта или инструмента в своих проектах (2011-01-10: поддержка persist также есть в версии Qtractor из SVN). Благодаря этому при повторной загрузке этого проекта вам не нужно заново выкручивать все ручки. Ничего удивительного в этом нет, если учесть, что поддержкой LV2 в проекте занимается соавтор спецификаций LV2 Дэвид Робиллард (David Robillard). LV2 также поддерживается в Qtractor и некоторых модульных средах и синтезаторах.
Модулей LV2 пока что сравнительно немного - около полутора сотен. Наибольший интерес среди них представляют следующие:
Vamp
Этот API эффектов для анализа звуковых данных и извлечения различных характеристик был написан Крисом Кэннемом в 2005 году по заказу Центра цифровой музыки Лондонского университета (Centre for Digital Music at Queen Mary, University of London) как часть проекта Sonic Visualiser - специализированного редактора для анализа и аннотации звуковых данных.
Vamp активно использует библиотеку aubio, предоставляющую API для извлечения аннотаций из звуковых данных.Собственные модули Vamp можно писать на C++ и Python. Преимущественно модули Vamp пишутся в академической среде. Их общий каталог находится здесь.
Помимо Sonic Visualiser есть ещё несколько приложений, использующих Vamp.
- Sonic Annotator. Пакетный анализатор звуковых данных, который может писать полученные данные в CSV и RDF.
- Audacity. Linux-версия программы неплохо поддерживает Vamp и весь вывод помещает в новую дорожку заметок. В некоторых случаях это может быть полезно.
- Ardour. В программе реализована функция с несколько необычным названием "ритмический хорёк" (Rhythm Ferret), которая выполняет разделение областей по атаке, к примеру, ударных. Для анализа звуковых данных используется несколько модулей Vamp, включая Note Onset Detector.
Благодаря этой функции вы можете, примеру, быстро порезать запись инструмента для последующей сборки сэмпла в gigedit или Swami. Словом, применения у Vamp могут быть самые разные, но главным образом это всё же изучение физики звука.
Кстати, пока писалась эта статья, на github появился интересный проект, суть которого заключается в создании обёртки к уже упомянутой библиотеке aubio для LV2.
Наконец, остаётся ещё один API, который интересен скорее археологам-любителям.
GMPI
Сейчас этот проект уже не слишком известен, а вот в 2003 году, когда он был запущен, на него возлагались большие надежды, поскольку над созданием многоплатформенного открытого стандарта эффектов и инструментов рука об руку работали разработчики свободного и проприетарного программного обеспечения. При этом рабочая группа была создана Ассоциацией производителей MIDI (MIDI Manufacturers Association).
К сожалению, как это часто бывает со стандартами, работа затянулась на два года, и понемногу участники просто разбежались один за другим. Черновик спецификации по-прежнему доступен, но проект так и не был завершён, а реализовать наработки попытался лишь автор SynthEdit Джефф МакКлинток (Jeff McClintock).
Разработка
Документации к API не всегда бывает достаточно. Существует несколько проектов, задача которых - упростить создание эффектов и инструментов для Linux.
Первым проектом является NASPRO - фреймворк для разработки расширений, построенный вокруг API LV2. В состав NASPRO входят три подпроекта:
- NASPRO Core. Компактная библиотека, содержащая основные функции для создания модулей LV2.
- NASPRO Bridges. Набор мостиков <API>-в-LV2, с заведомо ограниченной функциональностью по причине неполного пересечения функций разных API.
- Permafrost - язык DSP, "заточенный" под физическое моделирование звука, с препроцессором, создающим конечный код модуля LV2 на C и данные Turtle/RDF.
Вторым проектом является
holos - библиотека, позволяющая писать код, который затем собирается в модуль VST, LADSPA, LV2 и т.д. Пока что частично готова поддержка лишь VST и LADSPA. Как и NASPRO, проект начат относительно недавно.
Третьим проектом является FAUST - ещё один язык программирования DSP, но с препроцессором уже в C++, при этом объединяющий функциональное программирование с построением блок-схем. FAUST тоже хорошо подходит для физического моделирования. С его помощью, к примеру, написан синтезатор Foo YC-20, который эмулирует винтажный орган Yamaha YC-20 со всеми его особенностями звучания. Препроцессор FAUST не создаёт готовый код модуля LV2, но позволяет эффективно подготовить его основу.
Наконец, prolooks является библиотекой виджетов, разработанной для набора эффектов Calf. Если учесть, как хорошо выглядят эффекты Calf и как мало остальные программисты общаются с дизайнерами, затея неплохая.
Автор: Александр Прокудин
Лицензия: CC by SA 3.0
Источник статьи