Версия 1.0.0-alpha
Личный музыкальный помощник. Локально, без облачных API.
Разработан методом вайб-кодинга в оболочке OpenCode на модели
opencode/deepseek-v4-flash.
Разработка: веду на Windows. Если есть возможность протестировать на macOS — буду премного благодарен за feedback.
- 🎤 Аудио в MIDI — запись с микрофона или загрузка WAV; CREPE + DDSP → чистый MIDI
- 🎹 MIDI Generator — 5 алгоритмов (Scale Walk, Chord, Markov, Contour, Combined), тональность/гамма/октава/BPM, массовая генерация
- 📊 Dataset Generator — MIDI → искажённые WAV-пары (clean + corrupt) для обучения моделей audio-to-audio
- 📜 History — просмотр, прослушивание, пианолла обработанных файлов
- 🧪 Tests — запуск 164 тестов прямо из UI
- 🧠 Тренировка модели (в разработке)
- 🌐 i18n — русский / английский (с авто-перезагрузкой переводов)
Miskam'o построен по принципу независимых модулей. Каждый модуль — это самодостаточная папка в modules/, которую можно добавить или удалить.
| Модуль | Папка | Назначение |
|---|---|---|
| Аудио → MIDI | audio2midi/ |
Загрузка/запись WAV → CREPE+DDSP → MIDI |
| Ручная оценка | eval/ |
Оценка аудио по 10-балльной шкале |
| История | history/ |
Просмотр, плеер, пианолла, скачивание, удаление |
| MIDI Генератор | midigen/ |
5 алгоритмов, пресеты, batch, предпросмотр |
| Датасет | dataset/ |
Clean/corrupt WAV-пары из MIDI-банков |
| Тренировка | train/ |
Заглушка (в разработке) |
| Тесты | testing/ |
Запуск 164 тестов из UI |
- Фреймворк (
core/) — отвечает за базовую инфраструктуру: запуск сервера, загрузку модулей, общие утилиты (fluidsynth, midi), единый эндпоинт настроек. - Модули (
modules/*/) — содержат весь свой код: API-эндпоинты (routes.py), бизнес-логику, статические файлы (static/) и переводы. - При инициализации каждый модуль создаёт необходимые ему служебные папки и файлы. Если они уже существуют — использует как есть, не перезаписывая чужие данные.
- При удалении папки модуля его функционал полностью исчезает из приложения.
- Установка модуля не требует изменений в коде фреймворка — достаточно поместить папку в
modules/.
При первом импорте модуль проверяет наличие своих директорий и создаёт их при необходимости с проверкой exist_ok=True. Это гарантирует, что модули не interfering с данными друг друга.
В планах: реализовать «умную» деинсталляцию, которая при удалении модуля убирает только его зависимости (pip-пакеты, DLL), не затрагивая общие данные и файлы других модулей.
- Python 3.11+
- NVIDIA GPU с CUDA 12+ (рекомендуется) или CPU
- FluidR3_GM.sf2 (148 MB) — положить в
libs/FluidR3_GM.sf2
# Windows
install_windows.bat
# macOS
bash install_macos.sh
# Вручную:
pip install -r requirements.txt
pip install -r requirements-test.txt # для тестов# Windows (GPU)
start_win_web_ui_gui.bat
# Windows (CPU)
start_win_web_ui_cpu.bat
# macOS (GPU)
bash start_mac_web_ui_gui.sh
# macOS (CPU)
bash start_mac_web_ui_cpu.sh
# Или напрямую:
python main.py # Windows
python3 main.py # macOSОткрыть в браузере: http://127.0.0.1:7890
- Язык: выбор при первом запуске, смена в любой момент
- Default instrument: инструмент для превью Voice→MIDI (по умолч. саксофон)
- Toast duration: 3–15 сек
- Порядок вкладок: drag-to-reorder в Settings
- Очистка
_shared/_tmp/: при запуске (опционально)
python -m pytest tests/ -v
# 164 теста, ~4 секунды- Аудио на входе: WAV (16-bit, 44100 Hz)
- MIDI на выходе: стандартный
.midi - Датасет: WAV-пары
NNN_clean.wav/NNN_corrupt.wav+_params.json - Пресеты: JSON-файлы с параметрами искажений/генерации
- PyTorch 2.x + CUDA 12
- torchcrepe, hmmlearn, pretty_midi
- FastAPI + Jinja2 + uvicorn
- pyfluidsynth + FluidR3_GM.sf2
- matplotlib + librosa (пианолла)
- pytest + httpx + httpx2 (тесты)
MIT