← Блог

Как я научил Claude Code писать техно-музыку

Сережа Рис · 22 April 2026

claude-codemcpchrome-devtoolsstrudelmusiclive-codingвайбкодинг

Открыл strudel.cc по ссылке, которую прислал друг. Дал Claude Code на Opus 4.7 одну фразу — «c помощью девтулс напиши трек техно». Через Chrome DevTools MCP агент влез в редактор, залил семь параллельных дорожек, кликнул Play и заиграло техно на 135 BPM. Никакого файла на диске. Всё живьём в браузере.

Что прислал друг

Ссылка выглядела так: https://strudel.cc/#JDogcygiW2JkIDxoaCBvaD5dKjIiKS5iYW5rKCJ0cjkwOSIpLmRlYyguNCk%3D.

Хвост после # — это base64. Декодируется в одну строчку:

$: s("[bd <hh oh>]*2").bank("tr909").dec(.4)

И всё. Это законченное музыкальное произведение, упакованное в URL. Никакого сервера, никакой базы, никакого аккаунта. Открыл ссылку — слышишь луп. Закрыл — потерял. Самое короткое музыкальное произведение, которое я видел: целиком помещается в адресную строку.

Strudel в одном абзаце

Strudel.cc — это JS-порт TidalCycles, языка для live coding. Работает прямо в браузере, ставить ничего не надо. Пишешь однострочник, жмёшь Play — звучит. bd это бочка, hh — закрытый хэт, oh — открытый. bank("tr909") подгружает сэмплы Roland TR-909. Сама машина вышла в 1983-м, продали штук десять тысяч, Roland её сняли с производства как провал. Через несколько лет на этих сэмплах построили детройтское техно и чикагский хаус. Любую кнопку Play в Берлине сегодня нажимает призрак этой машины.

Промпт

Дал Claude Code на Opus 4.7 одну фразу:

c помощью девтулс напиши трек техно

Пять слов. С опечаткой в «девтулс». Дальше всё делал агент.

Как агент влез в редактор

Тут важная штука. Strudel — это не textarea. Это CodeMirror, обёрнутый в собственный класс. Просто так через document.querySelector и value = ничего не зальёшь.

Агент это не знал. Никто его не учил. Через Chrome DevTools MCP он запустил evaluate_script, перебрал window.*, нашёл объект strudelMirror с методами setCode, evaluate, toggle, repl.scheduler. Это стандартный исследовательский паттерн — открыть консоль, посмотреть что лежит на глобале, дёрнуть метод.

Когда я первый раз настраивал DevTools MCP — отдельный пост про это есть — я думал, агент будет долбиться через DOM-селекторы. А он сразу полез в JS-рантайм через evaluate_script и нашёл API быстрее, чем я бы нашёл в документации. Если бы документация вообще была.

Google в анонсе DevTools MCP сказал так: «coding agents are effectively programming with a blindfold on». Без браузера агент пишет код вслепую — не видит, что происходит на странице. С DevTools MCP он видит DOM, консоль, network, рантайм. Как разработчик, который открыл инспектор.

┌─────────────────┐    одна фраза     ┌──────────────┐
│  Сережа         │ ─────────────────▶│  Claude Code │
│  «напиши техно» │                   │  Opus 4.7    │
└─────────────────┘                   └──────┬───────┘
                                             │
                              MCP evaluate_script
                                             ▼
                                    ┌─────────────────┐
                                    │  window.strudel │
                                    │  Mirror.setCode │
                                    └────────┬────────┘
                                             │
                                    7 параллельных $:
                                             ▼
                                       играет техно

Через тот же DevTools MCP агент уже доставал у меня ключ от YouTube API — но там была плоская читалка. Тут впервые он что-то сочинил и нажал кнопку.

Что получилось

Агент залил семь параллельных дорожек. В Strudel каждая строка с $: — отдельный слой, играющий синхронно. Получилась такая структура:

$: kick     ──▶ bd*4                   tr909, ровные четверти
$: clap     ──▶ ~ cp ~ cp              на 2 и 4 доли
$: hh_close ──▶ hh*8                   8 на такт, тихо
$: hh_open  ──▶ ~ oh ~ oh ~ oh ~ oh    оффбит, открытый
$: bass     ──▶ saw c2                 резонанс 18, фильтр гуляет
                                        синусом 350→2400 Гц / 8 тактов
$: chord    ──▶ Cm7 stab               дотед-эйт делэй
$: drone    ──▶ sub C3                 подложка
                │
                ▼
            135 BPM techno

Самое интересное — басс. Агент сам додумал, что для кислотного техно нужна sawtooth-волна с резонансом, и навесил автоматизацию фильтра — синус, который катает cutoff между 350 и 2400 Гц с периодом восемь тактов. Это уже не «вставил готовый паттерн», это музыкальное решение. Я бы сам не написал.

Я не лез в код. Не открывал, не редактировал. Я слушал.

Кнопка Play

Когда агент залил код, он попробовал запустить через JS — strudelMirror.evaluate(). По логике должно было заиграть. Не заиграло.

Браузеры запрещают audio context без user gesture. Никакой play() из кода не сработает, пока пользователь не кликнет хоть куда-то на странице. Это политика, чтобы сайты не шумели сами по себе.

Агент это понял по тишине. Через mcp__chrome-devtools__click нашёл кнопку Play по uid и кликнул. Первый клик случайно стопнул — потому что evaluate() уже стартовал scheduler где-то в недрах, и клик стал вторым тоглом. Агент сообразил, кликнул ещё раз. Заиграло.

Эта мелочь мне понравилась больше всего. Агент не знал заранее про user gesture policy, не знал что scheduler уже запустился. Он действовал как человек, который первый раз видит интерфейс — попробовал, не получилось как ожидал, кликнул ещё раз. Тот же цикл, что у меня в браузере. Только без рук.

Финал

Chrome DevTools MCP открывает агенту любые веб-приложения. Не только редакторы, не только формы — вообще всё, что есть в Chrome. Музыка тут — самая яркая иллюстрация, потому что ты сразу слышишь результат. Не надо читать diff, не надо проверять тесты. Заиграло — работает. Не заиграло — нет.

Я получил четыре минуты техно лично для себя. Этот трек никто не услышит, его нет в файле, он не сохранится после того как я закрою вкладку. Но он был. Это и есть software for one в чистом виде — артефакт, который существует ровно столько, сколько мне нужно, и сделан под единственного слушателя.

Раньше для такого надо было сесть в DAW, перебрать сэмплы, построить рэк, накрутить фильтры. Час работы для опытного продюсера. Я не продюсер. Сегодня я написал пять слов агенту — и через минуту услышал техно, которое сам бы не собрал никогда.

Дальше очевидно — попросить агента сделать вариацию, добавить брейк, поменять банк сэмплов на 808, перевести в drum-n-bass. Всё через тот же канал — одна фраза, агент лезет в strudelMirror, переписывает дорожки, кликает Play. Я слушаю.

Рук в этом процессе нет вообще.

Подписаться на обновления — @sereja_tech