После первой статьи я собрал отзывы и готов показать переработанную программу - Partscaster. Кто-то увидит её впервые, поэтому начну с того, что это, зачем и чем отличается от других.
Сайт с примерами "было/стало": https://zazza.github.io/partscaster/, репозиторий: https://github.com/Zazza/partscaster.

Что это и откуда название
Не так давно вышла вторая версия открытой модели для генерации музыки — YuE2. Открытых моделей несколько, но YuE2 сейчас одна из сильнейших.
По замерам самих авторов на 192 песнях она обходит открытые LeVo 2, ACE-Step 1.5 и SongBloom и держится рядом с Suno. Независимого сравнения я не нашёл, так что это оценка авторов.
В итоге GitHub завален графическими оболочками для её Python-скриптов: ввёл стиль и текст - получил трек.
Поэтому первое название, yue-studio, я поменял на Partscaster - так называют гитару, собранную своими руками из деталей разных производителей: корпус от одной, гриф от другой, звукосниматели от третьей. Это лучше всего передаёт идею: не сгенерировать трек, а собрать его и довести до результата, который отличается от нейротрека.
Зачем
Нейротрек плоский: играет почти статично, мелодия будто посчитана математикой. Той самой "живости" нет.
Музыка - дело субъективное: кому-то она неинтересна, кому-то — фон. Я же меломан: обожаю живые гитары и барабаны, примочки и педали, которые меняют звук, барабанные сбивки и гитарные соло на электрухе. Всегда мечтал купить электрогитару, комбик и играть для себя, но руки у меня только под клавиатуру.
Я не очень люблю мейнстрим, которым завалены интернет и площадки вроде Яндекс Музыки. А обычный звук любого генератора нейротреков не вызывает у меня особой радости. В Partscaster я сделал то, чего мне не хватало.
Что изменилось после первой статьи
Работает на видеокарте с 8 ГБ

В комментариях двое написали, что у них карта на 8 ГБ, а я ориентировался на 16 (прежний движок на PyTorch занимал около 11 ГБ). И дали ссылку на yue2.cpp - отдельную реализацию YuE2 на C++ (на GGML, как llama.cpp для текстовых моделей). Веса там уже переведены в формат GGUF и сжаты до разной точности, есть свой сервер.
И оно действительно работает. В итоге, я убрал движок генерации на PyTorch и перевёл всё на yue2.cpp. Может, он пока еще сыроват, но так мне и не очень важно - рабоатет без проблем, к тому же автор так уже перегнал кучу других моделей, то есть у него есть опыт.
Замеры на моей 4070 Ti Super:
трек на 2:47 — за 50 секунд вместо 91;
модель Q8 занимает около 8 ГБ, в экономном режиме — около 4,5 ГБ;
модель подбирается по объёму видеокарты при установке, выбрать можно любую.
Проверил и на RTX 4060 с 8 ГБ — на другом компьютере: работает.
Живые барабаны и бас
Барабаны нейротрека заменяются сэмплами настоящих: бочка, малый, хэт, тарелки, томы — каждый удар на своём месте и со своей силой. YuE2 почти не играет томы и сбивки, поэтому в пресетах есть "барабанщик": перед сменой частей песни он делает сбивку. Бас тоже заменяется сэмплами настоящего баса по нотам исходной партии. Для электроники — драм-машины 808, 909, Linn, CR-78, Simmons.
Гитара: что получилось и что нет
То же самое хотелось провернуть с гитарой, но разделение трека на дорожки выделяет её плохо даже у лучшей модели — RoFormer. Зато появился "гитарист по аккордам": он играет новую партию по аккордам трека, приемлемо работает с нейлоном или полуакустикой. И умеет записать второй дубль - это добавляет еще больше "живости" треку. Так делают настоящие записи, одно и тоже играется дважды и пишется в разные каналы, в итоге звук гитары становится "шире" и это отчётливо слышно в нейротреках, они "узкие".
Заменить им гитару нейротрека один в один пока не выходит, но буду пытаться ещё.
Страница «Инструменты»: педали и усилители
Моя любимая страница. Здесь не нужен трек: короткая фраза гитары, баса или барабанов играет по кругу через цепочку "педали -> усилитель -> кабинет -> пространство". Усилители и педали - захваты настоящего железа (NAM, нейросетевые копии реальных приборов). Крутишь регулятор - через четверть секунды фраза звучит уже с новой настройкой, не останавливаясь. Можно менять темп и выключать обработку, чтобы сравнить с сухим звуком.
Понравившийся звук сохраняется как свой инструмент, и потом его можно выбрать в студии для дорожки трека. Для меня это то самое "купить примочку и покрутить", только в программе.

Пресеты звука
В прошлой версии "мастеринг" и "барабанные сбивки" я делал руками. Теперь это пресеты звука - правила по жанрам: больше сотни встроенных, 34 направления по три варианта. Пресет меняет барабаны и бас, обрабатывает гитару, выставляет громкость дорожек по замеру трека, делает мастеринг. Голос не трогает. Свой пресет можно собрать в редакторе - так получается ещё лучше. "Дыхание" осталось отдельной обработкой в один клик.
На странице "Пресеты звука" любой пресет можно послушать: он накладывается на демо-трек своего жанра (в первый раз это занимает несколько минут). Встроенный пресет не правится напрямую - делаешь копию, меняешь обработки и сохраняешь как свой. Свои пресеты можно править, переименовывать и удалять. А если удачно довёл трек в студии, эти правки можно сохранить как новый пресет и потом наложить на другой трек.
Верх частот
YuE2 обрезает звук выше 16 кГц (вообще, 10кГц (!) но ИИ настаивает на 16, не буду спорить, вероятно, что-то редкое выше 10 поднимается) и почти не играет тарелки: крэш у неё тише, чем в живых записях, на 6–30 дБ. Partscaster достраивает верх и добавляет тарелки. Уровни подбирал по замеру против живых записей в FLAC. На нормальной акустике это хорошо слышно.
Через ИИ-агента
У приложения есть MCP-сервер: трек можно доводить не руками, а попросив ИИ-агента — сгенерировать, поменять барабаны, наложить пресет, послушать замеры.
Что убрал
Помощника по стихам на Ollama и профили исполнителей ("стиль как у группы X"). Это быстрые пути "сделать нейротрек", а Partscaster — про доводку трека, что я лишний раз подчеркиваю, чтобы не лезть в нишу Suno и Yue2-studio (мне там нечего делать). К тому же, стало меньше зависимостей.
Было/стало
Лучше один раз послушать: на сайте есть куски треков сгенерированных программе. Можно переключать "было / стало" прямо во время игры — вторая версия продолжает с того же места: https://zazza.github.io/partscaster/#examples
Сами треки я собираю альбомами (это моя вкусовщина):
https://samotoy.ru/dmitry/static-and-gold/
https://samotoy.ru/dmitry/smoke-and-flint/
Установка
Готовые пакеты под Windows, Linux и macOS: приложение, MCP-сервер и воркер — часть, которая генерирует на видеокарте. Воркер может стоять на той же машине или на отдельной с видеокартой.
Windows —
partscaster-worker.exe, без WSL: окно установки, дальше работает в фоне со значком в трее.Linux —
./install.shиз архива воркера, либо приложение само ставит его на машину по SSH.Установка качает модели и наборы сэмплов — около 20 ГБ.
Сайт: https://zazza.github.io/partscaster
Репозиторий: https://github.com/Zazza/partscaster.
ЗЫ
На macOS не проверял: приложение собирается, а воркеру нужна видеокарта NVIDIA.
Гитара через разделение на дорожки пока выделяется плохо — заменить её один в один не выходит.
