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 на остальных ОС.
