На чем пишут плагины для fl studio
Общие сведения
В современном мире большое распространение получила электронная музыка. Процесс создания подобной музыки сводится к созданию MIDI инструкций для различных программных синтезаторов (например в виде программных модулей). Далее, MIDI дорожка последовательно преобразуется в цифровой музыкальный файл (например WAV или MP3).
Разрабатываемый VST эффект изменяет звук на основе заданных параметров, в частности таких как время задержки(Delay), отдача (FeedBack), срез частот(Cutoff) на основе HighPass и LowPass фильтров и резонанса(Res).
Использование VST SDK
Технология VST (Virtual Studio Technology) принадлежит немецкой компании Steinberg. Следовательно, необходимо воспользоваться SDK. На сайте компании Steinberg можно найти множество примеров и справочного материала, касающегося создания собственных VST инструментов, и спецификацию (на английском) формата. Вся проблема заключается в том, что, все заголовочные файлы SDK написаны на языке C++, а проект будет разрабатываться на языке Delphi. Решение проблемы состоит в полном переводе SDK с языка C++ на язык Delphi, что было частично сделано мною самостоятельно, частично – третьими лицами.
Спецификация формата VST
Ниже описаны некоторые выдержки из спецификации, которые позволят более детально ознакомиться с форматом VST инструментов.
VST Plug-in – это не приложение для Windows в привычном для нас понимании. Для правильной работы VST инструмента требуется приложение хост (в нашем случае хостом является FL Studio), к которому может быть подключен Plug-in. Хост управляет аудио потоками, и делает возможным работу VST инструмента. Информационный аудио поток состоит из дискретных блоков. Хост управляет такой последовательностью блоков.
С точки зрения приложения хоста, VST инструмент – это черный ящик с определенным числом входов и выходов, и ассоциированных параметров. Хост может автоматизировать ассоциированные параметры, если в VST инструменте они правильно представлены.
Исходный код VST инструмента не зависит от используемой платформы, но скомпилированный Plug-In все же зависит.
На платформе Windows, VST представляется в виде динамически подключаемой многопоточной библиотекой (DLL).
Структура алгоритма
Процессор эффектов должен изменять звук на основе заданных параметров, в частности таких как время задержки(Delay), отдача (FeedBack), срез частот(Cutoff) на основе HighPass и LowPass фильтров и резонанса(Res).
Схема потоков данных:
Алгоритм фильтрации (Cutoff, Res, HP/LP):
Интерфейс
Разрабатываемый модуль имеет собственный интерфейс. Графический интерфейс для доступа к изменению параметров пользователя, разработан мною. Ниже изображен единственный возможный вариант пользовательского графического интерфейса.
При использовании такого пользовательского графического интерфейса, мы получаем доступ ко всем доступным для изменения параметрам.
Что располагается на пользовательском интерфейсе:
Delay – Время задержки. При перемещении данного ползунка вправо – время задержки волны увеличивается, влево – уменьшается.
FeedBack –Время затухания эффекта задержки. При перемещении данного ползунка вправо – время затухания увеличивается, влево – уменьшается.
Mix – Уровень смешивания неизменённого звука с изменённым. При перемещении данного ползунка вправо – уровень громкости изменённого звука увеличивается, влево – уменьшается.
OutVol – Уровень громкости на выходе модуля. При перемещении данного ползунка вправо – уровень громкости увеличивается, влево – уменьшается.
Cutoff – Частота пропускания фильтра частот. При перемещении данного ползунка вправо – частота пропускания увеличивается, влево – уменьшается.
Resonance – Усиление оставшихся частот. Чем больше ползунок перемещён вправо – тем больше усиление.
HP/LP – Переключатель режимов работы фильтра. Изменяется при единичном клике.
Ниже приведен граф состояний пользовательского интерфейса :
Необходимые файлы из VST SDK
Чтобы реализовать модуль как VST инструмент, необходимо использовать заголовочные файлы из состава Virtual Studio Technology SDK. Модуль будет использовать файлы DAEffect, DAudioEffect.
Любой VST инструмент использует заголовочный файл DAEffect, так как в нем содержится прототип функции Main(). Функция Main() – это единственная функция, которая должна быть описана в секции экспорта библиотеки VST модуля. DAEffect так же содержит такие функции, как getParameter() и setParameter(), которые используются при изменении, например громкости инструмента, и т.п. (параметры), а так же поле для уникального ID, который, согласно спецификации формата, обязательно должен быть у каждого VST инструмента или эффекта, и должен состоять из четырех символов.
Прототип класса TProcessProcc, и TProcessReplacingProc также должен обязательно быть в любом инструменте VST формата, т.к. именно в них происходит воспроизведение потока аудиоданных.
Использование заголовочного файла DAudioEffect также необходимо, т.к, содержит еще некоторые функции для работы с форматом VST. (например такие, как перевод децибелов в строку)
Технический проект
Выбор языка и средств программирования
В качестве языка программирования был выбран Delphi с интегрированоой средой разработки Delphi 7, и переведенные на язык Delphi заголовочные файлы VST SDK. Выбор в пользу этих средств обусловлен простотой языка Delphi, и, следовательно, меньшим затраченным временем на разработку проекта.
Структура данных на выбранном языке программирования
В модуле используются следующие данные:
- время задержки: целочисленная константа,
- отдача: целочисленная константа,
- срез частот: целочисленная константа,
- резонанс: целочисленная константа,
- режим фильтра частот: целочисленная константа,
- выходная громкость: целочисленная константа,
- смешивание сигналов: целочисленная константа,
- класс APlugin: содержит все вышеперечисленные параметры, а так же:
подстройка тона,
подстройка полутона, - массив предустановленных программ (APluginProgram): используется для хранения предустановленных программ. В любое время может быть использована только одна предустановленная программа,
- текущая нота: целочисленное значение, находящееся в пределах от 0 до 127 (MIDI ноты),
- нажата нота: значение истинное, если пользователь нажал на клавишу, привязанную к какой-либо ноте.
Основные параметры
Итак, основные параметры модуля – это:
- Время задержки (DelayLen)
- Отдача (время затухания) (DelayFB)
- Срез частот (Cutoff)
- Резонанс (Resonance)
- Режим фильтра частот (FType)
- Выходная громкость (OutVol)
- Смешивание сигналов (DryWet)
Всего семь. Их можно описать в разделе объявления констант, т.к. функция setParameter(index: longint) использует индекс параметра (порядковый номер, т.е константу).
Описание параметров в секции объявления констант:
Детальные алгоритмы решения задачи
Алгоритм задержки (Delay)
Во-первых, необходимо изменить значение длины задержки логарифмически для достижения большей точности по формуле:
где v – значение параметра задержки (delay). Это делается для достижения более точного значения (до четырёх знаков после запятой).
Далее, определяем количество точек смещения звука по формуле:
iгде v – значение параметра задержки. Таким образом минимальное количество точек смещения звука равно пяти, максимальное количество точек равно 44100. Из этого следует, что максимальное время задержки – 1 секунда.
Далее, звук проигрывается в соответствии с рассчитанными параметрами задержки.
Алгоритм затухания (Fadeout)
Необходимо реализовать алгоритм плавного уменьшения уровня громкости эффекта задержки. По формуле:
где i – текущая точка звука, B – размер буфера затухания. Далее, чтобы реализовать затухание нужно изменять уровень звука в соответствии с коэффициентом f. Коэффициент f лежит в пределах нуля и единицы.
Алгоритм фильтрации (cutoff, reso, HP/LP)
Реализация фильтра резонанс (reso) заключается в увеличении амплитуды сигнала на данной частоте.
Коэффициент резонанса находится по формуле:
где x – значение параметра резонанс (reso), c – значение параметра cutoff.
Затем обрабатываем каждую точку звуковой волны по формулам:
где a – предыдущая обработанная точка, b – текущая обрабатываемая точка, i – необработанная точка, c – значение параметра cutoff, r – значение, рассчитанное по формуле коэффициента резонанса.
Далее, на каждый выход отправляется указатель массива с дисретными блоками аудиоданных для каждой волны, где они воспроизводятся и мы слышим звук.
Процесс воспроизведения
Воспроизведение звука в VST можно реализовать двумя способами:
- Используя процедуру Process;
- Используя процедуру ProcessReplacing;
Оба способа ничем не отличаются друг от друга, поэтому можно использовать любой из них. Но необходимо отметить, что некоторые хосты обрабатывают только процедуру Process, а некоторые – ProcessReplacing (VST SDK), и поэтому, вся процедура воспроизведения будет описана и тем, и другим способом (для универсальности).
Окончательная конфигурация системных требований
X86-совместимый процессор с тактовой частотой не ниже 500 МГц.
Операционная система Windows XP
16 разрядная звуковая карта
Монитор с поддержкой разрешения 800*600 и более.
Отладка и тестирование
Тестирование обработки звука
Для тестирования скомпилированный модуль нужно загрузить в приложение-хост, и затем, поместить модуль на один из свободных каналов микшера
Загрузка модуля в один из свободных каналов:
Далее, добавив инструмент, например, FL Keys (фортепиано), вызываем контекстное меню канала нажатием правой кнопки мыши, выбераем инструмент Piano roll. Piano roll — является нотным редактором для любого инструмента.
Вызов Piano Roll :
Далее нужно расположить ноты на Piano Roll. Нотная запись в Piano Roll:
Далее, закрыв окно редактора Piano Roll, нажатием кнопки Play выполнются MIDI инструкции (ноты). Эффект задержки, предоставляемый модулем, можно посмотреть на мониторе среды FL Studio. Монитор среды FL Studio:
Итак, для примера, нужно записать одну любую ноту в Piano roll и в модуле эффектов переместить слайдеры Delay и FeedBack, например на 0.95% и 0.7% соответственно.
Настройки модуля для тестирования:
Далее, нажатием кнопки Play, запустить воспроизведение и смотреть на показания монитора среды FL Studio. На мониторе FL Studio наблюдаются плавно уменьшающиеся скачки.
Показания монитора среды FL Studio:
Первый скачок – единственная нота, считанная из Piano roll и воспроизведённая инструментом FL Keys, все остальные скачки – результат работы эффекта задержки (Delay)
Ниже приведены показания монитора с выключенным (слайдер Mix установлен в положение 0) эффектом задержки.
Показания монитора среды FL Studio при выключенном эффекте задержки:
Далее был проведен тест пропускания низких частот. Для этого нужно переключить модуль в режим LP (Low pass), установить слайдер Cutoff (частота пропускания) в положение 0% (0% приблизительно равно 200 Гц), установить слайдер Resonance (усиление оставшихся частот) на 0.3%, применить эффект, например, к партии ударных и нажать на Play.
Показания монитора среды FL Studio при включенном фильтре частот в режиме пропускания низких частот:
На мониторе FL Studio красными вертикальными линиями отображаются воспроизводимые во время теста частоты. Красные линии не появляются дальше отметки «200» на шкале частот, что подтверждает правильную работу фильтра в режиме пропускания нижних частот.
Следующим тестом был тест пропускания высоких частот. Для этого нужно переключить модуль в режим HP (High pass), установить слайдер Cutoff (частота пропускания) в положение 1.0% (1.0% приблизительно начиная с 3200 Гц и выше), установить слайдер Resonance (усиление оставшихся частот) на 0.85%, применить эффект, например, к партии ударных и нажать на Play.
На мониторе FL Studio красными вертикальными линиями отображаются воспроизводимые во время теста частоты. Красные линии не появляются до отметки «2k» на шкале частот, что подтверждает правильную работу фильтра в режиме пропускания высоких частот.
Таким образом, можно отметить, что модуль эффектов работает корректно. Так же не вызвал затруднений вызов предустановленных настроек модуля. При вызове контекстного меню на канале с ассоциированным модулем Foxeffectunit, выбором пункта меню PRESETS, открывается список доступных настроек.
Предустановленные настройки модуля:
Руководство пользователя
Назначение программы и область применения
Модуль Fox effect unit предназначен обработки звуковой волны в соответствии с заданными параметрами. Может применяться совместно с другими эффект-процессорами при написании авторской музыки. Модуль Foxeffectunit представляет эффекты задержки, пропускания частот, усиления оставшихся частот, которые можно применять к любой звуковой волне.
Описание работы с программой
Установка и запуск программы
Модуль Foxeffectunit поставляется вместе со средой FL Studio и выше на одном CD-ROM диске. Для установки вставьте компакт-диск в устройство чтения компакт-дисков.
Модуль может работать как в среде FL Studio, так и в других программах-хостах (например: CakeWalk Sonar 7, Logic, Cubase и пр.), поэтому необходимо проинсталлировать FL Studio.
Для этого запустите файл flstudio6_install.exe, находящийся в корневом каталоге прилагаемого компакт-диска.
Нажав кнопку Next в окне инсталлятора откроется лицензионное соглашение.
Далее, в строке Name нужно ввести имя пользователя (ник например), и, выбрать вариант установки Install for (по умолчанию установлено в положение Current user only).
Нажав кнопку Next, в окне инсталлятора нужно выбрать компоненты FL Studio, которые вы хотите установить, отметив нужные пункты в текущем окне. Ниже описаны все компоненты установки.
FL Studio (required) – среда FL Studio (является необходимым пунктом).
Desktop Icon – создать иконку рабочего приложения на рабочем столе.
DXi – среда FL Studio в формате Microsoft DXi (для использования FL Studio в друтих приложениях-хостах).
VSTi – среда FL Studio в формате Steinberg VSTi (для использования FL Studio в друтих приложениях-хостах).
ReWire – среда FL Studio в формате PropellerHead ReWire (для использования FL Studio в друтих приложениях-хостах).
Collab 1.1 – средство коллективного использования FL Studio в рамках проекта.
Import old settings – использовать старые настройки FL Studio.
Нажав кнопку Next, в поле Destination folder введите путь до каталога, куда нужно установить FL Studio.
При последующем нажатии кнопки Next, в поле Destination folder введите путь до каталога, где будут храниться ваши VST плагины.
Нажав кнопку Next, в текущем окне нужно нажать кнопку Install, чтобы начать установку FL Studio.
Следующий этап – загрузка модуля Foxeffectunit в среду FL Studio. Для этого скопируйте модуль FoxEffectUnit.dll в папку PlugIns\VST каталога FL Studio:
Запустите файл FL.exe, находящийся в каталоге FL Studio.
После загрузки среды FL Studio начните новый проект (Меню File->New). Далее, нажатием кнопки F9 вызываете Mixer (микшер), выберите свободный канал, выберите свободный слот, пункт меню select->add one->more…
В раскрывшемся списке нужно нажать кнопку Refresh, и выбрать в появившемся меню пункт Fast Scan (recommended). Поиск новых программных модулей:
Через некоторое время, в текущем окне появится пункт Foxeffectunit, выделенный красным цветом
Слева от названия поставьте флажок F.
Закройте текущее окно. Теперь модуль Foxeffectunit находится в списке доступных инструментов.
Далее, выбрать пункт меню channels->add one. В раскрывшемся списке выбрать пункт Foxeffectunit.
Добавление модуля в свободный слот:
Управление настройками эффектов
Внешний вид программного модуля после загрузки изображен ниже
Каждый слайдер ассоциирован с одоименным параметром. Например, слайдер Delay изменяет время задержки.
Перемещение ползунка вправо увеличивает значение параметра, влево – уменьшает.
Переключение режима работы фильтра производится одним кликом по надписи HP (либо по LP, в зависимости от выбранного ранее режима).
Руководство системного программиста
Общие сведения о программе
Модуль Foxeffectunit предназначен для создания различных эффектов, которые в последующем возможно использовать в авторских музыкальных композициях.
Модуль работает только в связке с приложением-хостом (FL Studio). Для удаления модуля из системы, нужно просто удалить файл Foxeffectunit.dll из папки PlugIns\VST каталога FL Studio.
Для удаления FL Studio нужно запустить файл uninstall.exe
Структура модуля
Foxeffectunit реализован в формате программного VST модуля. Foxeffectunit состоит из единственного модуля Foxeffectunit.dll Никаких модулей расширения возможностей и дополнительных модулей не предусмотрено.
Настройка модуля
Модуль имеет настраиваемые параметры звука: время задерки, время затухания, уровень громкости, микширование, частота пропускания, усиления оставшихся частот.
Имеется возможность загрузки предустановленных параметров настройки программного модуля.
Проверка модуля
Оценить правильность работы программного модуля можно только путём прослушивания звука, а также при помощи визуального наблюдения в мониторе FL Studio.
Выводы и заключения
При выполнении данного курсового проекта мною были получены ценные навыки по выполнению всех стадий разработки программного продукта и документирования.
Тема курсового проекта оказалась довольно сложной для меня, учитывая, что это первый опыт написания программы такого объёма. Тестирование показало, что выбранные мною алгоритмы и структуры данных обеспечивали достаточное быстродействие, но для создания более серьезных проектов необходимо использовать более мощные алгоритмы.
На этапе кодирования постоянно проводилась отладка, финальная версия программы была протестирована и никаких серьёзных ошибок не было найдено.
Комментируя код, я исходил из того, что человек будет обладать навыками в используемом мной языке программирования, но не будет знать основных идей и алгоритмов работы программы. Комментарии могут быть полезны в дальнейшей разработке и совершенствовании программы.
Создавая руководство пользователя, я попытался раскрыть абсолютно все аспекты при работе с программой.
Полученные при работе над данным курсовым проектом знания и навыки будут востребованы при дальнейшей разработке программных продуктов.
Этот пост — первый из серии переводов руководства Мартина Финке о написании собственных аудиоплагинов.
Отличительной особенностью этого материала является отсутствие зависимости от формата плагина и платформы его использования. Внимание сфокусировано на общей структуре аудиоплагина. Затем алгоритмы оборачиваются в слой абстракции для сборки в форматы VST, VST3, AU, RTAS, AAX или в отдельное приложение.
Сам Мартин больше работает на Маке, но руководство содержит и все необходимые шаги для разработки на Windows.
Введение
Аудиоплагины — это программы, которые загружаются в хост (например Ableton Live, Logic или REAPER). Они обрабатывают аудио и\или MIDI данные. У них, как правило, есть GUI (графический пользовательский интерфейс). Вот три примера (U-He Zebra, Sonalksis FreeG и D16 Decimort):
Как видите, в GUI присутствуют элементы управления (чаще всего это какие-нибудь ручки), меняющие то, как плагин обрабатывает входящие данные. Еще есть набор пресетов (предустановок — на скриншотах они называются Combo и Emulator), в которых хранятся положения ручек и других параметров.
Начнем мы с дисторшена — это достаточно простой плагин. После этого мы сделаем вот такой субстрактивный синтезатор, шаг за шагом:
Будем использовать С++ и библиотеку WDL-OL. Она основана на библиотеке Cockos WDL (произносится как «уитл»). Она делает за нас кучу работы, вот самые важные моменты:
- Содержит уже готовые проекты Xcode / Visual Studio
- Создает плагины в форматах VST, AudioUnit, VST3 и RTAS из нашего кода. Просто выбираем формат и жмем запустить!
- Создает 32\64-битные версии
- Запускает ваш плагин как самостоятельное приложение в Windows или MacOS
- Содержит множество разных элементов GUI, которые используются в аудиоплагинах
Также в этой библиотеке есть некоторые часто используемые алгоритмы, например, передискретизация. Вот в этой ветке форума есть много скринов плагинов, написанных при помощи WDL.
Разные форматы плагинов делают более-менее одно и то же. Следовательно, в коде обычно бывает много копипасты. Как программист, вы должны стараться не повторяться, так что рано или поздно вы бы написали свой собственный слой абстракции над разными форматами. Но это уже существует в виде фрэймворка IPlug, являющегося частью WDL. Это самая раздражающая часть процесса разработки, так что теперь мы сможем сфокусироваться на таких интересных штуках, как:
- Обработка аудио и MIDI
- Внешний вид плагина
- Интеграция с хостом (автоматизация, пресеты и прочее)
Еще одна замечательная вещь в WDL это разрешительная лицензия. Библиотеку можно свободно использовать даже в коммерческих продуктах (см. детальную информацию по ссылкам выше).
Как мы это сделаем
В программировании результат сам по себе — это уже вознаграждение, но именно по пути к результату мы учимся. В этом руководстве не будет длинных листингов с идеальными решениями. Мы начнем с того, что работает, и будем постепенно развивать это, встречаясь с разными проблемами. Минус в том, что вы будете писать код, который впоследствии замените на лучший. Но программистам к этому не привыкать. Первый плюс: не будет переполняющей радости, т. к. мы будем подходить к решению постепенно вместо того, чтобы сделать все одним махом. Второй — это то, что мы получим некоторые ценные знания в программировании.
Эта серия постов — не о решении задач по матану без калькулятора на бумажке. Она о том, как создавать хорошее программное обеспечение, которое вы можете дать своему другу-продюсеру, чтобы он сделал бас пожирнее.
Что нам понадобится
- Mac с Xcode 4 или выше, или Windows с Visual Studio C++ 2010 или выше
- Некоторое понимание С++ (синтаксис, указатели, основы ООП, механизмы памяти). Вы могли слышать, что С++ это тяжелый язык, но мы не будем использовать слишком сложные приемы.
- Некоторые общие знания о [цифровом] звуке: что такое амплитуда и частота, что делает фильтр, как аудио представляется с определенной частотой дискретизации (sample rate) и битовой глубиной (bit depth). Если вы делали музыку раньше, то, скорее всего, это все вам уже знаете.
- Заинтересованность в обработке цифровых сигналов и в разработке GUI: это две основные темы данного руководства. Если у вас нет никаких знаний в обработке цифровых сигналов, то по ходу разработки вам придется почитывать дополнительные материалы для заполнения пробелов. Я постараюсь давать ссылки на дополнительное чтение.
Полезные ресурсы
Пара ссылок, которые нам могут пригодиться:
-
: здесь можно узнать, например, что значат непонятные предупреждения, которые вы будете получать от компилятора. : очень хорошая бесплатная книга (на английском), покрывает больше материала, чем нам нужно. Если вам будет непонятен какой-нибудь концепт из обработки сигналов, почитайте эту тему в ней.
Теперь пора все настроить и подготовить.
Установка и настройка WDL-OL
Сейчас мы установим библиотеку WDL-OL и ее зависимости. Затем запустим пример, просто чтобы убедиться, что все работает как надо.
Большая часть этого материала есть в видео Оли Ларкина:
Материал следующей секции в основном для настройки на Mac. Windows будет немного ниже.
Настройка на Mac OS X с использованием Xcode 4
Перед тем, как мы начнем, надо скачать и установить парочку новых вещей. Это немного муторно, но придется сделать только один раз.
- Если не установлен Xcode, скачайте и установите.
- Cкачайте последнюю версию VST3 SDK. Для скачивания нужно зарегистрировать аккаунт.
- Скачайте Audio Tools for Xcode. В меню Xcode щелкните Open Developer Tool → More Developer Tools… (или кликайте сюда). Найдите Audio Tools for Xcode в списке, скачайте и установите. Для разных OS X есть разные версии, так что выбирайте внимательнее.
- Скачайте RtAudio (в пакет включены некоторые нужные файлы из ASIO SDK).
- Если у вас нету git, стоит его установить.
Загрузка WDL-OL
Откройте Terminal и напечатайте следующие строки, чтобы создать новую папку в вашей домашней директории и переместиться туда:
mkdir ~/plugin-development
cd !$
Давайте загрузим WDL-OL:
Эти строчки можно скопировать и вставить. Главное — не забудьте точку в конце! Тогда вы наверняка будете использовать ту же версию WDL-OL, что и в этом руководстве. На данный момент должна появиться подпапка wdl-ol.
Добавление зависимостей
Заходите в ASIO_SDK и скопируйте сюда файлы .cpp и .h из папки include из RtAudio.
Разархивируйте VST3 SDK и скопируйте файлы aeffect.h и aeffectx.h из папки pluginterfaces/vst2.x в подпапку wdl-ol/VST_SDK (они могут быть уже включены в VST3 SDK в подпапке pluginterfaces/vst2.x). Помимо этого для VST3 вам понадобятся base/source, pluginterfaces и public.sdk/source. Скопируйте из следующим образом:
Обратите внимание, что папку public.sdk надо будет создать вручную. Так в итоге должно выглядеть ваше дерево папок:
Теперь откройте common.xcconfig (он должен открыться в Xcode) и внесите следующие изменения:
CERTIFICATE_ID = Your Name
// Add these lines:
VST_FOLDER = ~/Library/Audio/Plug-Ins/VST
VST3_FOLDER = ~/Library/Audio/Plug-Ins/VST3
AU_FOLDER = ~/Library/Audio/Plug-Ins/Components
// Comment these out:
//VST_FOLDER = /Library/Audio/Plug-Ins/VST
//VST3_FOLDER = /Library/Audio/Plug-Ins/VST3
//AU_FOLDER = /Library/Audio/Plug-Ins/Components
Также мы будем использовать Mac OS X 10.5 для переменных BASE_SDK и MACOSX_DEPLOYMENT_TARGET . Продюсеры, и в особенности владельцы студий, часто очень ленятся обновлять свою ОС. Им не нужны новые фишки, а вот несколько дней простоя из-за проблем с обновлением софта могут вылиться в большие финансовые потери.
На самом деле deployment target содержит информацию о той версии, которая понадобится пользователям, но я предпочитаю прописывать ту же версию для основного SDK.
SDK 10.5 не включен в Xcode 4. Если он у вас уже установлен, переходите к пункту «Запуск тестового проекта». Если нет, то читайте дальше:
Установка SDK 10.5
Чтобы его установить, нужно скачать Xcode 3.2.6. Когда вы его скачаете, смонтируйте .dmg файл, откройте Terminal.app и введите
open /Volumes/Xcode\ and\ iOS\ SDK/Packages/
Снова появится окно поисковика. Перетащите в него папку MacOSX10.5.sdk. После перезапуска Xcode старый SDK должен быть доступен в Xcode 4. Убедитесь, что вы сделали резервную копию MacOSX10.5.sdk где-нибудь: если вы будете обновлять Xcode до более поздней версии, вам, возможно, придется повторить эти действия.
Запуск тестового проекта
В Терминале перейдите в папку с примерами:
Запустите скрипт dublicate чтобы создать свой первый плагин (замените YourName что-нибудь свое):
./duplicate.py IPlugEffect/ MyFirstPlugin YourName
Теперь там появилась новая папка MyFirstPlugin. Зайдите в нее и откройте MyFirstPlugin.xcodeproj. Выберите таргет APP:
Кликните Run. Выскочат несколько ошибок линкера:
Снова кликните Run. Через пару секунд плагин появится в виде самостоятельного приложения:
Проверка версии AudioUnit при помощи Logic
Если у вас нет Logic, можно использовать бесплатный инструмент auval для проверки. Убедитесь, что сборка AU Target прошла успешно, откройте Terminal и введите:
auval -a 2> /dev/null | grep MyFirstPlugin
Он должен выдать что-то типа этого:
aumu Abcd Efgh - YourName: MyFirstPlugin
Если Logic или auval не находят AU (а другие хосты типа REAPER его видят), зайдите в настройки сборки и убедитесь, что вверху слева выделен таргет AU. В поиске вбейте “active arch”. В результатах должна быть только одна строка параметра Build Active Architecture Only, значение которого . Измените его на No. Таким образом 32-х и 64-х битные версии будут компилироваться даже в режиме Debug. После этого зайдите в Product → Clean (Cmd+Shift+K) и запустите сборку снова. Теперь должно заработать.
Установка на Windows с использованием Visual C++ 2010 Express
Для начала установите Visual C++ 2010 Express.VS 2012 вроде тоже подойдет, но лично я не проверял.
- Visual Studio 2010
- Windows SDK 7.1
- Visual Studio 2010 SP1
- Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1
Пост с описанием других возможных проблем и их решений находится здесь.
Затем установите Git для Windows, используя настройки по умолчанию. Я использовал версию 1.8.4. Запустите Start → Program Files → Git → Git Bash. Откроется окно терминала. В этом окне введите несколько команд:
Чтобы вставить строки в окно, сделайте правый клик по его заголовку и выберите Edit → Paste:
Теперь скопируйте все файлы VST2/VST3/ASIO SDK в нужные папки, так же, как описано выше. Установите Python, используя настройки по умолчанию. Я использовал 2.7.5.
Чтобы создавать плагины формата VST3, надо создать папку VST3. Выполните в терминале эту команду:
mkdir -p "C:\Program Files\Common Files\VST3"
Теперь перейдите в терминале в подпапку IPlugExamples:
Запустите скрипт duplicate при помощи Python:
c:\Python27\python.exe duplicate.py IPlugEffect MyFirstPlugin YourName
Появится новая папка MyFirstPlugin. Зайдите в нее и откройте MyFirstPlugin.sln. Не обращайте внимания на предупреждения, они говорят о том, что мы не сможем собрать форматы AAX и TDM. В окне project explorer слева убедитесь, что MyFirstPlugin-app выделено жирным:
Если это не так, кликните по нему и выберите Set as StartUp Project. Жмите F5, должно появиться такое окно:
Возможные проблемы
Если вы видите ошибку fatal error LNK1123 в процессе сборки, вам нужно отключить incremental linking: правым кликом по проекту MyFirstPlugin-app, кликайте по Properties и заходите в Configuration Properties → Linker (General) → Enable Incremental Linking → “No (/INCREMENTAL:NO)”.
Если проблема не решается, попробуйте установить Visual Studio 2010 SP1, если еще не устанавливали. Так же может пригодиться обновление компилятора для создания 64-х битных версий плагинов.
Если появляется предупреждение CreatePackage.bat […] exited with code 1 , не надо беспокоиться, разве что вы хотите создавать плагины в формате AAX. Ошибка попросту говорит о том, что не установлен AAX SDK.
Предупреждение Cannot open include file: ‘ForcedInclude.h’: No such file or directory означает, что RTAS SDK не найден. Опять же, если RTAS не нужны, на это можно не обращать внимания.
В данной теме будет рассмотрен процесс создания ВСТ плагина, на примере создания эффекта кольцевой модуляции (ring modulation). Если Вам что-то непонятно — прочитайте вводную статью, или обратитесь за помощью на форум, где есть спец. раздел по программированию.
Справка: ring modulation — звуковой эффект или соответствующее устройство, реализующее перемножение двух исходных сигналов. Своё название получил из-за технической реализации — в аналоговой схеме он содержит кольцо из четырёх диодов.
Процесс разработки плагина разделён на четыре шага:
1 — Плагин, который не имеет эффекта.
2 — Модулятор с треугольной формой волны
3 — Модулятор с синусойдной формой волны
4 — Модулятор с синусойдной формой волны и контролем генератора низких частот.
За исключением стандартных библиотек SDK (необходимых в каждом ВСТ-плагине), все представленные алгоритмы разработаны специально для этого проекта.
Элементы SDK
SDK содержит много *.h, *.hpp, и *.cpp файлов, уже размещённых на своих местах. Из всех этих файлов только один *.cpp файл будет активно редактироваться. Стеинберг просит не редактировать другие файлы SDK (хост программы будут их использовать для корректной работы с плагином).
GUI
GUI — Графический интерфейс пользователя, система средств для взаимодействия пользователя с компьютером, основанная на представлении всех доступных пользователю системных объектов и функций в виде графических компонентов экрана. Вы можете сами создать дизайн своему плагину, если же Вы это не сделаете, т.е. ГУИ будет отсутствовать — хост программа автоматически сгенерирует визуализацию Вашего плагина и его контроллеров. В различных хост-программах техника визуализации плагинов отличается.
Давайте посмотрим на отображение нашего кольцевого модулятора в разных хост-программах:
Orion | WaveLab | Cubase |
Часть первая — Создание нефункционального плагина
Начинать надо с чего-то очень простого, то что интуитивно понятно. Нами был взят пример из SDK. Самый просто плагин — это тот который ничего не делает, т.е. никак не изменяет звук. Этот пример пустого плагина поможет нам объяснить некоторые важные функции, понимание которых необходимо для дальнейшей разработки плагинов.
Функции process() и processReplacing()
Хост-программа часто воспроизводит внешние аудио-файлы. Аудио воспроизводится с жёсткого диска и микшируется в программном миксере. На этом микшере есть параметры “send” и “insert”, как и в аналоговых микшерах. С помощью этих инструментов могут быть добавлены и использованы ВСТ плагины. Инструмент send отправляет аудио поток к плагину, перед достижением выхода на мастере (master output). Инструмент “insert” посылает сигнал через плагин, удаляя определённые параметры (используется в сайдчейне и вокодере ).
Выбор функции process() и processReplacing() зависит от того, хотите ли Вы использовать “send” или “insert” оперции в качестве аудиоэффекта. Эти функции задают характер взаимодействия между хост-программой и плагином.
Для первого примера, плагин создан для приёма звука (input) и последующей передачи, без изменений, на выход ( output). Он работает как insert эффект и использует функцию processReplacing().
Главная часть:
void AGain::processReplacing(float **inputs, float**outputs, long sampleFrames) float *in1 = inputs[0]; float *in2 = inputs[1]; float *out1 = outputs[0]; float *out2 = outputs[1]; while(—sampleFrames >= 0) (*out1++) = (*in1++) ; (*out2++) = (*in2++) ; > > |
О коде:
Когда функция начинает действовать она имеет **inputs и **outputs, которые соответствуют входящему и выходящему буферам, SampleFrames задаёт размер буфера. Значения входа ( input) и выхода (output) формируются из переменных in1 и in2 (которые представляют левый и правый входные каналы), и переменные out1 and out2 (левый и правый выходные каналы) соответственно.
До тех пор, пока sampleFrames больше нуля — производится копирование значений со входа ( input) на выход (output) и переход к следующему значению (используется функция «++»). Как только значение sampleFrames равно нулю, буфер окончен, функция завершает своё действие. Этот пример не прдеставлен в SDK документации, и требует понимания синтаксиса языка С++.
Представление аудио в SDK
Важно знать, то что аудио информация в плагинах находится (варьирует) между +/-1.
Перед тем как переёти к следующей части, мы создали плагин, в котором на выход одного канала посылается значение +1, на выход другого канала посылается значение -1.
Код:
void AGain::processReplacing(float **inputs, float **outputs, long sampleFrames) float *in1 = inputs[0]; float *in2 = inputs[1]; float *out1 = outputs[0]; float *out2 = outputs[1]; while(—sampleFrames >= 0) (*out1++) = (1) ; (*out2++) = (-1) ; > > |
После того, как мы откомпилировали этот код и записали выходящий сигнал, который обрабатывается нашим плагином, мы получили следующий результат:
Часть вторая — создание модулятора с треугольной формой волны
В качестве следующего шага от пустого плагина, будет создан модулятор треугольной формы волны. Эта часть должна дать фундаментальное понимание того, как к уже существующему плагину можно добавить новые возможности.
Во время написания кода плагина, используя в коде DSP алгоритмы (Цифровая обработка сигналов) — очень важно понимать код, что делается со входящим потоком. Перед напиманием кода желательно вооружиться карандашом и бумагой, и нарисовать блок-схему действия будущего плагина.
Блок схема нашего модулятора:
Было решено то что лучший способ создания тремоло треугольной формы волны — это использовать прерывания при достижении определённого уровня звука. Изначально переменная «тремоло» имеет значение ноль. Далее она проверяется условием — «больше значения 0.1 ?» Если нет -у кровню звука добавляется опр. значение (гейн). Значение переменной «гейн» может быть ассоциировано с определённым регулятором (используется GUI — Графический интерфейс пользователя)
В нашем случае переменная «тремоло» умножается на 10 и посылается на выход.
Программа же возвращается на второй этап и продолжает действие, выясняя, стало ли значение тремоло больше значения 0.1. Процесс повторяется до достижения значения 0.1, после чего значение «тремоло» обнуляется и всё начинается заново.
Давайте посмотрим на форму волны входящего аудио потока:
Треугольную форму волны (показано для примера):
И на форму волны выходящего аудио-потока:
double tremolo=0; void AGain::processReplacing(float **inputs, float **outputs, long sampleFrames) float *in1 = inputs[0]; float *in2 = inputs[1]; float *out1 = outputs[0]; float *out2 = outputs[1]; if ( tremolo < 0.1 ) tremolo=(tremolo+fGain); while(—sampleFrames >= 0) (*out1++) = (*in1++) * tremolo *10; (*out2++) = (*in2++) * tremolo *10; > > if ( tremolo >= 0.1 ) tremolo=0; while(—sampleFrames >= 0) (*out1++) = (*in1++) * tremolo; (*out2++) = (*in2++) * tremolo; > > > |
Этот код модулирует входящий аудио-поток, используя треугольную форму волны с частотой, заданной пользователем. Переменная «тремоло» описана снаружи функции processReplacing(), — это необходимо для возможности реинициализации каждый раз, когда аудио буфер полон (завершён). Для того чтобы позволить пользователю модулировать входящий поток с определённой частотой необходимо внести некоторые изменения. Допустим, наша хост-программа работает с частотой дискретизации 44100Hz (т.е. 44100 отсчётов в секунду), эти значения могут быть использованы для задания частоты модуляции в С++ коде. Ниже показаны номера отсчётов, которые соответствуют критическим значениям:
Деля значения отсчётов на половину, четверть, три четверти и полную секунду мы получаем номера «крайних» отсчётов для модуляции.
Если переменная «тремоло» использует код моделирования треугольной формы (переименованой в counter для упрощения), добавляя опр. значения, то в «крайних отсчётах» теоретически будет преодолено значение 1, что будет происходить в нашем случае каждую 1/8 секунду.
1/11020 = 0.000090744
Если это значение (11020ая от 1-цы) будет разделено на 8, то мы получим:
0.000090744 / 8 = 0.000011343
Это значение может быть использовано пользователем для контроля частоты модуляци. Новая переменная topFreq содержит в себе максимальное значение амплитуды, после обработки модулятором. Переменная fГейн, которая содержит значения от 0 до 1, может быть умножена на переменную topFreq, для генерирования пропорции 1kHz на лету.
float counter = 0; double quarterSec = 0.000011343; double topFreq = 1000; void AGain::processReplacing(float **inputs, float **outputs, long sampleFrames) float *in1 = inputs[0]; float *in2 = inputs[1]; float *out1 = outputs[0]; float *out2 = outputs[1]; while(—sampleFrames >= 0) counter = (counter + (quarterSec*(topFreq*fGain))); if (counter > 0.5) counter = 0; > (*out1++) = (*in1++ * counter); (*out2++) = (*in2++ * counter); > > |
3 — Модулятор с синусойдной формой волны
Замена треугольного модулятора синусойдной волной
Это необходимо сделать для того чтобы добиться более богатого гармониками тембра звука. Эти гармоники, после модулирования со вторым сигналом, производят вдое больше гармоник благодаря природе «сложения и разницы» кольцевой модуляции. Звук будет более музыкальным и насыщенным. Синусоидная волна может быть сгенерирована в нашем алгоритме с помощью переменной counter. Благодаря добавлению ранее использованого кода, синусойда может быть сгенерирована из серии цифр. Переменная counter должна иметь значения приблизительно от нуля до двух пи (3.14), для того чтобы создать один период синусойды. Ниже расположены диаграммы, которые показывают: 1) Сгенерированую синусоидную волну (ампдитуду) 2) Быстрое преобразование Фурье простой синусойдной волны (спектрограмму):
Этот небольшой эксперимент был сделан для того чтобы показать то что при простом искажение волны , БПФ показывает гораздо больше гармоник, хотя до этого была только одна базовая частота. (Синусоидная форма волны имеет меньше всего гармоник, при искажении формы добавляются гармоники, квадратная форма волны имеет больше всего гармоник. Например эффект дисторшен применяется для обогащения входящего потока гармониками путём искажения формы волны от синусойдной к более квадратной, по сути тут это и было сделано, путём завышения уровня сигнала и как следствие его искажения).
Для лучшего понимания ознакомтесь с блок схемой:
Операция while loop ( переменная sampleFrames ) — это петля, которая контролирует использование аудио буфферов с хоста. Переменная sampleFrames содержит в себе кол-во отсчётов в каждом аудио-буфере. Для каждого отсчёта, переменная sampleFrames происходит сравнение его значения с нулём. При достижении нуля буфер обнуляется и новый, полный буфер запрашивается у хоста, с последующим стремлением к нулю.
Чтобы лучше понять, ознакомтесь с диаграммами:
Синус с небольшим периодом, который используется для модулирования входящего сигнала:
Результат на выходе:
float counter = 0; double quarterSec = (0.000570162/4); double topFreq = 10000; void AGain::processReplacing(float **inputs, float**outputs, long sampleFrames) float *in1 = inputs[0]; float *in2 = inputs[1]; float *out1 = outputs[0]; float *out2 = outputs[1]; while(—sampleFrames >= 0) counter = (counter+(quarterSec*(topFreq*fGain))); if (counter > (2*3.14159)) counter -= (2*3.14159); > double sinMod = sin(counter); (*out1++) = ((*in1++)*(sinMod/2)); (*out2++) = ((*in2++)*(sinMod/2)); > > |
4 — Модулятор с синусойдной формой волны и контролем генератора низких частот.
В качестве финального обновления плагина, будет добавлен генератор низких частот ( LFO ), с помощью которого будет контролироваться частота модуляции. К GUI будут добавлены две ручки, для контроля уровня и частоты LFO.
Блок схема показывает то что генерируются два независимых синусоидных сигнала. Один является модулирующим с опр. частотой, и был создан также как и в более ранних примерах. Второй является генератором низких частот ( LFO ). Пользователь сможет контролировать амплитуду и частоту сигнала, изменяя значения контролируемых через GUI переменных countertoo.
float counter = 0; float countertoo = 0; double quarterSec = (0.000570162/4); double topFreq = 10000; double LFOFreq = 10; void ADelay::processReplacing(float **inputs, float **outputs, long sampleFrames) float *in1 = inputs[0]; float *in2 = inputs[1]; float *out1 = outputs[0]; float *out2 = outputs[1]; while(—sampleFrames >= 0) countertoo = (countertoo + (quarterSec*(LFOFreq*fFeedBack))); if (countertoo > (2*3.14159)) countertoo -= (2*3.14159); > double nuMod = sin(countertoo); counter = (counter + (quarterSec*(topFreq*fDelay)+(nuMod*(fOut/8)))); if (counter > (2*3.14159)) counter -= (2*3.14159); > double sinMod = sin(counter); (*out1++) = ((*in1++)*(sinMod/2)); (*out2++) = ((*in2++)*(sinMod/2)); > > |
C помощью подобного кода можно задавать имена переменных, что позволяет хосту идентифицировать переменные кода и привязать их к опр. объекту GUI.
Автор статьи: Toby Newman
Если Вы столкнулись с трудностями при прочтении материала — то это повод задать вопросы на форуме, в разделе «программирование».
1 комментарий
Данная статья пишется с целью помочь Вам написать собственный ВСТ ( VST ) плагин.
Введение
Для начала небольшая техническая справка:
Технология ВСТ-плагинов была разработана компанией Steinberg и представляет собой .dll файлы, которые создаются с помощью языка объектно-ориентированого программирования ( С++, Delphi). Для синтеза и обработки звука они должны быть подключены к любой хост-программе. Плагины совместимы со всеми хост-программами, которые запускаются в определённой операционной системе, т.е., соответственно часто пишется несколько различных версий одного плагина под разные операционные системы.
Программирование для чайников
Существуют программы, которые не требуют знаний языков программирования и которые позволяют создавать vst плагины:
это SynthMaker и SynthEdit. Пользователь собирает свой ВСТ-плагин из готовых, заранее запрограммированых, элементов. Разумеется, таким методом вряд ли возможно создать достойный и выделяющийся плагин. Появление этих программ уже спровоцировало наплыв бесплатных, однообразных по звучанию и дизайну плагинов. Однако не рассмотреть эти программы было бы неправильно. Они могут послужить отправной точкой для Вас, дав необходимую практику на начальном уровне.
Модульные синтезаторы
В разделе «Муз. программы» — «Функциональность ВСТ» Вы можете найти ряд программ, в которых Вы сможете сами программировать синтезаторы в рамках хост-программы (иногда плагина). Также там есть программы, написанные специально для анализа Ваших ВСТ плагинов, однако вернёмся к модульным синтезаторам. Если в обычном плагине-синтезаторе звука пользователь изменяет звучание с помощью уже готовых «триггеров, пресетов и ручек», то в модульных синтезаторах он может сам создавать элементы, влияющие на темброобразование плагина (ADSR огибающие, осциляторы, генераторы, модулчторы и т.д.). Овладение такими синтезаторами также может быть полезно для понимания процесса и основ того или иного синтеза звука. Лучшей программой в этой области пожалуй является Reactor.
Теоретическая составляющая
Для программирования ВСТ-плагинов Вам нужно понимать основы синтеза звука. На нашем сайте есть ряд статей о саунд дизайне и синтезе звука а также подробное описание создания примитивного FM синтезатора. Также Вам могут понадобится базовые знания, которые Вы можете подчеркнуть в Энциклопедии и в целом на нашем сайте. По сути, если Вы знаете ранее перечисленные ящыки программирования, то с информацией, предоставленной на нашем сайте, у Вас не должно возникнуть проблем при создании ВСТ интсрументов. Если же Вы не владеете этими языками программирования — то ими нужно овладеть. К можалению наш сайт не специализируется на программировании. В этом и заключается специфика создания ВСТ плагинов и другого ПО: нужно обладать знаниями как в области синтеза и обработки звука, так и в области объектно-ориентированого программирования.
Создание ВСТ плагина
sdk
Как уже писалось — основателем ВСТ технологии является компания Steinberg. Вам нужно скачать sdk пакет (классы на C++) с официального сайта из раздела Support > 3rd party developer section, предварительно пройдя регистрацию. На данный момент последней версией sdk является третяя, Вы можете скачать её с нашего сервера, однако нет гарантии того, что к моменту прочтения этой статьи стеинберг не разработал новую версию sdk (скачивание которой на данный момент бесплатно).
Справка: SDK (от англ. Software Development Kit) или «devkit» — комплект средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, видеоигровых консолей, операционных систем и прочих платформ.
Примеры кода
Delphi:
ADelay — перевод на Delphi (с оригинальной sdk) простого примера реализации дилея. Не содержит sdk файлы, так что их надо скачать отдельно.
VSTXSynth — перевод на Delphi (с оригинальной sdk) простого примера реализации синтезатора. Не содержит sdk файлы, так что их надо скачать отдельно.
DExample — простой пример плагина без редактора, также включённый в sdk (но на С++). Архив включает в себя файлы sdk, которые нужно откомпелировать.
Doubler — этот пример имеет своё собственное окно редактирования.
tutorial — Туториал о том как программировать простой ВСТ плагин на дельфи, основывается на 1.x версии sdk.
С++
VST4Borland — пример простого плагина, не содержит каких-либо sdk файлов.
На форуме есть тема, в которой публикуются открытые коды различных программ.
Программирование на С++
Компиляция плагина (VST 1 и 2): чтобы создать VST плагин в C++, для начала нужно скачать sdk от Стеинберга. Далее нужно создать .def файл, который должен содержать в себе как минимум след. строку:
Если будете использовать какой-то из VCL элементов — нужно предварительно побеспокоиться о том что Ваш плагин не зависнет хост-программу (пользуйтесь спец. плагинами анализа, есть в файле «функциональность ВСТ»).
Также, стеинберг разрабатывает VST GUI, который представляет из себы набор ВСТ-классов, которые могут быть использованы как граффический интерфейс. В VST GUI входят классы кнопок, слайдеров и дисплеев.
Резюме
В СНГ достаточно высокий уровень пиратства, что создаёт свои качества музыкального рынка. На данный момент в РУ-нете лично я не нашёл достойных статей о программировании ВСТ-плагинов. Почему программисты не очень активны в этой области лично я не знаю. В любом случае, я надеюсь на то что эта скромная статья с самыми начальными основами будет способствовать развитию музыкального рынка, точнее рынка музыкального программного обеспечения. Я буду стараться далее давать больше информации о программировании ВСТ плагинов, и в целом о той части программирования, которая относится к созданию музыкального ПО на нашем форуме, в разделе «Программное обеспечение» — «Программирование».
Если у Вас есть вопросы, или Вы хотите поделиться опытом — не стесняйтесь их задать в этом разделе, тем самым Вы поспособствуете более широкому и качественному развитию музыкальной индустрии СНГ.
После установки VST плагинов в выбранную директорию, пришло время добавить их в секвенсор FL Studio, для постоянного использования и быстрого доступа к плагину. Как ты уже понимаешь, VST плагины в FL Studio делятся на две глобальные категории: это инструменты (синтезаторы, сэмплеры, ромплеры, различные станции и т.д.) и эффекты (которые включают в себя эффекты и процессы обработки, и различные анализаторы аудио). Так же с выходом FL Studio 12, многое изменилось в процессе добавления плагинов в доступ в секвенсоре, со времен FL Studio 11 или 10. Кому-то добавление плагинов, да и в целом работа в FL Studio 12, кажется очень неудобной, но все же, это человеческая природа – все непривычное нам чуждо и не комфортно, даже если все теперь работает быстрее, находиться в более близком доступе и функционирует проще.
Эта статья послужит руководством к двум случаям и решением к двум проблемам: как добавить vst плагин в FL Studio 12 и как добавлять плагины в FL Studio 11 или 10. И теперь подробнее о каждом…
Как добавить vst плагин в FL Studio 11 или 10
В 11-й версии, перед тем как добавить какой-то плагин, будь то синтезатор или эффект, нужно указать, какую ты все-таки назначил директорию для установки VST плагинов (о которой я детально рассказывал ТУТ). И указывать нужно вот в этой вкладке настроек File Settings FL Studio 11 или 10:
И здесь нужно указать ту самую папку, куда и были установлены VST плагины для FL Studio:
Почти все, теперь для того что бы получить доступ к ново-установленным плагинам-инструментам, нужно раскрыть меню добавления или замены канала на панели каналов, и нажать строчку «more», находящеюся в шапке списка инструментов, следующим образом:
Появиться меню менеджера плагинов и в самом низу есть кнопочка refresh, жмем ее появятся два способа обносить список ново-установленных плагинов:
Fast Scan– быстрое сканирование плагинов без их проверки на дееспособность и определения характеристик vst плагина.
Scan & Verify – сканирование с проведением всех вышеперечисленных операций – занимает очень много времени, при нерабочих плагинах выдает ошибки и ДА, случается страшное – закрывает FL Studio cкритической ошибкой, но это в очень редких случаях, поэтому сильно бояться не стоит.
Рекомендую провести Fast Scan– режим быстрого сканирования для выявления в доступ FL Studio новых плагинов из указанной директории.
Итак, останется тот же менеджер плагинов, но уже с новыми (отмеченными красным шрифтом) плагинами в этом списке, и вот, к примеру, среди них наш старый знакомый Nexus, так же отмеченный красным:
Пустые квадратные поля слева от названия – это окна для отметки «Favorite» (Избранное) этих плагинов. При отметке буквой F, плагин будет в будущем доступен вот в этом меню добавления или замены каналов (инструментов).
ВНИМАНИЕ! Здесь отмечай только то, что нужно для тебя именно в ИНСТРУМЕНТАХ, то есть именно vst плагины-инструменты (синтезаторы, сэмплеры, ромплеры, станции и т.д. - что генерирует звук).
И теперь все плагины-инструменты будут всегда находиться под рукой во вкладке Replace и Insert.
С эффектами проделывается то же самое, я думаю ты знаешь уже как добраться до такого же меню в VST эффектах, так как там же мы и достаем новые плагины обработки (Микшер- выбираем слот и жмем на меню выбора плагина):
Остальной процесс аналогичный, выбираем и помечаем буквами «F» только те ЭФФЕКТЫ, которые нужны тебе в меню выбора плагинов обработки на микшере.
Конечно, в 11 версии FL Studio как и в 12 есть Plugin Picker и Plugin Database (база данных плагинов) и доступ к плагинам можно иметь более быстрый.
Для начала стоит, все-таки, достать ново-установленный плагин на панели каналов через Replace или Insert и в свертке главного меню канала, и пока только найти строчку «Add to plugin database», не нажимая ее… Перед тем как кликнуть данную строку нужно слева, в браузере FL Studio (если его нет то быстрый доступ к нему здесь:
И если все еще не появился, то он просто скрыт, и его нужно оттянуть от крайней левой части ползунком:
Итак, в браузере нужно найти папку Plugin Database, затем Generators (так как Nexus все таки какой-никакой генератор звука), и теперь назначить ту конечную директорию, в которой и будет сидеть назначаемый в базу данных плагин, я выберу папку Misc., хотя в случае с Nexus можно вообще создать там отдельную папку Romplers (сделать это конечно нужно будет через браузер Windows). И вот с такой картиной в браузере FL Studio 11, жму ту самую строчку «Add to plugin database»:
И вот он есть у меня еще в более быстром доступе и в Plugin Database и в Plugin Picker, который открывается щелчком колесика мыши по пустому рабочему пространству (заставке рабочего стола) FL Studio 11:
И в Plugin Picker и в Plugin Database все аккуратно разделено на генераторы и эффекты, поэтому заблудиться там не возможно.
Как добавить vst плагин в FL Studio 12 (рекомендую обновить до 12.1.3)
В последнем обновлении, по крайней мере, на сентябрь 2015 года, 12 версия FL Studio вернула менеджер плагинов и его меню, что по первому релизу FL Studio 12 полностью отсутствовало.
Поэтому первая часть процесса добавления плагинов в FL Studio 12 будет немного отличаться, но и это стало куда удобнее, а вторая часть процесса схожая и аналогичная с предыдущей версией, и ты этот процесс уже знаешь.
Первым делом то же самое меню Options – File Settings.
И вот где мы видим теперь обитает plugin manager (менеджер плагинов). От нам как раз и нужен сейчас, жмем негодяя!)…
И знакомимся с новым менеджером, все здесь просто, очевидно и немного знакомо:
1 – То самое сканирование плагинов из указанных ниже директорий
2 – Эта функция активирует проверку работоспособности и характеристик плагинов.
3 – Здесь ты можешь прописать директорию, где потенциально находятся VST плагины, или же проследовать функцией Browse к этой директории.
4 – Выделить ново-добавленную директорию
5 – Добавить директорию вписанную или выбранную выше.
Сканировать с проверкой или без проверки, выбирать тебе – результаты дадут о себе знать в списке, без проверки, возможно нужно будет назначать тип плагина (инструмент или эффект) во вкладке менеджера Plugin Info. Но добавлять плагины в доступ из списка нужно таким же способом – помечаем буквами “F”. На этот раз и эффекты и инструменты сразу, если они определены по своему типу. И оставшаяся часть процесса точно схожа с добавлением плагинов в FL Studio 11 или 10, которая была описана выше! Работа с базой данных и Plugin Picker точно такая же и так же отмеченные плагины эффекты будут помещены в категорию эффектов, инструменты в генераторы. Вот и весь процесс добавления этих плагинов, я думаю, вряд ли здесь есть что-то слишком сложное!
Кроме данной статьи на нашем сайте и YouTube канале есть видео-перевод SeamlessR, где он подробнее рассказывает о работе Plugin Database (базы данных VST плагинов FL Studio 12 и о Plugin Picker, смотреть подробности и видео ЗДЕСЬ
Читайте также: