Это свободный каркас модульного синтеза для создания свободных цифровых рабочих аудиостанций (DAW) и других свободных программ. На нём основана свободная модульная DAW Модулярис. Каркас обладает полной кроссплатформенностью между мобильными и стационарными устройствами, поддерживает различные языки программирования.
Целью разработки этого каркаса является обеспечение доступности музыкального творчества для пользователей самых различных устройств. При проектировании архитектуры каркаса уделяется внимание её гибкости и расширяемости для возможности написания самых различных программ на основе этого каркаса. Свободная лицензия позволяет пользователям получить пользу от естественных свойств информации: возможность использовать каркас в любых целях, изучать и изменять его работу, делиться каркасом.
Синтезаторы, эффекты и инструменты управления ими являются модулями, к которым можно подключать другие модули на их входные и выходные порты. Это является более эффективной и гибкой архитектурой для написания музыки по сравнению с многодорожечной архитектурой. Архитектура модульного синтеза обладает большим потенциалом производительности, многопоточности и экономии памяти.
Каркас Модулярис Ядро можно использовать в качестве проигрывателя произведений, сделанных в программах на основе этого каркаса. С этими произведениями можно взаимодействовать запрограммированным вами способом.
Архитектура каркаса Модулярис Ядро позволяет создавать самые разные музыкальные редакторы, будь то секвенсорный DAW, модульный синтезатор, трекер или даже драм-машина!
С помощью каркаса Модулярис Ядро возможно написание музыки без использования DAW. Выберите язык программирования из поддерживаемых каркасом, создайте объект класса Modularis
, объекты модулей, соедините их между собой, настройте их и выводите звук!
Каркас Модулярис Ядро поддерживает плагины VST3 и LV2, а также собственную гибкую и расширяемую систему плагинов.
Каркас Модулярис Ядро реализует расширяемый формат файла проекта Модулярис, основанный на JSON для возможности ручного редактирования (на всякий случай). В файле содержится информация о настройках и соединениях модулей, плюс в нём может содержаться информация для DAW, в котором был создан проект (или что-то другое). Есть возможность создания как лёгкого файла с внешними зависимостями от плагинов, сэмплов или чего-то ещё, так и тяжёлого, но портативного файла со встроенными зависимостями.
Модулярис Ядро - свободное ПО: вы можете перераспространять его и/или изменять его на условиях Стандартной общественной лицензии GNU в том виде, в каком она была опубликована Фондом свободного программного обеспечения; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
ПО Модулярис Ядро распространяется в надежде, что оно будет полезно, но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Стандартной общественной лицензии GNU.
Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этим ПО. Если это не так, см. https://www.gnu.org/licenses/.
С использованием каркаса Модулярис Ядро возможно создание только только свободного программного обеспечения на условиях Стандартной общественной лицензии GNU.
Каркас переписан на C и теперь поддерживает 2 языка программирования: C и C++. Поддержка C++ осуществляется через языковую привязку - Модулярис Ядро С++.
Содержание каркаса на данный момент осталось тем же.
- Modularis
Возможен однопоточный синтез звука. Есть режим "ленивое обновление" - модули, не подключенные прямо или косвенно к модулю Output, не обновляются. Формат системного звукового фрейма - 32-битное число с плавающей точкой.
- Sequencer
Возможно полифоническое проигрывание нот с фиксированными частотой и динамикой.
- Oscillator
Возможно полифоническое проигрывание звука с фиксированной огибающей одного из 4 видов волн: синусоидального 0
, треугольного 1
, пилообразного 2
, прямоугольного 3
.
- Note
Порт для передачи нот.
- Sound
Порт для передачи одного канала звуковой волны.
- Integer_controller
- Real_controller
- Ports_folder
Группа портов, которую можно подключать к другим портам и группам и отключать от них как единое целое.
Теперь вы знаете о возможностях каркаса на данный момент. Самое время их испытать!
Перед началом следующих процедур необходимо установить данные сборочные зависимости:
- CMake
- GCC (рекомендуется; работоспособность Clang не проверена);
- Make (или подобная программа, если заработает);
- mingw32-w64 GCC (рекомендуется; работоспособность компилятора Visual Studio не проверена);
- mingw32-w64 Make (или подобная программа, если заработает);
Перед началом следующих процедур вы можете настроить их в файле "configuration.cmake". Подсказки по настройке в файле.
Затем сгенерируйте файл сборки с помощью следующих команд:
$ mkdir out
$ cd out
$ cmake .. -G "Unix Makefiles"
>mkdir out
>cd out
>cmake .. -G "MinGW Makefiles"
Выполняется с помощью следующей команды:
$ make
>mingw32-make
Данная команда выполнит установку каркаса:
$ make install
>mingw32-make install
Данная команда выполнит удаление каркаса из папки установки:
$ make uninstall
>mingw32-make uninstall
Упаковка производится с помощью утилиты CPack - части CMake. Чтобы в GNU/Linux файлы пакета имели правильные права, рекомендуется производить упаковку со сборкой от имени суперпользователя:
$ sudo cpack
>cpack
После вышеперечисленных процедур можно протестировать каркас, собрав и запустив тестовые программы, использующие этот каркас, одна из которых написана на C, а другая - на C++. В них находится мой небольшой трек.
Для этого сначала установите каркас. Затем установите библиотеку SDL2. После этого в папке "test" выполните следующую команду, если хотите протестировать C:
$ ./test-c
>test-c
Либо выполните следующую команду, если хотите протестировать C++:
$ ./test-cpp
>test-cpp
Эти сценарии сборки рассчитаны на работу с компилятором GCC. Но, возможно, ручная компиляция теста другим комиплятором с подобными аргументами компиляции не составит большого труда.
При тестировании в Windows убедитесь, что файлы статических и динамических библиотек SDL2 находятся в папке "test" либо библиотека SDL2 добавлена в переменные среды PATH (<корневая папка SDL2>\bin), CPATH (<корневая папка SDL2>\include) и LIBRARY_PATH (<корневая папка SDL2>\lib).