/Modularis_Core

Каркас модульного синтеза для создания свободных кроссплатформенных DAW и других свбодных программ.

Primary LanguageCGNU General Public License v3.0GPL-3.0

Модулярис Ядро

Полный логотип Модулярис Ядро

Это свободный каркас модульного синтеза для создания свободных цифровых рабочих аудиостанций (DAW) и других свободных программ. На нём основана свободная модульная DAW Модулярис. Каркас обладает полной кроссплатформенностью между мобильными и стационарными устройствами.

Суть каркаса

Свобода

Целью разработки этого каркаса является обеспечение доступности музыкального творчества для пользователей самых различных устройств. При проектировании архитектуры каркаса уделяется внимание её гибкости и расширяемости для возможности написания самых различных программ на основе этого каркаса. Свободная лицензия позволяет пользователям получить пользу от естественных свойств информации: возможность использовать каркас в любых целях, изучать и изменять его работу, делиться каркасом.

Модульный синтез

Синтезаторы, эффекты и инструменты управления ими являются модулями, к которым можно подключать другие модули на их входные и выходные порты. Это является более эффективной и гибкой архитектурой для написания музыки по сравнению с многодорожечной архитектурой. Архитектура модульного синтеза обладает большим потенциалом производительности, многопоточности и экономии памяти.

Возможности

Встраивайте в свои программы!

Каркас Модулярис Ядро можно использовать в качестве проигрывателя произведений, сделанных в программах на основе этого каркаса. С этими произведениями можно взаимодействовать запрограммированным вами способом.

Создавайте свои DAW!

Архитектура каркаса Модулярис Ядро позволяет создавать самые разные музыкальные редакторы, будь то секвенсорный DAW, модульный синтезатор, трекер или даже драм-машина!

Программируйте музыку!

С помощью каркаса Модулярис Ядро возможно написание музыки без использования DAW. Выберите язык программирования из поддерживаемых каркасом, создайте объект класса Modularis, объекты модулей, соедините их между собой, настройте их и выводите звук!

Поключайте плагины! (пока этого нет)

Каркас Модулярис Ядро поддерживает плагины VST3 и LV2, а также собственную гибкую и расширяемую систему плагинов.

Сохраняйте свои произведения в файлы! (этого пока тоже нет)

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

Лицензия

Модулярис Ядро - свободное ПО: вы можете перераспространять его и/или изменять его на условиях Стандартной общественной лицензии GNU в том виде, в каком она была опубликована Фондом свободного программного обеспечения; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.

ПО Модулярис Ядро распространяется в надежде, что оно будет полезно, но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Стандартной общественной лицензии GNU.

Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этим ПО. Если это не так, см. https://www.gnu.org/licenses/.

Стандартная общественная лицензия GNU версии 3

С использованием каркаса Модулярис Ядро возможно создание только только свободного программного обеспечения на условиях Стандартной общественной лицензии GNU.

Вышла самая первая версия каркаса!

Модулярис Ядро 0.0.0pre-alpha-raw-undone

Каркас, конечно, пока ещё очень сырой, но уже кое-что может. Например, он может выводить простенький звук, и этого достаточно для написания некоторой музыки!

Содержание каркаса

  • Modularis

Возможен однопоточный синтез звука. Есть режим "ленивое обновление" - модули, не подключенные прямо или косвенно к модулю Output, не обновляются. Формат системного звукового фрейма - 32-битное число с плавающей точкой.

Модули

Инструменты управления

  • Sequencer

Возможно полифоническое проигрывание нот с фиксированными частотой и динамикой.

Синтезаторы

  • Oscillator

Возможно полифоническое проигрывание звука с фиксированной огибающей одного из 4 видов волн: синусоидального 0, треугольного 1, пилообразного 2, прямоугольного 3.

Порты

  • Note

Порт для передачи нот.

  • Sound

Порт для передачи одного канала звуковой волны.

Контроллеры

  • Integer_controller
  • Real_controller

Системные

  • Ports_folder

Группа портов, которую можно подключать к другим портам и группам и отключать от них как единое целое.

Теперь вы знаете о возможностях каркаса на данный момент. Самое время их испытать!

Инструкция по сборке, упаковке и тестированию

Зависимости

Перед началом следующих процедур необходимо установить данные сборочные зависимости:

  • CMake

GNU/Linux

  • GCC (рекомендуется; работоспособность Clang не проверена);
  • Make (или подобная программа, если заработает);

Windows

  • mingw32-w64 GCC (рекомендуется; работоспособность компилятора Visual Studio не проверена);
  • mingw32-w64 Make (или подобная программа, если заработает);

Настройка

Перед началом следующих процедур вы можете настроить их в файле "configuration.cmake". Подсказки по настройке в файле.

Затем сгенерируйте файл сборки с помощью следующих команд:

Bash

$ mkdir out
$ cd out
$ cmake .. -G "Unix Makefiles"

CMD

>mkdir out
>cd out
>cmake .. -G "MinGW Makefiles"

Сборка

Выполняется с помощью следующей команды:

Bash

$ make

CMD

>mingw32-make

Установка

Данная команда выполнит установку каркаса:

Bash

$ make install

CMD

>mingw32-make install

Удаление

Данная команда выполнит удаление каркаса из папки установки:

Bash

$ make uninstall

CMD

>mingw32-make uninstall

Упаковка

Упаковка производится с помощью утилиты CPack - части CMake. Чтобы в GNU/Linux файлы пакета имели правильные права, рекомендуется производить упаковку со сборкой от имени суперпользователя:

Bash

$ sudo cpack

CMD

>cpack

Тестирование

После вышеперечисленных процедур можно протестировать каркас, собрав и запустив мой небольшой трек, написанный на C++ с использованием этого каркаса.

Для этого сначала установите каркас. Затем установите библиотеку SDL2. После этого в папке "test" выполните следующую команду:

Bash

$ ./test

CMD

>test

Эти сценарии сборки рассчитаны на работу с компилятором GCC. Но, возможно, ручная компиляция теста другим комиплятором с подобными аргументами компиляции не составит большого труда.

При тестировании в Windows убедитесь, что файлы статических и динамических библиотек SDL2 находятся в папке "test" либо библиотека SDL2 добавлена в переменные среды PATH (<корневая папка SDL2>\bin), CPATH (<корневая папка SDL2>\include) и LIBRARY_PATH (<корневая папка SDL2>\lib).

Приятного использования этого каркаса!