GitHub Copilot для пианиста: AI-автодополнение нот прямо на iPhone
Разработчик обучил трансформер на 125M параметров, который в реальном времени продолжает игру на фортепиано прямо на iPhone — без облака и серверов.
GitHub Copilot для пианиста: AI автодополняет ноты прямо на смартфоне
Индепендент-разработчик опубликовал детальный разбор проекта RollTab — приложения для iPhone, которое слушает, как вы играете на MIDI-клавиатуре, и тут же продолжает мелодию силами нейросети. Никаких облаков, никаких серверов: всё происходит локально на устройстве. Под капотом — трансформер на 125 миллионов параметров, работающий в реальном времени со скоростью около 108 нот в секунду на iPhone 15.
Идея: «Copilot, но для фортепиано»
Почти год назад автор начал экспериментировать с идеей: подключить MIDI-пианино к телефону, сыграть что-нибудь — и позволить AI продолжить за тебя. По аналогии с GitHub Copilot, только для музыки.
Концепция проста: вместо того чтобы подсказывать следующую строку кода, модель «промптируется» несколькими нотами на MIDI-клавиатуре. Затем модель продолжает то, что вы сыграли — полностью на устройстве.
«Think GitHub Copilot, but for piano» — так автор описывает суть проекта в одной фразе.
Задача оказалась глубже, чем ожидалось: понадобилось четырнадцать экспериментов, прежде чем результат стал достаточно хорошим, чтобы о нём написать.
Как устроена модель
Три ключевых фактора дали наибольший прирост качества: правильное представление MIDI-данных, агрессивная очистка обучающей выборки и применение DPO (Direct Preference Optimization) — дообучения на основе предпочтений — на финальном этапе.
Набор данных
Финальный датасет содержал несколько сотен тысяч MIDI-файлов — около 300 миллионов нотных событий.
Интересный вывод: попытка увеличить датасет в пять раз дала обратный эффект — модели получились хуже. Качество и отбор данных оказались важнее их объёма.
Структура обучения
На начальном этапе модель обучалась с помощью кросс-энтропийной функции потерь по пяти выходным головам: тип события, высота ноты, временной сдвиг, длительность и скорость нажатия (velocity). Это позволяло отслеживать точность каждого параметра отдельно.
Однако у этого подхода есть принципиальное ограничение: продолжение музыки не имеет единственно правильного ответа. Одна удержанная нота даёт модели лишь одно «верное» продолжение, хотя музыкально корректных вариантов может быть множество.
Именно поэтому DPO (Direct Preference Optimization — метод оптимизации прямых предпочтений) стал финальным шагом: он учит модель выбирать более «музыкально убедительные» варианты продолжения.
graph TD A[Обучающий датасет\n300M нотных событий] --> B[Предобработка\nи очистка данных] B --> C[Трансформер 125M параметров\nкросс-энтропия по 5 головам] C --> D[DPO дообучение\nна предпочтениях] D --> E[Квантизация\nдля iPhone] E --> F[RollTab App\n~108 нот/сек на iPhone 15]
Техническое представление MIDI
Автор разработал специальный токенизатор для MIDI-событий, в котором каждая нота представлена набором из пяти атрибутов:
| Атрибут | Значения | Описание |
|---|---|---|
event_type | PAD, BOS, EOS, NOTE, MASK | Тип события |
pitch | 0–128 | MIDI-высота ноты |
delta | 0–48 шагов + 72, 96, 144, 192 | Временной сдвиг |
duration | 1–96 шагов + 144, 192, 288, 384 | Длительность |
velocity | 4, 12, 20, …, 124 | Сила нажатия |
Временная сетка построена из расчёта 24 шага на одну четвертную ноту.
RollTab: бесплатное приложение для iPhone
Приложение RollTab доступно бесплатно для всех, у кого есть MIDI-клавиатура и iPhone или iPad.
Контекст: on-device AI для творчества
Проект RollTab вписывается в более широкий тренд: запуск мощных AI-моделей непосредственно на потребительских устройствах, без передачи данных в облако. Это особенно важно для музыкантов, которым критична минимальная задержка (latency): даже несколько десятков миллисекунд задержки облачного запроса делают реальное время игры невозможным.
В последние годы наблюдается рост числа нативных приложений для AI-генерации MIDI — рынок активно движется к нативным решениям. Но большинство из них работают через облако или требуют подписки. RollTab принципиально отличается: модель живёт прямо на чипе смартфона.
Автор открыто поделился всеми деталями обучения в своём блоге, что делает проект ценным ориентиром для тех, кто хочет обучать компактные специализированные модели под мобильные устройства. Главный урок, который можно вынести: качество данных бьёт их количество, а DPO способен существенно улучшить «музыкальность» выхода там, где метрики на основе кросс-энтропии уже не помогают.