Главная » Правописание слов » Как написать свой vst плагин

Слово Как написать свой vst плагин - однокоренные слова и морфемный разбор слова (приставка, корень, суффикс, окончание):


Морфемный разбор слова:

Однокоренные слова к слову:

VST конструктор для музыкантов

Рано или поздно некоторые музыканты приходят к выводу, что имеющиеся у них в наличие синтезаторы и эффекты чем-то их не устраивают. Или возникает гениальная идея создать принципиально новый синтезатор или эффект. Но не имея технического образования и не обладая навыками программирования создать своими руками новый инструмент невозможно. Но поскольку потребность такая существовала и будет существовать были созданы конструкторы музыкальных инструментов и эффектов, которые позволили зная только основы обработки сигналов и принципы построения синтезаторов создавать своими руками VST RTAS инструменты и плагины, а также синтезаторы и эффекты в виде отдельных программ, так называемые standalone.

В настоящее время имеется несколько таких конструкторов именно музыкального назначения:

Native Instruments Reaktor

Cinestar SynthEdit

Cycling 74 MAXMSP

Outsim SynthMaker

Quantum FX

Чем же эти средства для создания VST плагинов и инструментов своими руками друг от друга?

NATIVE INSTRUMENTS REAKTOR

Рассмотрим для начала программу Reaktor. Он имеет оболочку (универсальный контейнер для MacOS и Windows), который встраивается в музыкальный редактор (DAW) типа Cubase, Sonar, Fruity Loops и пр. в виде VST плагина. Внутри себя этот контейнер предоставляет аудио входы (аудиопоток, поступающий из DAW) и выходы (аудиопоток, направляемый в DAW) и миди входы и выходы.

Мы с помощью мыши собираем из готовых модулей (генераторы, сумматоры, перемножители, сатураторы и пр.) цепочку обработки звука и заводим на нее входящий из DAW аудиопоток, а аудиопоток с выхода этой цепочки подключаем к выходу контейнера направляя его обратно в DAW.

Если будем делать VST-инструмент, то в Cubase или Nuendo подключаем инструмент Reaktor.

Если мы подключаем VST-эффект (в секцию Insert микшерного пульта DAW), то используем плагин Reaktor FX. Мы можем добавлять/удалять компоненты, крутить ручки управления нашего VST-плагина и сразу же слышать изменения, происходящие со звуком.

CINESTAR SYNTHEDIT

Этот конструктор может создать VST плагин сразу в виде библиотеки. Это дает то преимущество, что нам не нужно устанавливать дополнительную программу, если мы захотим использовать разработанный нами плагин.

Окно конструктора для созданного нами VST-плагина Echo (Эхо) выглядит вот так:

Потом мы выбираем пункт меню File/Save as VST и выбираем в открывшемся окне настройки (имя библиотеки DLL, идентификатор плагина и пр.), потом сохраняем его. Если нужно копируем получившуюся библиотеку DLL в папку с VST плагинами. Запускаем DAW.

Подключенный в DAW VST плагин выгладит вот так:

OUTSIM SYNTHMAKER

Эта программа позволяет создавать синтезаторы и эффекты как в виде отдельных программ (exe, Standalone), так и в виде VST-плагинов (подобно Cinestar SynthEdit). Обладает удобным интерфейсом, наглядно отображающем в маленьких окнах сверху линейку эскизов открытых окон, позволяя легко переключаться между ними.

Cycling 74 MAXMSP

Гибкая и мощная система. Ее приложения (patch, «пэтч») создаются посредством соединения имеющихся в программе графических «объектов», выполняющих вычислительные или интерфейсные функции. Пэтчи межплатформенны (MacOS, PC). Возможно создание собственных объектов на языке C (Си).

Пакет Мах состоит из следующих разделов:

Max – основной набор;

Msp – объекты для работы с аудио;

Подключение к DAW в виде VST-плагинов осуществляется через специальную оболочку Pluggo (есть версия для Mac, есть для PC). Pluggo появляется в DAW как набор VST-плагинов, соответствующих пэтчам. Иными словами каждый пэтч мы видим, как отдельный VST-плагин.

Состоит из среды разработки (конструктора) и VST/DirectX плагина, который подключается в DAW и позволляет использовать созданные Вами эффекты. Данный плагин содержит обработки на уровне 64 бит/192 КГц.

РАЗРАБОТКА VST НА ЯЗЫКЕ C (СИ)

Источник

Лабораторная работа №8 «Создание аудио плагинов VST»

1. Для разработки аудио плагинов в формате VST необходимо скачать и установить VST SDK от Steinberg (http://www.steinberg.net/nc/en/company/developers/sdk_download_portal.html)

После скачивания, необходимо указать путь к SDK в настройках Projucer. Если путь указан верно, то цвет шрифта будет черным, если нет – крассным.

Дляразработкиплагинов в формате AU никакого дополнительного ПО устанавливать не надо.

2. Для создания адуио плагина необходимо создать проект по шаблону Audio Plug-In

Не забудьте проверитьвозможность построения VST (build VST) в настройках проекта.

3. Проект можно сохранить и отрыть в IDE. Собранный файл можно открыть в DAW:

4. Созданный проект содержит два основных класса, PluginProcessorсодержит информацию о структуре работы плагина с аудио и MIDI, PluginEditorсодержит все что связано с GUI и визуализацией плагина

5. В даннойработесоздаетсяплгин, графическийинтерфейскоторогосостоитизодногослайдера, которыйизменяетгромкость (velocity) MIDI сообщений, которые приходят на вход. Для начала изменим размер окна плагина. Для этого в конструкторе объекта AudioProcessorEditorнеобходимо изменить аргументы функции setSize (200, 200)

6. Необходимо задекларировать объект midiVolumeтипа Slider в разделе private внкутри заголовочного файла PluginEditor.h

7. Далее необходимо продолжите редактирование конструктора AudioProcessorEditor.

8. После того как слайдер создан и его вид описан, его необходимо расположить внутри окна и определиться с фоном окна. Для это надо отредактировать функцииresized и paint:

9. Для того чтобы предавать значения слайдера в процессор, необходимо создать public переменную noteOnVelтипа float внутри заголовочного файла PluginProcessor.h

10. Для присвоения данной переменной значений слайдера воспользуемся шаблоном наблюдатель. Для этого необходимо добавить в заголовочный файл PluginEditor.h информацию о базовом классе Slider::Listener и задекларировать виртуальную функцию sliderValueChanged:

11. В конструкторе AudioProcessorEditorнеобходимо зарегистрировать «наблюдателя»:

… и определитьтелофункцииsliderValueChanged:

12. В конце необходимо отредактировать функцию processBlock, которая осуществляет менеджмент как аудио так и MIDI информации:

13.

14. Соберите и протестируйте плагин в любой DAW

Источник

Создание аудиоплагинов, часть 3

В этом посте мы завершим необходимую настройку среды разработки и подготовим вспомогательное окружение.

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:

Теперь исключения будут передаваться отладчику Visual C++.

Если попробовать запустить VST3 версию, то может выскочить такое сообщение (не на немецком, наверное):

В VST3 SDK, который мы скачали раньше, в подпапке \bin лежат архивы. В них содержатся установщики, которые создадут необходимые папки для 32 и 64-битных систем (C:\Program Files (x86)\Steinberg\VST3PluginTestHost\ и C:\Program Files\Steinberg\VST3PluginTestHost\ соответственно) и скопируют туда нужные версии файла VST3PluginTestHost.exe. При установке никакие параметры менять не обязательно.

В Windows тоже можно проверить работоспособность плагина в реальных условиях. Будем снова использовать REAPER. Надо подсказать ему, где находится наш плагин. В папке проекта есть подпапка \build-win, в которой, помимо прочего, находятся .dll и .vst файлы плагина. В настройках REAPER Options → Preferences → Plug-Ins → VST можно добавить директории, содержащие эти файлы:

Если при использовании REAPER в режиме Debug у вас начал вылетать reaper_host32.exe, попробуйте сконфигурировать его, чтобы он подгружал ваш плагин в обход этого процесса, выбрав в настройках Native only, например:

reaper_host32.exe может продолжить вылетать, но перестанет ломать обработку и вывод звука для плагинов, подгруженных в обход него.

Блокировка предупреждений для кода библиотек на Mac

Версия для Windows будет дальше.

Как можно заметить, нам выдается куча предупреждений:

Предупреждения очень полезны, так как обращают наше внимание на возможные проблемы и баги в коде. В данном случае 22 предупреждения относятся к коду используемой нами библиотеки, так что мы не можем просто исправить их, т. к. если когда-нибудь мы загрузим свежую версию этой библиотеки, все исправления придется вносить снова. Но и оставить все как есть тоже не годится: можно легко пропустить 23-ю ошибку, которая будет относиться уже к коду нашего плагина.

Повторите то же самое для VST2, AU и других нужных таргетов.
Создайте сборку снова. Мы увидим три предупреждения. Validate Project Settings исправить легко: двойной щелчок по нему, затем снять все галочки и щелкнуть Done:

Теперь осталось два предупреждения:

То, которое касается кодировки InfoPlist.strings, можно исправить, открыв файл и конвертировав его в UTF-8 при помощи Utilities справа:

Предупреждение extra tokens убирается дополнением директивы #include в MyFirstPlugin.h:

Создайте сборку и убедитесь, что все чисто!

Блокировка предупреждений кода библиотек в Windows

В целом VS C++ выдает другие предупреждения, нежели GCC/LLVM на Маке. Список всех предупреждений VS C++ 2010 находится на этой страничке слева.

Например, если вы видите предупреждения С4101 и С4129 о каком-нибудь файле в библиотеке WDL, их можно игнорировать: допишите #pragma перед #include в MyFirstPlugin.h :

Suppress означает, что предупреждения будут игнорироваться только для следующей строки (то есть для #include ). Так что предупреждения, касающиеся всего остального кода в файле, вы будете получать, а это хорошо. Обратите внимание, что надо писать только номер предупреждения, без «С». То же самое можно проделать и в MyFirstPlugin.cpp:

Это касается файлов .h из библиотеки.
Если вы получаете предупреждения о конкретном .cpp, найдите его в project explorer, по правому щелчку зайдите в Properties, в окне слева выберите C/C++ → Advanced. Справа должна быть опция Disable certain warnings:

Тут можно добавить список номеров предупреждений, разделенных точкой с запятой. Как видите, отладчик уже игнорирует четыре предупреждения для этого файла. Обратите внимание, что данные изменения повлияют только на этот конкретный .cpp файл. Так что надо будет обозначить номера предупреждений для остальных файлов и так же добавить их в соответствующие настройки.
Когда будете создавать новый проект, используйте скрипт duplicate, чтобы не пришлось снова вносить все эти коррективы.

Красотища! Мы разгребли все предупреждения: скрыли лишние и облегчили наблюдения за важными для нас. В следующий раз мы запачкаем руки в написании грязного дисторшена.

Источник

Создание аудиоплагинов, часть 1

Этот пост — первый из серии переводов руководства Мартина Финке о написании собственных аудиоплагинов.
Отличительной особенностью этого материала является отсутствие зависимости от формата плагина и платформы его использования. Внимание сфокусировано на общей структуре аудиоплагина. Затем алгоритмы оборачиваются в слой абстракции для сборки в форматы 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 (произносится как «уитл»). Она делает за нас кучу работы, вот самые важные моменты:

Также в этой библиотеке есть некоторые часто используемые алгоритмы, например, передискретизация. Вот в этой ветке форума есть много скринов плагинов, написанных при помощи WDL.

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

Еще одна замечательная вещь в WDL это разрешительная лицензия. Библиотеку можно свободно использовать даже в коммерческих продуктах (см. детальную информацию по ссылкам выше).

Как мы это сделаем

«Погоня лучше, чем добыча» — Эйч Пи Бакстер

В программировании результат сам по себе — это уже вознаграждение, но именно по пути к результату мы учимся. В этом руководстве не будет длинных листингов с идеальными решениями. Мы начнем с того, что работает, и будем постепенно развивать это, встречаясь с разными проблемами. Минус в том, что вы будете писать код, который впоследствии замените на лучший. Но программистам к этому не привыкать. Первый плюс: не будет переполняющей радости, т. к. мы будем подходить к решению постепенно вместо того, чтобы сделать все одним махом. Второй — это то, что мы получим некоторые ценные знания в программировании.

Эта серия постов — не о решении задач по матану без калькулятора на бумажке. Она о том, как создавать хорошее программное обеспечение, которое вы можете дать своему другу-продюсеру, чтобы он сделал бас пожирнее.

Что нам понадобится

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

Пара ссылок, которые нам могут пригодиться:

Теперь пора все настроить и подготовить.

Установка и настройка WDL-OL


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

Большая часть этого материала есть в видео Оли Ларкина:

Материал следующей секции в основном для настройки на Mac. Windows будет немного ниже.

Настройка на Mac OS X с использованием Xcode 4

Перед тем, как мы начнем, надо скачать и установить парочку новых вещей. Это немного муторно, но придется сделать только один раз.

Загрузка WDL-OL

Откройте Terminal и напечатайте следующие строки, чтобы создать новую папку в вашей домашней директории и переместиться туда:

Давайте загрузим WDL-OL:

Эти строчки можно скопировать и вставить. Главное — не забудьте точку в конце! Тогда вы наверняка будете использовать ту же версию WDL-OL, что и в этом руководстве. На данный момент должна появиться подпапка wdl-ol.

Добавление зависимостей

Обратите внимание, что папку public.sdk надо будет создать вручную. Так в итоге должно выглядеть ваше дерево папок:

Теперь откройте common.xcconfig (он должен открыться в Xcode) и внесите следующие изменения:

CERTIFICATE_ID = Your Name

// Comment this line out:
// COMPILER = com.apple.compilers.gcc.4_2
// Uncomment this line:
COMPILER = com.apple.compilers.llvm.clang.1_0

// Add these lines:
VST_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

Установка SDK 10.5

Чтобы его установить, нужно скачать Xcode 3.2.6. Когда вы его скачаете, смонтируйте .dmg файл, откройте Terminal.app и введите

open /Volumes/Xcode\ and\ iOS\ SDK/Packages/

Откроется окно поисковика и там будет файл с именем MacOSX10.5.pkg. Щелкнике по нему два раза. Если у вас версия OS X 10.8 или выше, появится сообщение, что программа от неизвестного разработчика не может быть установлена. В этом случае правый клик по файлу, в меню надо нажать Open и подтвердить, что вы действительно хотите установить софт. При установке выберите change install location, кликните по диску, на который хотите установить, чтобы можно было выбрать на нем директорию. Установите, например, в папку Downloads в папке пользователя. После завершения установки в выбранном месте появится новая папка MacOSX10.5.sdk. Напечатайте в Terminal.app следующее:

Снова появится окно поисковика. Перетащите в него папку MacOSX10.5.sdk. После перезапуска Xcode старый SDK должен быть доступен в Xcode 4. Убедитесь, что вы сделали резервную копию MacOSX10.5.sdk где-нибудь: если вы будете обновлять Xcode до более поздней версии, вам, возможно, придется повторить эти действия.

Запуск тестового проекта

В Терминале перейдите в папку с примерами:

Запустите скрипт dublicate чтобы создать свой первый плагин (замените YourName что-нибудь свое):

./duplicate.py IPlugEffect/ MyFirstPlugin YourName

Теперь там появилась новая папка MyFirstPlugin. Зайдите в нее и откройте MyFirstPlugin.xcodeproj. Выберите таргет APP:

В WDL-OL есть маленький баг: самостоятельное приложение не будет выводить звук, если не выбрать другой аудиовход. Но это легко исправить. В навигаторе проектов Xcode откройте Other Sources → OSX App Wrapper → app_main.h. Измените содержание 34-й строки (в которой #define DEFAULT_INPUT_DEV ) на следующее:

#define DEFAULT_INPUT_DEV «Built-in Microphone»

Кликните Run. Выскочат несколько ошибок линкера:

Их легко исправить. Вернитесь в настройки сборки вашего проекта (убедитесь, что вы выбрали именно ваш проект, а не какой-то другой target) и поменяйте значение параметра Implicitly Link Objective-C Runtime Support на No:

Снова кликните Run. Через пару секунд плагин появится в виде самостоятельного приложения:

Проверка версии AudioUnit при помощи Logic

Если у вас нет Logic, можно использовать бесплатный инструмент auval для проверки. Убедитесь, что сборка AU Target прошла успешно, откройте Terminal и введите:

Он должен выдать что-то типа этого:

Если 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 вроде тоже подойдет, но лично я не проверял.

Пост с описанием других возможных проблем и их решений находится здесь.

Затем установите Git для Windows, используя настройки по умолчанию. Я использовал версию 1.8.4. Запустите Start → Program Files → Git → Git Bash. Откроется окно терминала. В этом окне введите несколько команд:

Чтобы вставить строки в окно, сделайте правый клик по его заголовку и выберите Edit → Paste:

Теперь скопируйте все файлы VST2/VST3/ASIO SDK в нужные папки, так же, как описано выше. Установите Python, используя настройки по умолчанию. Я использовал 2.7.5.

Чтобы создавать плагины формата VST3, надо создать папку 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-х битных версий плагинов.

Источник

Теперь вы знаете какие однокоренные слова подходят к слову Как написать свой vst плагин, а так же какой у него корень, приставка, суффикс и окончание. Вы можете дополнить список однокоренных слов к слову "Как написать свой vst плагин", предложив свой вариант в комментариях ниже, а также выразить свое несогласие проведенным с морфемным разбором.

Какие вы еще знаете однокоренные слова к слову Как написать свой vst плагин:



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *