Створення аудіоплагіна, частина 3

    Всі пости серії:
 Частина 1. Введення та налаштування
 Частина 2. Вивчення коду
 Частина 3. VST і AU
______________________________________________________________
 
У цьому пості ми завершимо необхідну настройку середовища розробки і підготуємо допоміжне оточення.
 
 VST і AU
 
У WDL-OL дуже просто перетворити додаток в VST або AU. Щоб створити VST на Маку, змініть схему: VST2 → My Mac 64-Bit . Натисніть Run . Помилок бути не повинно, але нічого і не запустилося! Відкрийте Finder і зайдіть в ~ / Library / Audio / Plug-Ins / VST . Там побачите MyFirstPlugin.vst Якщо папка Library не видно в домашній директорії, натисніть Cmd + Shift + G, вставте вказаний шлях і тисніть Enter.
 
Наступна секція відноситься до Mac. Версія для Windows нижче.
 
 Налагодження в Xcode
 
Щоб запустити плагін, нам потрібен хост. Скачайте бажано 64-бітну версію REAPER і перетягніть його в папку Applications / Його можна використовувати без будь-яких обмежень 60 днів, після цього вас попросять придбати ліцензію (але він продовжить працювати). Ми хочемо налаштувати все так, щоб коли ми жали Run в Xcode, запускався REAPER і відладчик. Ми зможемо використовувати брейкпоінт так само, як робили це з додатком.
 
Зайдіть в Product → Scheme → Edit Scheme… , виберіть Run у списку ліворуч. У підпункті Executable виберіть Other… :
 
 
 
Використовуйте діалогове вікно, щоб знайти REAPER64.app . Повинно виглядати так:
 
 
 
Тисніть OK , і знову Run . Запуститься REAPER. Щоб створити в ньому нову доріжку для звуку, натисніть Cmd + T (Ctrl + T в Windows), і на ній — кнопку FX:
 
 
 
У вікні, введіть myfirstplugin , і наш плагін знайдеться:
 
 
 
Вибирайте, тисніть ОК . Він повинен з'явитися. Перевага використання REAPER в тому, що тут ми можемо обробляти плагіном будь-який звуковий файл і відразу чути результат. Це набагато цікавіше, ніж весь час слухати з входу мікрофону. Крім цього, тут можна використовувати різні інші плагіни, в тому числі для аналізу вихідного сигналу нашого плагіна. Це стане в нагоді, але пізніше.
Скачайте цей файлик і перетягніть його на доріжку в REAPER. Поставте його впритул до лівої кордоні доріжки. Натисніть пробіл, для відтворення. Чи стане чути низький звук:
 
 
 
Для зручності було б добре закільцювати звук, щоб він нескінченно грав, поки знову не натиснемо на пробіл. Затисніть Cmd (Shift на Windows) і два рази клацніть по файлу на доріжці. Світлим прямокутником виділиться часовий діапазон. Натисніть R, щоб закільцювати його, і запускайте. Покрутите ручку плагіна — гучність звуку змінюється!
 
 
 
При обертанні ручки можуть бути чутні клацання. Це через те, що ми не інтерполіруя значення і створюємо в сигналі різкі перепади. Тепер натисніть в Xcode Stop , щоб закрити REAPER.
 
Створити AU версію просто: змініть таргет на AU. Колишнім чином зміните схему Run , щоб запускався REAPER.app , і тисніть Run . Плагін скомпіліруется і його файл з'явиться в ~ / Library / Audio / Plug-Ins / Components . Запуститься REAPER і можна буде виконати всі ті ж речі, що і з VST версією.
 
Всі ці запуски, створення треків і закидання на них полігонів постійно повторюються. Я віддаю перевагу оптимізувати подібні речі. Коли в REAPER все готово (звук закільцьованим і плагін вже висить на треку), збережіть проект (Cmd + S на Mac і Ctrl + S в Windows) в папку проекту в Xcode (~ / plugin-development/wdl-ol/IPlugExamples / MyFirstPlugin / ) і назвіть reaper-project.RPP .
 
У вікні Edit Scheme виберіть VST2 вгорі. Потім ідіть в закладку Arguments і клацніть на плюс під рядком "Arguments Passed On Launch" . Перетяните reaper-project.RPP з папки проекту в нову сходинку:
 
 
 
Те ж саме треба повторити для AU. Якщо хочете, можна взагалі створити окремий проект для AU версії. Тепер кожен раз REAPER буде запускатися вже з усім барахлом. Здорово!
 
Якщо хочеться, можна погратися з брейкпоінтамі і відстежувати значення змінних плагіна, навіть незважаючи на те, що він не запущений безпосередньо в Xcode.
 
 Налагодження в Windows
 
Відкривайте Explorer і заходите в C: \ Program Files . Створіть там нову папку з ім'ям vsthost . Скачайте програмку Savihost (нам знадобиться savihostx86.zip ), розархівуйте і скопіюйте файл savihost.exe в цю папку:
 
 
 
У Visual C + + правим клацанням по MyFirstPlugin-vst2 виберіть Set as StartUp Project . Тисніть F5 , плагін запуститься в Savihost:
 
 
 
Якщо нічого не з'явилося, поклацати віконця на панелі завдань, він повинен бути там.
Потрібно зробити ще одну річ: зараз Savihost ловить всі виключення і намагається зробити так, щоб плагін не впав. Це здорово, якщо ми виступаємо на сцені, але зараз нам потрібно його налагоджувати. У Visual C + + правим кліком по MyFirstPlugin-vst2 виберіть Properties . У вікні, виберіть Debugging . Праворуч до параметрів допишіть
/noexc /noft
, як на картинці (не загубити пробіли):
 
 
 
Тепер винятку будуть передаватися отладчику Visual C + +.
 
Якщо спробувати запустити VST3 версію, то може вискочити таке повідомлення (не німецькою, напевно):
 
 
 
У VST3 SDK, який ми завантажили раніше, в папці \ bin лежать архіви. У них містяться установники, які створять необхідні папки для 32 і 64-бітових систем (C: \ Program Files (x86) \ Steinberg \ VST3PluginTestHost \ і C: \ Program Files \ Steinberg \ VST3PluginTestHost \ відповідно) і скопіюють туди потрібні версії файлу VST3PluginTestHost.exe . При установці ніякі параметри міняти не обов'язково.
 
В принципі, в Windows теж можна перевірити працездатність плагіна «в реальних умовах» вручну (якщо є ідея, як автоматизувати, буду радий додати в статтю). У папці проекту є підпапка \ build-win , в якій, крім іншого, знаходяться . Dll і . Vst файли плагінів. У налаштуваннях REAPER Options → Preferences → Plug-Ins → VST можна додати директорії, що містять скомпільовані файли плагінів:
 
 
 
 Блокування попереджень для коду бібліотек на Mac
 
Версія для Windows буде далі.
 
Як можна помітити, нам видається купа попереджень:
 
 
 
Попередження дуже корисні, так як звертають нашу увагу на можливі проблеми і баги в коді. В даному випадку 22 попередження відносяться до коду використовуваної нами бібліотеки, так що ми не можемо просто виправити їх, оскільки якщо коли-небудь ми завантажимо свіжу версію цієї бібліотеки, всі виправлення доведеться вносити знову. Але і залишити все як є теж не годиться: можна легко пропустити 23-у помилку, яка буде ставитися вже до коду нашого плагіна.
 
На мій погляд, кращим рішенням буде заблокувати ці попередження, щоб коли з'являється нове попередження, ми знали, що воно має відношення до нашого коду. Для цього ми можемо використовувати прапор компілятора
-w
. Клацніть в навігаторі на синю іконку проекту, виберіть таргет APP , зайдіть в Build Phases і розкрийте секцію Compile Sources . Відзначте всі рядки, крім MyFirstPlugin.cpp , зробіть подвійне клацання по стовпці Compiler Flags , надрукуйте
-w
і натисніть Enter :
 
 
 
Повторіть те ж саме для VST2, AU і інших потрібних Таргет.
Створіть збірку знову. Ми побачимо три попередження. Validate Project Settings виправити легко: подвійне клацання по ньому, потім зняти всі галочки і клацнути Done :
 
 
 
Тепер залишилося два попередження:
 
 
 
Те, яке стосується кодування InfoPlist.strings , можна виправити, відкривши файл і конвертувати його в UTF-8 за допомогою Utilities справа:
 
 
 
Попередження extra tokens забирається доповненням директиви
#include
в MyFirstPlugin.h :
 
 
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wextra-tokens"
#include "IPlug_include_in_plug_hdr.h"
#pragma clang diagnostic pop

 
Тепер в таргет APP і AU попереджень немає. А при складанні VST2 вискакує попередження про один параметр в оголошенні функції main . Виправимо це доповненням директиви
#include
в MyFirstPlugin.cpp (не в. H!):
 
 
#include "MyFirstPlugin.h"
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmain"
#include "IPlug_include_in_plug_src.h"
#pragma clang diagnostic pop
#include "IControl.h"
#include "resource.h"

 
Створіть збірку і переконайтеся, що все чисто!
 
 Блокування попереджень коду бібліотек в Windows
 
В цілому VS C + + видає інші попередження, ніж GCC / LLVM на Маке. Список всіх попереджень VS C + + 2010 знаходиться на цій сторінці зліва.
 
Наприклад, якщо ви бачите попередження С4101 і С4129 про який-небудь файлі в бібліотеці WDL, їх можна ігнорувати: допишіть
#pragma
перед
#include
в
MyFirstPlugin.h
:
 
 
#pragma warning( suppress : 4101 4129 )
#include "IPlug_include_in_plug_hdr.h"

 
 
Suppress
означає, що попередження ігноруватимуться тільки для наступного рядка (тобто для
#include
). Так що попередження, що стосуються всього іншого коду у файлі, ви будете отримувати, а це добре. Зверніть увагу, що треба писати тільки номер попередження, без «С». Те ж саме можна зробити і в MyFirstPlugin.cpp :
 
 
#pragma warning( suppress : 4101 4129 )
#include "IPlug_include_in_plug_src.h"

 
Це стосується файлів . H з бібліотеки.
Якщо ви отримуєте попередження про конкретний . Cpp , знайдіть його в project explorer, по правому клацанню зайдіть в Properties , у вікні зліва виберіть C / C + + → Advanced . Праворуч повинна бути опція Disable certain warnings :
 
 
 
Тут можна додати список номерів попереджень, розділених крапкою з комою. Як бачите, відладчик вже ігнорує чотири попередження для цього файлу. Зверніть увагу, що дані зміни вплинуть тільки на цей конкретний . Cpp файл. Так що треба буде позначити номери попереджень для решти файлів і так само додати їх у відповідні налаштування.
Коли будете створювати новий проект, використовуйте скрипт duplicate , щоб не довелося знову вносити всі ці корективи.
 
Красотища! Ми розгребли всі попередження: приховали зайві і полегшили спостереження за важливими для нас. Наступного разу ми забруднити руки в написанні брудного дісторшен.
 
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.