Msys: музыкальная студия на плагинах

Плагинов-инструментов
6
Автотестов
1 200+
Строк C#
74 000

Задача

Сделать кроссплатформенную музыкальную программу в духе FL Studio: плагины-инструменты, общий движок синтеза, таймлайн со сведением и экспортом и совместная работа по сети.

Решение

Оболочка на Avalonia, которая знает только контракты плагинов, шесть плагинов-инструментов на MVP, собственное ядро синтеза, MIDI и аудио-бэкенды с низкой задержкой и протокол совместной сессии.

Архитектура

Система разложена по слоям: Msys.Core (источники звука, эффекты, экспорт, MIDI — без UI), Msys.Synth (модель струны, семплер, модульный синтез), Msys.Plugins (контракты плагинов и общие части), Msys.Widgets (общие контролы) и Msys.Shell — приложение на Avalonia с проектами, таймлайном и микшером. Оболочка ничего не знает о конкретных инструментах — только о контрактах.

Шесть инструментов — отдельные плагины: гитара, пианино, блок-флейта, драм-пэд, лаунчпад и модульный синтезатор, который служит источником звука для остальных. Все устроены по одному образцу MVP: окно только собирает части, вся логика — в сессии (presenter), покрытой тестами. Сторонние плагины работают как VST: собираются под контракты, ставятся из .dll, грузятся в изолированный контекст сборок, а в совместной сессии скачиваются у хоста, если у участника плагина нет.

Таймлайн поддерживает блоки-паттерны с громкостью и затуханием, множественное выделение, mute/solo, зацикливание и метроном; микшер экспортирует в WAV/MP3. В совместной сессии несколько человек правят один проект со своих машин и видят курсоры и выделения друг друга. Звук — WASAPI/WinMM на Windows и PortAudio на остальных ОС.

Нужно что-то похожее?

Расскажите о задаче — ответим с оценкой сроков и стоимости.

Обсудить проект