Създаване на аудио добавки, част 1

Тази публикация е първата от поредица от преводи на ръководството на Martin Fincke за писане на ваши собствени аудио добавки. Отличителна черта на този материал е липсата на зависимост от формата на плъгина и платформата за неговото използване. Вниманието е фокусирано върху общата структура на аудио плъгина. След това алгоритмите се обвиват в абстрактен слой за сглобяване във формати VST, VST3, AU, RTAS, AAX или в отделно приложение. Самият Мартин работи повече на Mac, но ръководството също така включва всички необходими стъпки за разработка на Windows.

Аудио добавките са програми, които се зареждат в хоста (като Ableton Live, Logic или REAPER). Те обработват аудио и/или MIDI данни. Те обикновено имат GUI (графичен потребителски интерфейс). Ето три примера (U-He Zebra, Sonalksis FreeG и D16 Decimort):

върху

Както можете да видите, има контроли в GUI (най-често това са някакви копчета), които променят начина, по който плъгинът обработва входящите данни. Има и набор от предварителни настройки (presets - на екранните снимки се наричат ​​Combo и Emulator), които съхраняват позициите на копчетата и други параметри.

Нека започнем с изкривяването - това е доста прост плъгин. След това ще направим такъв субтрактивен синтезатор, стъпка по стъпка:

Ще използваме C++ и библиотеката WDL-OL. Базиран е на библиотеката Cockos WDL (произнася се whitl). Тя върши много работа за нас, ето най-важните точки:

  • Съдържа готови Xcode / Visual Studio проекти
  • Създава плъгини във формати VST, AudioUnit, VST3 и RTAS от нашия код. Просто изберете формата и щракнете върху изпълнение!
  • Създава 3264-битови версии
  • Изпълнява вашия плъгин като самостоятелно приложение на Windows или MacOS
  • Съдържа много различни GUI елементи, които се използватв аудио добавки

Също така в тази библиотека има някои често използвани алгоритми, като повторно семплиране. Тук в тази нишка във форума има много екранни снимки на плъгини, написани с WDL.

Различните формати на плъгини правят повече или по-малко едно и също нещо. Поради това обикновено има много копиране и поставяне в кода. Като програмист трябва да се опитате да не се повтаряте, така че рано или късно ще напишете свой собствен абстракционен слой върху различни формати. Но това вече съществува под формата на рамката IPlug, която е част от WDL. Това е най-досадната част от процеса на разработка, така че сега можем да се съсредоточим върху интересни неща като:

  • Аудио и MIDI обработка
  • Външен вид на приставката
  • Интегриране на хост (автоматизация, предварително зададени настройки и др.)

Как да го направим

„Преследването е по-добро от плячката“ – Х. П. Бакстър

В програмирането самият резултат вече е награда, но ние научаваме по пътя към резултата. Това ръководство няма да съдържа дълги списъци с идеални решения. Ще започнем с това, което работи, и постепенно ще го развиваме, срещайки различни проблеми. Недостатъкът е, че ще пишете код, който по-късно ще замените с по-добър. Но програмистите не са непознати за това. Първият плюс: няма да има преливаща радост, защото ще подходим към решението постепенно, вместо да правим всичко на един замах. Второто е, че ще получим ценни познания по програмиране.

Тази поредица от публикации не е за решаване на проблеми с матан без хартиен калкулатор. Става въпрос за правенето на добър софтуер, който можете да дадете на вашия приятел продуцент, за да угои баса.

Какво ни трябва

  • Mac с Xcode 4 или по-нова версия, илиWindows с Visual Studio C++ 2010 или по-нова версия
  • Известно разбиране на C++ (синтаксис, указатели, основи на ООП, механизми на паметта). Може би сте чували, че C++ е тежък език, но няма да прекаляваме с него.
  • Някои общи познания за [цифровото] аудио: какво представляват амплитудата и честотата, какво прави филтърът, как аудиото се представя при определена честота на дискретизация и битова дълбочина. Ако сте правили музика преди, тогава най-вероятно вече знаете всичко това.
  • Интерес към цифровата обработка на сигнали и разработването на GUI: това са двете основни теми на този урок. Ако нямате никакви познания по цифрова обработка на сигнали, докато се развивате, ще трябва да прочетете допълнителен материал, за да попълните празнините. Ще се опитам да дам връзки за допълнително четене.

Полезни ресурси

Няколко връзки, които може да ни бъдат полезни:

  • Препълване на стека: Тук можете да разберете например какво означават странните предупреждения, които ще получите от компилатора.
  • Ръководство за DSP: много добра безплатна книга (на английски), обхваща повече материал, отколкото ни е необходим. Ако не разбирате никаква концепция за обработка на сигнали, прочетете тази тема в нея.

Сега е време да настроите всичко и да го подготвите.

Инсталиране и конфигуриране на WDL-OL

Сега ще инсталираме библиотеката WDL-OL и нейните зависимости. След това ще стартираме примера, само за да сме сигурни, че всичко работи както трябва.

Материалът в следващия раздел е основно за настройка на Mac. Прозорците ще бъдат малко по-ниски.

Настройка на Mac OS X с помощта на Xcode 4

Преди да започнем, има няколко нови неща, които трябва да изтеглим и инсталираме. Малко е досадно, но трябва да го направите само веднъж.

Зарежда се WDL-OL

Отворете терминала и въведете следните редове, за да създадете нова папка във вашата домашна директория и да се преместите там:

Нека заредим WDL-OL:

git клонинг https://github.com/olilarkin/wdl-ol cd wdl-ol git проверка 0a360c90b3460717210eeaee7464bc7009c9a5ba.

Тези редове могат да се копират и поставят. Основното нещо - не забравяйте точката в края! Тогава със сигурност ще използвате същата версия на 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<1 подпапка 5>). В допълнение, за VST3 ще ви трябватbase/source,pluginterfacesиpublic.sdk/source. Копирайте от както следва:

добавки

Моля, обърнете внимание, че папкатаpublic.sdkще трябва да бъде създадена ръчно. Ето как трябва да изглежда вашето дърво на папките в крайна сметка:

създаване

Сега отворетеcommon.xcconfig(трябва да се отвори в Xcode) и направете следните промени:

CERTIFICATE_ID = Вашето име

// Коментирайте този ред: // COMPILER = com.apple.compilers.gcc.4_2 // Разкоментирайте този ред: COMPILER = com.apple.compilers.llvm.clang.1_0

// Добавете тези редове: VST_FOLDER =

/Library/Audio/Plug-Ins/Components // Коментирайте тези: //VST_FOLDER = /Library/Audio/Plug-Ins/VST //VST3_FOLDER = /Library/Audio/Plug-Ins/VST3 //AU_FOLDER = /Library/Audio/Plug-Ins/Components

Инсталирайте SDK 10.5

За да го инсталирате, трябва да изтеглите Xcode 3.2.6. След като го изтеглите, монтирайте файла.dmg, отворете Terminal.app и въведете

отворете /Томове/Xcode и iOS SDKs/Пакети/

Ще се отвори прозорец за търсене и ще има файл с имеMacOSX10.5.pkg. Кликнете върху него два пъти. Ако имате OS X версия 10.8 или по-нова, ще видите съобщение, че програма от неизвестен разработчик не може да бъде инсталирана. В този случай щракнете с десния бутон върху файла, в менюто трябва да натиснетеOpenи да потвърдите, че наистина искате да инсталирате софтуера. Когато инсталирате, изберетепромяна на местоположението за инсталиране, щракнете върху устройството, на което искате да инсталирате, за да можете да изберете директория в него. Инсталирайте например в папкатаDownloadsв потребителската папка. След като инсталацията приключи, на избраното място ще се появи нова папкаMacOSX10.5.sdk. Въведете следното в Terminal.app:

Прозорецът за търсене ще се появи отново. Плъзнете папкатаMacOSX10.5.sdkв нея. След рестартиране на Xcode, старият SDK трябва да е наличен в Xcode 4. Уверете се, че архивиратеMacOSX10.5.sdkнякъде: ако актуализирате Xcode до по-нова версия, може да се наложи да повторите тези стъпки.

Изпълнение на тестов проект

В терминала отидете в папката с примери:

Стартирайте скриптаduplicate, за да създадете първия си плъгин (заменете YourName с нещо свое):

./duplicate.py IPlugEffect/ MyFirstPlugin Вашето име

Сега има нова папкаMyFirstPlugin. Влезте в него и отворетеMyFirstPlugin.xcodeproj. Изберете целПРИЛОЖЕНИЕ:

създаване

#define DEFAULT_INPUT_DEV "Вграден микрофон"

Щракнете върхуИзпълни. Изскачат няколко грешкилинкер:

Лесно се поправят. Върнете се към настройките за изграждане на вашия проект (уверете се, че сте избрали вашия проект, а не някаква друга цел) и променете настройкатаImplicitly Link Objective-C Runtime SupportнаНе:

върху

Щракнете върху Изпълнение отново. След няколко секунди плъгинът ще се появи като самостоятелно приложение:

върху

Проверка на версията на AudioUnit с логика

Ако нямате Logic, можете да използвате безплатния инструмент auval за проверка. Уверете се, че изграждането на AU Target е успешно, отворете терминал и въведете:

auval -a 2> /dev/null grep MyFirstPlugin

Трябва да изведе нещо подобно:

aumu Abcd Efgh - Вашето име: MyFirstPlugin

Ако Logic или auval не могат да намерят AU (и други хостове като REAPER могат), влезте в настройките за изграждане и се уверете, че целтаAUе избрана горе вляво. Въведете „активна арка“ в търсенето. Резултатите трябва да съдържат само един ред от параметъраBuild Active Architecture Only, чиято стойност е. Променете го наНе. Така 32-битовите и 64-битовите версии ще бъдат компилирани дори в режим на отстраняване на грешки. След това отидете наПродукт → Почисти(Cmd+Shift+K) и стартирайте компилацията отново. Сега трябва да работи.

Инсталиране на Windows с помощта на Visual C++ 2010 Express

За да започнете, инсталирайте Visual C++ 2010 Express.VS 2012 изглежда също работи, но не съм го тествал лично.

За да създадете 64-битови версии на плъгини, ще трябва да актуализирате компилатора, което от своя страна може да изисква наличието на Windows SDK v 7.1. Инсталирането на Windows SDK v 7.1 правилно след инсталиране на актуализацията на VisualStudio 2010 SP1 е много трудно. По време на инсталацията може да изскочи фатална грешка. За да коригирате ситуацията,стартирайте отново инсталатора на Windows SDK v 7.1 и премахнете отметката от Visual C++ Compilers and libraries. За да сте сигурни, че имате правилната конфигурация, деинсталирайте следните продукти и ги инсталирайте в този ред:

  1. Visual Studio 2010
  2. Windows SDK 7.1
  3. Visual Studio 2010 SP1
  4. Актуализация на компилатора на Visual C++ 2010 SP1 за Windows SDK 7.1

Публикация, описваща други възможни проблеми и техните решения, можете да намерите тук.

След това инсталирайте Git за Windows, като използвате настройките по подразбиране. Използвах версия 1.8.4. СтартирайтеСтарт → Програмни файлове → Git → Git Bash. Ще се отвори терминален прозорец. В този прозорец въведете няколко команди:

cd c: git клонинг https://github.com/olilarkin/wdl-ol cd wdl-ol git checkout 0a360c90b3460717210eeaee7464bc7009c9a5ba.

За да поставите редове в прозорец, щракнете с десния бутон върху заглавната му лента и изберетеРедактиране → Поставяне:

добавки

Сега копирайте всички VST2/VST3/ASIO SDK файлове в правилните папки, точно както е описано по-горе. Инсталирайте Python, като използвате настройките по подразбиране. Използвах 2.7.5.

За да създадете плъгини за VST3, трябва да създадете папка VST3. Изпълнете тази команда в терминала:

mkdir -p "C:Program FilesCommon FilesVST3"

Сега отидете до подпапкатаIPlugExamplesв терминала:

Изпълнете скриптдубликатс помощта на Python:

c:Python27python.exe duplicate.py IPlugEffect MyFirstPlugin Вашето име

Ще се появи нова папкаMyFirstPlugin. Влезте в него и отворетеMyFirstPlugin.sln. Игнорирайте предупрежденията, те казват, че няма да можем да компилираме AAX и TDM форматите. В прозореца за изследване на проекти вляво се уверете, чеMyFirstPlugin-appе удебелено:

аудио

Ако не е, щракнете върху него и изберете Задаване като стартиращ проект. Натиснете F5, трябва да се появи следният прозорец:

създаване

Възможни проблеми

Ако видите фатална грешка LNK1123 по време на процеса на изграждане, трябва да деактивиратеинкременталното свързване: щракнете с десния бутон върхуMyFirstPlugin-appпроекта, щракнете върхуPropertiesи отидете наConfiguration Properties → Linker (General) → Enable Incremental Linking → „No (/INCREMENTAL:NO)“. Ако проблемът продължава, опитайте да инсталирате Visual Studio 2010 SP1, ако още не сте го направили. Може също да е полезно да актуализирате компилатора, за да създадете 64-битови версии на плъгини.