Chipgen: плагин для написания чиптюн музыки с помощью нейросетей
Как я сделал эксперементальный проект попав в раздражение от качества чиптюн музыки в суно
А как собственно все началось


Копироаание внутри грок
Стандартный путь получить «музыку под Sega Genesis» через нейросеть — открыть Suno или похожий сервис и написать текстом: FM-синтез, минорная тональность, темп такой-то. Работает — до определённого предела. Предел в том, что под капотом нет никакого Sega Genesis. Есть модель, обученная на миллионах треков, которая статистически угадывает, как должен звучать «чиптюн», — и звучит она правдоподобно, но не достоверно. Спросить «подвинь вот эту ноту на канале баса на полтона выше» бессмысленно: там нет ноты как объекта, есть волна на выходе чёрного ящика, и единственный способ что-то поправить — сгенерировать заново и понадеяться.


Обучение модели Grok
chipgen — это ответ на раздражение от этого предела. Идея простая до банальности, если её проговорить: вместо того чтобы учить нейросеть имитировать звук чипа, дать ей сам чип. Не наушники с чужой музыкой — пианино.
Что под капотом ?;
Sega Mega Drive (она же Genesis) звучала как звучала благодаря двум конкретным микросхемам: YM2612 — FM-синтезатор, 6 каналов, 4 оператора на канал, и SN76489 — более простой генератор прямоугольных волн плюс канал шума. Вся музыка в играх той эпохи — это последовательность команд этим двум чипам: включить канал, задать частоту, отпустить ноту.
chipgen не имитирует их звук — внутри крутится настоящая эмуляция. YM2612 — это [Nuked-OPN2](https://github.com/nukeykt/Nuked-OPN2), реализация, сделанная реверс-инжинирингом по фотографиям кристалла настоящего чипа: не приближение, а гейт-левел симуляция того, что происходит внутри кремния. SN76489 написан с нуля по открытой спецификации, включая деталь, которую легко упустить: у Sega-версии этого чипа шумовой генератор — 16-битный сдвиговый регистр, тогда как в оригинальном чипе от Texas Instruments — 15-битный. Разница в один бит меняет весь характер «шума» на выходе. Мелкая деталь, но именно из таких деталей и складывается «настоящий» звук в отличие от «похожего».
Как этим управляют






Немного грока
Не текстом. Управление — плоский поток событий: включить инструмент на канале, взять ноту, отпустить, подождать. Это ровно то же разделение труда, что в DefleMask или Furnace — трекерах, которыми уже двадцать с лишним лет пользуются люди, сочиняющие чиптюн вручную: паттерн ссылается на ноту и инструмент по имени, вся физика синтеза (алгоритм, обратная связь, огибающая каждого из четырёх операторов) живёт отдельно в банке инструментов.
chipgen даёт тот же интерфейс не человеку с мышкой, а любой нейросети — и любому человеку, который предпочитает написать события руками, а не щёлкать по трекеру. Архитектура модели значения не имеет: важен только формат вывода. Один и тот же движок рендерит результат вне зависимости от того, откуда взялись события — из вызова облачного API, из локальной сети, или из текста, который написал человек.
По пути обнаружился настоящий баг, который хорошо иллюстрирует, зачем вообще так заморачиваться: первый тестовый рендер выдавал не звук, а плоскую константу вместо колебания. Причина — busy-флаг настоящего чипа: после каждой записи в регистр он занят несколько десятков тактов, и если следующая запись приходит раньше, она просто теряется. Это поведение настоящего железа, а не эмулятора, и без понимания этой детали никакой «похожий на чип» звук не выйдет достоверным — он либо разъедет тайминги, либо тихо потеряет часть команд.
## Архив, который просто работает


Мистраль тесты
Отдельная задача была не техническая, а практическая: чтобы этим можно было пользоваться без установки чего-либо. Весь проект — это zip-архив. Загружаешь его в чат с любой нейросетью, у которой есть исполнение кода (Claude, GPT, Grok — все проверены и работают), говоришь «это синтезатор», и дальше можно скармливать треки в VGM-формате или просить сочинить с нуля. Внутри — bootstrap-скрипт, который сам находит компилятор в системе или откатывается на чистый Python, если компилятора нет. Никакого хостинга, никакого плагина для установки — архив читает сам себя и через минуту готов.
Самое практичное следствие этого — мгновенный экспорт наброска сразу в WAV (послушать) и VGM (открыть в настоящем трекере и доработать руками). Трек можно сгенерировать и прослушать прямо внутри чата, не выходя никуда.
## Банк инструментов
Изначально — 19 патчей, спроектированных вручную и откалиброванных по громкости друг относительно друга через измерение, не на слух. Дальше — два способа получить больше и настоящее: чтение реальных пресетов из библиотеки Furnace (несколько сотен FM-патчей — бас, гитары, орган, синты, ударные, которые реально использовались в продакшене), и прямое вытаскивание инструментов из VGM-рипов настоящих игр — движок проигрывает регистровый лог, ловит момент, когда нота берётся, и снимает слепок параметров оператора в этот момент. Это уже готовый, аутентичный инструмент, а не реконструкция по слуху.
## В чём, собственно, уникальность
По отдельности каждый кусок этой конструкции уже где-то существует. Трекеры с точной эмуляцией чипов — старая, отработанная область. LLM-агенты, управляющие музыкой через символьное представление вместо сырого аудио, — активно развивающаяся область прямо сейчас: за последние два года вышел не один десяток исследовательских работ на эту тему, и все формулируют один и тот же тезис — код и структура понятнее модели, чем звуковая волна. Но там речь о MIDI или ABC-нотации общего назначения, без привязки к конкретному винтажному чипу и его квиркам.
Сочетание сразу трёх вещей — точность на уровне регистров конкретного чипа, архив-мост, который любой агент с исполнением кода запускает сам, и настоящий интероп с существующей трекерной сценой (импорт и экспорт в реальные форматы) — этого именно вместе найти не удалось нигде.
## Заодно и бенчмарк




Клод с гопотой взвыли
Заставить модель мыслить в категориях канала, оператора, регистра — задача другого рода, чем «опиши вайб трека». По наблюдениям в процессе тестирования, разные модели — Sonnet, Grok, GPT — в какой-то момент начинают описывать свою работу с этим инструментом не в терминах звука, а в терминах программы: последовательность состояний чипа, а не аудио-эстетика. Это не строгий научный вывод, а повторяющееся наблюдение при реальном использовании — но оно само по себе интересно как маркер того, что интерфейс меняет то, как модель держит задачу в голове.
Практическое тестирование на разных моделях показало разное и по качеству, и по тому, что вообще технически доступно:
- **Gemini (бесплатный тариф)** не проходит на старте — нет песочницы с исполнением кода, выгрузить WAV или VGM попросту нечем.
- **Grok** — фаворит для итеративной работы: дёшево по токенам, быстро схватывает интерфейс через контекст разговора. Рабочий результат получается даже на лайт-версии модели — хороший аргумент в пользу того, что дело в самом интерфейсе, а не в том, что нужна обязательно самая мощная модель.
- **GPT** технически полностью справляется — первый по-настоящему серьёзный результат в проекте сгенерирован именно им.
- **Claude** по глубине рассуждения о структуре и гармонии — на переднем крае, но при длительной итеративной работе через контекст (без дообучения) расходует больше токенов, чем более дешёвые варианты.
Это два разных критерия, не один: где-то важнее качество рассуждения, где-то — стоимость итерации, и выбор зависит от того, что нужно в моменте.
## Честно: это не «закинул архив — получил шедевр»
Через контекст модель осваивает синтаксис интерфейса почти сразу — README и пара примеров, и она уже технически корректно расставляет ноты. Но правильный синтаксис не равно хорошая композиция. Чтобы результат звучал как продуманный трек, а не как формально верный набор команд, нужна настоящая работа с обучающими данными — даже если модель облачная и в буквальном смысле не дообучается, а держит всё в контексте. По опыту тестирования, разумный минимум для агента, дающего стабильно приличный результат, — это база примерно из 10+ полноценных треков и 20+ демо-нарезок. Меньше — и результат технически исполним, но художественно никакой. Один из практичных источников материала для такой базы — [vgmrips.net](https://vgmrips.net/), открытый архив VGM-рипов из реальных игр: тот же формат, что уже используется для импорта инструментов, годится и как обучающий корпус.
## Дальше
Сейчас всё функционально и проверено на нескольких независимых моделях — это не proof of concept на честном слове. Дальше — не доказывать, что подход работает, а закрывать разрыв между «технически работает» и «даёт стабильно хороший результат без танцев с бубном»: собственный датасет для дообучения, зашитый и сжатый банк инструментов, чтобы агенту не нужно было лезть за примерами в интернет, и в перспективе — компактная локальная модель, специализированная именно под этот интерфейс, которой не нужен ни чужой контекст, ни облако вообще. Список поддерживаемых чипов тоже не собирается останавливаться на двух — дальше зоопарк расширяется вслед за тем, что
умеет сам Furnace.
Страница проекта на GitHub
Телеграмм где находится демо и техническая часть проекта (сюда залить не могу wav файлы мп3 местным сервисом не поддерживаются)
Данный плагин можно использовать как интерфейсное решение для создания отдельных chiptune нейросетей обученных на массиве VGM DMP и прочих файлах.
