Bollywood HungamaAnushka Sen named Indian global ambassador for Newport Beach Film Festival 2026PunchChina pulls out of Sri Lanka port logistics ventureInquirer5 fishermen nabbed for alleged blast fishing in Occidental MindoroThe Jerusalem PostMassive overnight Russian attack leaves over half a million Ukrainians without power, Zelensky saysInquirer EntertainmentFilipino model Christina Nadin walks Victoria’s Secret Fashion Show 2026 runwayUN NewsProtecting Earth’s fragile biodiversity takes spotlight at Armenia talksCBS NewsCartel members linked to murders of 10 workers from Canadian companyThe South AfricanGqeberha weather forecast for days 3 to 5 of second TestVarietyBrit Coming-of-Age Comedy ‘The State of Us’ Lands U.K. Theatrical Deal With Vertigo (EXCLUSIVE)GIGAZINEMetaが「ニュースサイトからの情報収集を可能とする利用規約」を削除ZDF heuteAktuelle Pressemitteilungen des ZDFThe Sydney Morning HeraldPatterson hits 16th first-class ton
The Daily Newsstand · Free, Always
Monday, October 19, 2026

PromptBeats: музыка из текста прямо в браузере

Translate

Привет! Меня зовут Дмитрий Сергеев, я облачный администратор в Битрикс24.

Рассказываю о создании проекта для Хакатона в нашей компании: музыкального ИИ-приложения PromptBeats.

Установить проект можно с репозитория: github.com/dimyard/PromptBeats. Для работы ИИ-функций нужно подключить API-ключ языковой модели. PromptBeats поддерживает OpenAI, Anthropic и Gemini, а провайдер и ключ указываются в файле .env. 

Без подключения модели можно дать агенту доступ к проекту и генерировать треки в JSON, которые можно загружать, воспроизводить, сохранять в библиотеке и редактировать.

В проекте, кроме меня, участвовали двое моих коллег: Максим Тишковский и Дмитрий Баранов.

Содержание

  • Как выглядит PromptBeats

  • Как родилась идея PromptBeats

  • Проект помогает развить мелодию, которая играет в голове

  • Промпты к музыке

  • Как проектировали архитектуру

  • Что такое Song JSON

  • Как работает ИИ-часть и сколько стоила генерация

  • Что осталось за пределами MVP и что в потенциальных планах на будущее

Как выглядит PromptBeats

Слева находится часть для работы с моделью: чат и его история. 

Есть примеры промптов, чтобы пользователю было проще начать. Например, у человека вообще нет конкретной идеи или он плохо разбирается в музыке, но хочет попробовать. Тогда можно выбрать один из готовых вариантов и оттолкнуться от него:

Есть библиотека треков, которые мы сгенерировали во время тестирования. Чтобы открыть её, нужно нажать на иконку с нотой:

Откроется библиотека:

В самом редакторе находится набор инструментов. Его можно менять, добавлять свои дорожки и выбирать звуки из встроенного каталога. В ручном режиме можно самостоятельно создать дорожку, выбрать синтезатор и звук, а затем расставить ноты.

Набор инструментов и звуков пока довольно базовый:

У проекта есть метаданные: тональность, темп, количество тактов и дорожек. Справа можно посмотреть Song JSON текущей композиции — подробнее о его устройстве расскажу ниже.

Как родилась идея PromptBeats

Я немного занимаюсь музыкой, играю в группе. При записи репетиции столкнулся со сложностями и задумался, можно ли сделать свой инструмент.

Понятно, что создать собственную DAW (программу для создания и записи музыки) с нуля — слишком амбициозная задача для хакатона. Поэтому начали сужать идею до того, что реально можно сделать за один день. В основе получался своего рода лупер. Вспомнился FL Studio, в котором я когда-то делал демки:

Источник: image-line.com

Я подумал, что можно сделать похожий упрощённый инструмент, в котором ИИ используется для создания и редактирования музыки. В итоге мы остановились на этой идее: для наших хакатонов это выглядело довольно свежо, глубоких музыкальных проектов раньше не было.

Проект помогает развить мелодию, которая играет в голове

Важная идея проекта в том, что музыку необязательно генерировать через модель с нуля.

Если у человека уже есть собственная идея, можно, как в FL Studio, самостоятельно выбрать инструменты, расставить свою мелодию, а затем использовать промпты для ее развития.

Это был один из основных посылов проекта. Иногда у тебя в голове звучит мелодия, хочется её дописать, но не хватает фантазии, чтобы продолжить или как-то развить. PromptBeats должен помогать именно в такой ситуации. 

Промпты к музыке

Cпециальные музыкальные промпты писать не нужно. Желательно базово понимать, что такое темп и бит, различать основные инструменты — например, барабаны и бас.

Мы специально ориентировались на достаточно широкую аудиторию и не хотели заставлять пользователя погружаться в тональности, доминанты, сильные и слабые доли. Особенно на хакатоне: если бы жюри пришлось сначала разбираться в музыкальной теории, показать проект мы бы просто не успели.

Как проектировали архитектуру

Изначально мы понимали далеко не всё, хотя базово роли разделить могли, потому что представляли основные части системы: бэкенд с моделью и промптами, фронтенд с редактированием и воспроизведением и сам движок, который должен проигрывать музыку. Это мы обсуждали еще до хакатона, когда питчили идею друг другу.

Но конкретная реализация определялась уже во время разработки: выбор стека, библиотеки для генерации звука, способ работы с моделью.

В первый час мы окончательно определяли контракты и то, как всё должно работать. Здесь сильно помогли агенты: они подсказывали решения с учётом того, сколько времени у нас вообще есть. Например, были библиотеки с большим количеством более интересных звуков, но их интеграция и доработка заняли бы слишком много времени. А смысл хакатона — успеть сделать работающий и способный заинтересовать пользователя MVP. 

Для независимой разработки использовали общий пример трека: фронтенд и плеер могли работать с ним, пока подключалась модель. Для агентов зафиксировали границы ответственности и вели общий журнал изменений, что готово, где находится и как использовать результат соседнего компонента.

Приложение изначально проектировали браузерным, чтобы оно не зависело от конкретной платформы. Для плеера выбрали Tone.js: в нем уже есть базовые инструменты и возможность добавлять собственные. Сам проект в основном написан на JavaScript.

Мы втроем параллельно работали над разными частями проекта, поэтому в первый час согласовали контракты между ними. Центральным стал Song JSON: фронтенд, бэкенд и плеер должны были одинаково понимать структуру композиции.

Что такое Song JSON

Для создания, редактирования и ИИ-генерации все треки представлены в JSON. По сути, это своеобразная партитура: дорожки, на каком шаге конкретный инструмент звучит, какую ноту играет, какова ее продолжительность и интенсивность.

Всё описывается в таком формате, и модели очень удобно с ним работать: подобную структурированную информацию она легко генерирует. Мы начинали с простой тестовой композиции, а позднее модель уже генерировала гораздо более сложные варианты, например треки с семью дорожками. Причём такие композиции уже полностью генерировала модель: она знала формат и структуру проекта и создавала трек.

Например, так будет выглядеть начало «К Элизе» Бетховена:

{
  "version": 1,
  "title": "Für Elise — opening",
  "bpm": 80,
  "key": "A minor",
  "bars": 2,
  "tracks": [
    {
      "id": "piano",
      "role": "lead",
      "instrument": "synth",
      "sound": "sampled_piano",
      "gain": 0.8,
      "events": [
        { "step": 0, "note": "E5", "dur": 2, "vel": 0.8 },
        { "step": 2, "note": "D#5", "dur": 2, "vel": 0.7 },
        { "step": 4, "note": "E5", "dur": 2, "vel": 0.8 },
        { "step": 6, "note": "D#5", "dur": 2, "vel": 0.7 },
        { "step": 8, "note": "E5", "dur": 2, "vel": 0.8 },
        { "step": 10, "note": "B4", "dur": 2, "vel": 0.75 },
        { "step": 12, "note": "D5", "dur": 2, "vel": 0.78 },
        { "step": 14, "note": "C5", "dur": 2, "vel": 0.75 },
        { "step": 16, "note": "A4", "dur": 4, "vel": 0.82 }
      ]
    }
  ]
}

Идея такая: модели передаётся промпт пользователя и контракт Song JSON. Модель по этому контракту генерирует сам трек.

Song JSON — внутренний стандарт приложения. В этом формате трек создаётся, редактируется, записывается, импортируется и экспортируется: готовый луп можно скачать в WAV для дальнейшего использования, а проект сохранить в JSON для последующего редактирования.

Таким образом треки можно генерировать вне PromptBeats. Song JSON можно создать и вне интерфейса нашего приложения. Например, агент с доступом к репозиторию может прочитать лежащие там контракты, сгенерировать совместимый JSON, а готовый файл затем можно импортировать.

Как работает ИИ-часть и сколько стоила генерация

Здесь всё достаточно просто. На бэкенде есть LLM-шлюз с ограничением частоты и повторных попыток. В .env-файле задаём API-ключ. Для тестирования мы купили ключ OpenAI на пять долларов. Его хватило на весь день генерации, и даже немного осталось.

Изначально мы опасались, что генерация будет расходовать очень много токенов и на входе, и на выходе. Но оказалось, что формат Song JSON позволяет делать это довольно экономично. При генерации более объёмных композиций столкнулись с ограничением длины ответа модели, и увеличили лимит.

Что осталось за пределами MVP и что в потенциальных планах на будущее

Мы хотели добавить запись и отдельные аудиодорожки. Например, у пользователя уже есть записанная основа в WAV, а приложение добавляет к ней инструменты.

Другая идея — интеграция с VST-плагинами, но это уже очень амбициозная задача и постепенно превращает проект в полноценную DAW. Для браузера это тоже достаточно сложно, поэтому в условиях хакатона от идеи отказались.

Ещё хотели сделать piano roll, чтобы выбирать ноты на виртуальной клавиатуре вместо селектора.

И хотелось расширить эффекты. Сейчас возможности этой части ограничены, а в задумке были reverb, delay, фильтры и другие эффекты.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.