Віртуальні ефекти та інструменти в Linux - Мультимедіа в 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, він Linux Audio Developer's Simple Plugin API, є першим «рідним» API звукових ефектів для Linux. Робота була розпочата Річардом Ферсом (Richard Furse) у 2000 році, який пізніше передав справи Стіву Геррісу (Steve Harris) і з того часу цілком успішно займається своєю улюбленою темою – амбісоніком.
LADSPA виявився досить простим API, настільки простим, що дуже нечисленна спільнота розробників подужала близько чотирьох сотень ефектів (якщо вважати LV2, які можуть працювати як LADSPA). Щоправда, основний масив ефектів було написано у першій половині нульових.
У простоти LADSPA виявився і недолік: цей API не передбачає створення оригінальних інтерфейсів, що робить його не дуже цікавим для розробників комерційного ПЗ. Насправді виходить, що кожен хост малюєпараметри ефектів як уміє. Зазвичай це виглядає як набір повзунків:

Через десять років LADSPA, як і раніше, затребуваний і навіть не перестає дивувати: всі оригінальні напрацювання компанії Harrison реалізовані в дружньому форці Ardour під назвою Mixbus саме як майстерно замаскований пропрієтарний ефект LADSPA.

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

Виправдати це можна тим, що на DSSI було відпрацьовано API створення оригінальних інтерфейсів, що в плані іміджу є досить важливим моментом, який не варто недооцінювати.
В даний час DSSI підтримується в хості Jost, вільних секвенсерах Rosegarden, MusE та Wired, а також у комерційному трекері Renoise.
Водночас LADSPA та DSSI, а також невдала робота над GMPI (див. нижче) у 2006 році призвели до роботи над новим стандартом, яких би об'єднав та доповнив їх. Цим стандартом і став LV2, що є найбільш сучасним API в Linux для створення віртальних інструментів і ефектів.
(До речі, до такої ж стратегії після довгих років роботи зараз прийшла робоча група W3C SVG, оскільки, як показала практика, створення монолітного стандарту за участю кількох сторін дійсно йдуть довгі роки.)
Ще однією особливістю LV2 є можливість використовувати ефекти LV2 як ефекти LADSPA, а інструменти LV2 — як інструменти DSSI в хостах, які поки що не підтримують LV2.

Модулів LV2 поки що порівняно небагато — близько півтори сотні. Найбільший інтерес серед них мають такі:
- порт набору ефектів LADSPA Стіва Харріса на LV2;
- комплект Calf (на скріншоті вгорі);
- досі офіційно не випущений порт модулів mda;
- комерційні ефекти linux DSP, які розробляє колишній співробітник Solid State Logic.

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 можуть бути різні, але головним чином це все ж таки вивчення фізики звуку.
Нарешті, залишається ще один API, який цікавий швидше за археологів-аматорів.
Зараз цей проект вже не надто відомий, а ось у 2003 році, коли його було запущено, на нього покладалися великінадії, оскільки над створенням багатоплатформного відкритого стандарту ефектів та інструментів пліч-о-пліч працювали розробники вільного та пропрієтарного програмного забезпечення. При цьому робоча група була створена Асоціацією виробників MIDI (MIDI Manufacturers Association).
Розробка
Документації до API не завжди досить. Існує кілька проектів, завдання яких – спростити створення ефектів та інструментів для Linux.
Першим проектом є NASPRO - фреймворк для розробки розширень, побудований навколо API LV2. До складу NASPRO входять три підпроекти:
- NASPRO Core. Компактна бібліотека містить основні функції для створення модулів LV2.
- NASPRO Bridges Набір містків -в-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 і як інші програмісти спілкуються з дизайнерами, затія непогана.