Об этом проекте

NoiseCraft — это язык визуального программирования и платформа с открытым исходным кодом для браузера, предназначенные для синтеза звука и создания музыки. Его дизайн вольно вдохновлён PureData и Max/MSP, и он направлен на создание сообщества для обмена музыкальными идеями. Проект находится в стадии разработки, и README прямо приглашает участников помочь в его создании и отладке. Попробовать его можно на noisecraft.app, а просмотреть общие проекты — на noisecraft.app/browse. В настоящее время он работает в Chrome, Firefox и Edge, но не стабильно в Safari из-за проблем с реализацией web audio. Поддержка мобильных устройств описывается как недостаточная, и возможны ошибки. Принципы дизайна: - Минималистичная философия: обычные JS/HTML/CSS без веб-фреймворков, намеренно минимальные зависимости, фокус на необходимых функциях и избегание раздувания функциональности. - Дизайн интерфейса: минимизация кривой обучения и трения, простой и незагромождённый интерфейс, избегание выпадающих меню и скрытых опций там, где это возможно, использование привычных комбинаций клавиш и избегание неоднозначности. - Дизайн языка: только один тип данных (числа с плавающей запятой) и отсутствие различия между управляющими сигналами и аудиосигналами. - Практические соображения: избегание изображений и звуковых сэмплов для снижения нагрузки на пропускную способность и серверных расходов; отказ от сэмплов также побуждает пользователей задумываться о генерации звука. Архитектурные заметки: - Многостраничный дизайн вместо одностраничного приложения, поэтому New, Help и Browse открываются в новых вкладках, что снижает риск случайной потери работы и позволяет создавать прямые ссылки на /browse и /help. - GUI в режиме немедленного отображения: интерфейс перерисовывается при действиях с моделью, что упрощает отмену/повтор путём сохранения предыдущих состояний проекта, с кэшированием для избежания полной перерисовки. - Звук создаётся классом AudioView (public/audioview.js), который компилирует аудиограф в JavaScript, выполняемый в AudioWorklet. Web Audio API используется только для вывода, а не для синтеза, чтобы обеспечить единообразие звука в разных браузерах и на разных устройствах. - Проекты сохраняются в легко парсимом JSON (.ncft), что может позволить использование внешних инструментов, причём README предполагает возможность компиляции проектов в VST. Участие: исправления ошибок приветствуются, однако проект консервативно относится к новым функциям и крупным изменениям; участников просят сначала открыть issue для обсуждения предлагаемых изменений. Настройка разработки: рекомендуется Chrome. Установите Node.js и npm, выполните npm install, затем node server.js; приложение доступно по адресу http://localhost:7773/. Тесты запускаются командой node tests.js. Предоставлены инструкции для Docker (docker build . -t noisecraft; docker run -p 7773:7773 -d noisecraft). Конфигурация сервера использует переменные окружения DB_FILE_PATH (по умолчанию ./database.db) и HTTP_PORT_NO (по умолчанию 7773).