Это свободный каркас модульного синтеза для создания свободных цифровых рабочих аудиостанций (DAW) и других свободных программ. На нём основана свободная модульная DAW Модулярис. Каркас обладает полной кроссплатформенностью между мобильными и стационарными устройствами, поддерживает различные языки программирования.
Целью разработки этого каркаса является обеспечение доступности музыкального творчества для пользователей самых различных устройств. При проектировании архитектуры каркаса уделяется внимание её гибкости и расширяемости для возможности написания самых различных программ на основе этого каркаса. Свободная лицензия позволяет пользователям получить пользу от естественных свойств информации: возможность использовать каркас в любых целях, изучать и изменять его работу, делиться каркасом.
Синтезаторы, эффекты и инструменты управления ими являются модулями, к которым можно подключать другие модули на их входные и выходные порты. Это является более эффективной и гибкой архитектурой для написания музыки по сравнению с многодорожечной архитектурой. Архитектура модульного синтеза обладает большим потенциалом производительности, многопоточности и экономии памяти.
Каркас Модулярис Ядро можно использовать в качестве проигрывателя произведений, сделанных в программах на основе этого каркаса. С этими произведениями можно взаимодействовать запрограммированным вами способом.
Архитектура каркаса Модулярис Ядро позволяет создавать самые разные музыкальные редакторы, будь то секвенсорный DAW, модульный синтезатор, трекер или даже драм-машина!
С помощью каркаса Модулярис Ядро возможно написание музыки без использования DAW. Выберите язык программирования из поддерживаемых каркасом, создайте объект класса Modularis
, объекты модулей, соедините их между собой, настройте их и выводите звук!
Каркас Модулярис Ядро поддерживает плагины VST3 и LV2, а также собственную гибкую и расширяемую систему плагинов.
Каркас Модулярис Ядро реализует расширяемый формат файла проекта Модулярис, основанный на JSON для возможности ручного редактирования (на всякий случай). В файле содержится информация о настройках и соединениях модулей, плюс в нём может содержаться информация для DAW, в котором был создан проект (или что-то другое). Есть возможность создания как лёгкого файла с внешними зависимостями от плагинов, сэмплов или чего-то ещё, так и тяжёлого, но портативного файла со встроенными зависимостями.
Модулярис Ядро — свободное ПО: вы можете перераспространять его и/или изменять его на условиях Стандартной общественной лицензии GNU в том виде, в каком она была опубликована Фондом свободного программного обеспечения; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
ПО Модулярис Ядро распространяется в надежде, что оно будет полезно, но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Стандартной общественной лицензии GNU.
Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этим ПО. Если это не так, см. https://www.gnu.org/licenses/.
С использованием каркаса Модулярис Ядро возможно создание только только свободного программного обеспечения на условиях Стандартной общественной лицензии GNU.
Добавлено большое количество новых модулей и усовершенствованы существующие модули.
- Modularis
Возможен однопоточный синтез звука. Есть режим «ленивое обновление» — модули, не подключенные прямо или косвенно к модулю Output, не обновляются. Формат системного звукового фрейма — 32-битное число с плавающей точкой.
- Sequencer
Добавлена возможность плавно менять тон и динамику ноты. Для этого реализована система ключевых «кадров». Тон, фаза и динамика могут меняться независимо друг от друга. Доступно 5 режимов интерполяции для тона и динамики: INTERPOLATION_NONE
, INTERPOLATION_LINEAR
, INTERPOLATION_FAST
, INTERPOLATION_SLOW
, INTERPOLATION_SMOOTH
. Неограниченная полифония. Компактность данных.
Реализована многодорожечная система паттернов. В перспективе добавление различных типов паттернов для повышения удобства создания музыки и экономии памяти для слабых устройств, где планируется использоваться эта библиотека.
- Oscillator
Добавлена поддержка ADSR-огибающей. Возможно полифоническое проигрывание одного из 4 видов волн: синусоидального 0
, треугольного 1
, пилообразного 2
, прямоугольного 3
.
- Sampler
Добавлен простенький сэмплер с поддержкой ADSR-огибающей, полифонии и зацикливания и без поддержки интерполяции сэмпла. Модуль в разработке, но пользоваться можно.
- Note_chorus
Эффект обработки нот для создания суперпил.
- Transpose
Транспозиция нот.
- Amplifier
Простой усилитель/ослабитель/инвертор фазы звука.
- Delay
Задержка звука. Если построить цепочку обратной связи с использованием этих модулей, можно получить эффект эхо.
- Modulator
Эффект амплитудной модуляции звука.
- Note
Порт для передачи нот.
- Sound
Порт для передачи одного канала звуковой волны.
- Integer_controller
Целочисленный контроллер.
- Real_controller
Вещественночисленный контроллер.
- ADSR
Группа вещественночисленных контроллеров: attack
, decay
, sustain
, release
.
- Ports_folder
Группа портов, которую можно подключать к другим портам и группам и отключать от них как единое целое.
Теперь вы знаете о возможностях каркаса на данный момент. Самое время их испытать!
Я перевёл данный проект с системы сборки CMake на свою собственную улучшенную, продвинутую, инновационную систему сборки MakePy.
Перед началом следующих процедур необходимо установить данные сборочные зависимости:
- Python 3
- GCC
- Пакет
debhelper
(если хотите собирать пакеты «.deb»)
- mingw-w64 GCC (в том числе утилиты
dlltool
иgendef
)
Перед началом следующих процедур вы можете настроить сборку в файле «configuration.py». Подсказки по настройке в файле.
Выполняется с помощью всего одной команды:
$ ./make.py
>python make.py
Данная команда выполнит установку каркаса:
$ sudo ./make.py install
От имени администратора:
>python make.py install
Данная команда выполнит удаление собранных файлов из рабочей папки:
$ ./make.py clean
>python make.py clean
Данная команда выполнит удаление каркаса из папки установки:
$ sudo ./make.py remove
От имени администратора:
>python make.py remove
Упаковка архивов или пакетов также производится с помощью всего одной команды:
$ ./make.py pack
>python make.py pack
Удобно!
После вышеперечисленных процедур можно протестировать каркас, собрав и запустив тестовую программу, использующую этот каркас и написанную на C. В ней находится проигрыватель с графическим интерфейсом, в котором проигрывается мой новый небольшой трек.
Для этого сначала установите каркас (см. Установка, а также раздел Релизы на GitVerse). Затем установите библиотеки SDL2, SDL2_image и SDL2_ttf. Ваш компьютер должен поддерживать OpenGL версии не ниже 2.0. После этого в папке «test» выполните следующую команду, если хотите протестировать проигрыватель с графическим интерфейсом:
$ ./test
>test
Либо выполните следующую команду, если хотите протестировать консольный проигрыватель. Для него не нужно устанавливать библиотеки SDL2_image и SDL2_ttf и не нужна поддержка OpenGL:
$ ./test-nogui
>test-nogui
Эти сценарии сборки рассчитаны на работу с компилятором GCC. Но, возможно, ручная компиляция теста другим комиплятором с подобными аргументами компиляции не составит большого труда.
При тестировании в Windows убедитесь, что файлы заголовков, статических и динамических библиотек SDL2, SDL2_image и SDL2_ttf находятся в папке «test» либо библиотеки добавлены в переменные среды PATH
(<корневая папка SDL2/SDL2_image/SDL2_ttf>\bin), CPATH
(<корневая папка SDL2/SDL2_image/SDL2_ttf>\include) и LIBRARY_PATH
(<корневая папка SDL2/SDL2_image/SDL2_ttf>\lib).