Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

Виртуальные эффекты и инструменты в 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:

Novation Bass Station в Ardour 3

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

Qtractor, в свою очередь, также использует VeSTige, но загружает только сборки VST и VSTi для Linux. Таких эффектов и инструментов пока что не очень много. Их можно найти, к примеру, здесь и здесь.

Кроме того, с помощью FeSTige (использующего VeSTige приложения на Qt) можно запускать VST и VSTi, собранные для Windows, как самостоятельные клиенты JACK. Программа очень проста: она просто перечисляет найденные модули и позволяет их добавить сразу в JACK или сначала в комнату LADISH.

FeSTige

Наконец, с 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 в Ardour

Преимущество LADSPA как самого старого API состоит в том, что сложно вспомнить звуковой редактор для Linux, который бы не поддерживал его. Больше того, доступ к LADSPA можно получить через каналы GStreamer, а ещё можно использовать тот или иной, скажем, эквалайзер прямо из ALSA.

По прошествии десяти лет LADSPA по-прежнему востребован и даже не перестаёт удивлять: все оригинальные наработки компании Harrison реализованы в дружественном форке Ardour под названием Mixbus именно как искусно замаскированный проприетарный эффект LADSPA.

Mixbus и его микшер

DSSI

DSSI, или Disposable Soft Synth Interface, т.е. "доступный интерфейс программных синтезаторов" - первый свободный API виртуальных инструментов. Как конечный продукт он совершенно неожиданно оказался невостребованным: несмотря на историю длиной в добрых шесть лет количество прилично звучащих инструментов, реализованных как DSSI, пугающе мало.

amSynth умеет работать как инструмент 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 и некоторых модульных средах и синтезаторах.

Компрессор Calf

Модулей LV2 пока что сравнительно немного - около полутора сотен. Наибольший интерес среди них представляют следующие:

  • порт набора эффектов LADSPA Стива Хэрриса на LV2;
  • комплект Calf (на скриншоте вверху);
  • до сих пор официально не выпущенный порт модулей mda;
  • коммерческие эффекты linux DSP, разрабатываемые бывшим сотрудником Solid State Logic.

Vamp

Этот API эффектов для анализа звуковых данных и извлечения различных характеристик был написан Крисом Кэннемом в 2005 году по заказу Центра цифровой музыки Лондонского университета (Centre for Digital Music at Queen Mary, University of London) как часть проекта Sonic Visualiser - специализированного редактора для анализа и аннотации звуковых данных.

Sonic Visualiser

Vamp активно использует библиотеку aubio, предоставляющую API для извлечения аннотаций из звуковых данных.Собственные модули Vamp можно писать на C++ и Python. Преимущественно модули Vamp пишутся в академической среде. Их общий каталог находится здесь.

Помимо Sonic Visualiser есть ещё несколько приложений, использующих Vamp.

  1. Sonic Annotator. Пакетный анализатор звуковых данных, который может писать полученные данные в CSV и RDF.
  2. Audacity. Linux-версия программы неплохо поддерживает Vamp и весь вывод помещает в новую дорожку заметок. В некоторых случаях это может быть полезно.
  3. Ardour. В программе реализована функция с несколько необычным названием "ритмический хорёк" (Rhythm Ferret), которая выполняет разделение областей по атаке, к примеру, ударных. Для анализа звуковых данных используется несколько модулей Vamp, включая Note Onset Detector.

rhythm-ferret-a3.png

Благодаря этой функции вы можете, примеру, быстро порезать запись инструмента для последующей сборки сэмпла в gigedit или Swami. Словом, применения у Vamp могут быть самые разные, но главным образом это всё же изучение физики звука.

Кстати, пока писалась эта статья, на github появился интересный проект, суть которого заключается в создании обёртки к уже упомянутой библиотеке aubio для LV2.

Наконец, остаётся ещё один API, который интересен скорее археологам-любителям.

GMPI

Сейчас этот проект уже не слишком известен, а вот в 2003 году, когда он был запущен, на него возлагались большие надежды, поскольку над созданием многоплатформенного открытого стандарта эффектов и инструментов рука об руку работали разработчики свободного и проприетарного программного обеспечения. При этом рабочая группа была создана Ассоциацией производителей MIDI (MIDI Manufacturers Association).

К сожалению, как это часто бывает со стандартами, работа затянулась на два года, и понемногу участники просто разбежались один за другим. Черновик спецификации по-прежнему доступен, но проект так и не был завершён, а реализовать наработки попытался лишь автор SynthEdit Джефф МакКлинток (Jeff McClintock).

Разработка

Документации к API не всегда бывает достаточно. Существует несколько проектов, задача которых - упростить создание эффектов и инструментов для Linux.

Первым проектом является NASPRO - фреймворк для разработки расширений, построенный вокруг API LV2. В состав NASPRO входят три подпроекта:

  1. NASPRO Core. Компактная библиотека, содержащая основные функции для создания модулей LV2.
  2. NASPRO Bridges. Набор мостиков <API>-в-LV2, с заведомо ограниченной функциональностью по причине неполного пересечения функций разных API.
  3. 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
Источник статьи
      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2017 LinuxRSP