Генерация музыки и текстов песен в Minimax
Составление музыкальных промптов, работа с текстами песен и API Minimax music-2.5, настройка звука и разбор ошибок.
В навыке 6 файлов. Их можно скопировать или скачать по отдельности, сохранив указанные имена и папки.
SKILL.md
---
name: minimax-music
description: >
Помощник по API Minimax для генерации музыки и текстов песен (модель music-2.5).
Помогает составлять музыкальные промпты, структурировать текст с помощью 14 тегов разделов,
создавать код вызова API (Python/JS/cURL), разбирать ошибки, настраивать качество звука
и проходить два этапа работы: сначала текст, затем музыка.
triggers:
- minimax
- music generation
- music api
- generate music
- generate song
- lyrics generation
- song lyrics
- music prompt
- audio generation
- hailuo music
---
# Помощник по созданию музыки и текстов песен в Minimax
Вы специализируетесь на API генерации музыки Minimax. Помогайте пользователям создавать музыку с помощью модели **music-2.5**: составлять промпты, структурировать тексты песен, писать рабочий код для API и разбирать ошибки.
## Краткий справочник
| Параметр | Значение |
| --- | --- |
| Модель | `music-2.5` |
| Конечная точка для музыки | `POST https://api.minimax.io/v1/music_generation` |
| Конечная точка для текста | `POST https://api.minimax.io/v1/lyrics_generation` |
| Заголовок авторизации | `Authorization: Bearer <API_KEY>` |
| Ограничение текста песни | 1–3500 символов |
| Ограничение промпта | 0–2000 символов |
| Максимальная длительность | около 5 минут |
| Форматы выдачи | `"hex"` (встроенные данные JSON) или `"url"` (ссылка на 24 часа) |
| Аудиоформаты | mp3, wav, pcm |
| Частота дискретизации | 16000, 24000, 32000, 44100 Гц |
| Битрейт | 32000, 64000, 128000, 256000 бит/с |
| Потоковая выдача | Поддерживается с `"stream": true` только для формата hex |
### Теги структуры (всего 14)
```
[Intro] [Verse] [Pre Chorus] [Chorus] [Post Chorus] [Bridge] [Interlude]
[Outro] [Transition] [Break] [Hook] [Build Up] [Inst] [Solo]
```
## Основные сценарии
### Сценарий 1. Быстрая генерация музыки
Если у пользователя уже есть текст песни и представление о стиле:
1. Помогите уточнить промпт по формуле из восьми компонентов:
`[Genre/Style], [Era/Reference], [Mood/Emotion], [Vocal Type], [Tempo/BPM], [Instruments], [Production Style], [Atmosphere]`.
2. Разметьте текст подходящими тегами разделов.
3. Проверьте ограничения: текст не длиннее 3500 символов, промпт — 2000.
4. Создайте код вызова API на выбранном пользователем языке.
Образцы стилей — в `references/prompt-engineering-guide.md`.
Готовый код — в `examples/code-examples.md`.
### Сценарий 2. Песня с нуля: сначала текст, затем музыка
Если у пользователя есть тема, но пока нет текста:
1. **Шаг 1 — создать текст**: вызовите `POST /v1/lyrics_generation` с полями:
- `mode`: `"write_full_song"`;
- `prompt`: описание темы или замысла пользователя.
2. **Шаг 2 — проверить**: API вернёт `song_title`, `style_tags` и структурированный `lyrics`.
3. **Шаг 3 — доработать**: помогите пользователю исправить текст, теги или структуру.
4. **Шаг 4 — создать музыку**: вызовите `POST /v1/music_generation` с полями:
- `lyrics`: окончательный текст после шагов 1–3;
- `prompt`: сочетание `style_tags` и предпочтений пользователя;
- `model`: `"music-2.5"`.
Схемы обеих конечных точек — в `references/api-reference.md`.
### Сценарий 3. Улучшение промпта
Если пользователь хочет улучшить музыкальный промпт:
1. Найдите места, где исходному описанию не хватает конкретики.
2. Примените формулу из восьми компонентов и восполните пробелы.
3. Проверьте типичные ошибки:
- Отрицания вроде `"no drums"`: замените их описанием желаемого звучания.
- Несовместимые стили вроде `"vintage lo-fi"` и `"crisp modern production"`.
- Слишком общие формулировки вроде `"sad song"`: добавьте жанр, инструменты и темп.
4. Покажите сравнение до и после.
Жанровые шаблоны и описания голосов — в `references/prompt-engineering-guide.md`.
### Сценарий 4. Разбор ошибок API
Если вызов API завершился ошибкой:
1. Проверьте `base_resp.status_code` в ответе:
- `1002` — ограничена частота запросов: подождите и повторите с экспоненциальной задержкой.
- `1004` — ошибка авторизации: проверьте ключ API, лишние пробелы и срок действия; при необходимости создайте новый.
- `1008` — недостаточно средств: пополните баланс на platform.minimax.io.
- `1026` — содержимое отклонено: удалите чувствительные фрагменты из текста песни или промпта.
- `2013` — неверные параметры: сверьте типы и диапазоны со схемой.
- `2049` — неверный формат ключа API: проверьте строку ключа и завершающие переводы строк.
2. Если `data.status` равен `1`, а не `2`, генерация ещё идёт; это не ошибка.
Полная таблица ошибок и дерево диагностики — в `references/error-codes.md`.
### Сценарий 5. Настройка качества звука
Если пользователь спрашивает о параметрах аудио:
1. Уточните назначение результата:
- **Поток или предпросмотр**: `sample_rate: 24000`, `bitrate: 128000`, `format: "mp3"`.
- **Обычное скачивание**: `sample_rate: 44100`, `bitrate: 256000`, `format: "mp3"`.
- **Профессиональная работа или импорт в DAW**: `sample_rate: 44100`, `bitrate: 256000`, `format: "wav"`.
- **Узкий канал связи**: `sample_rate: 16000`, `bitrate: 64000`, `format: "mp3"`.
2. Объясните различия форматов выдачи:
- `"url"` удобнее, но ссылка истекает через 24 часа — скачайте файл сразу.
- `"hex"` содержит данные прямо в ответе; их нужно преобразовать из шестнадцатеричной строки в байты, зато ссылка не истечёт.
Допустимые значения `audio_setting` — в `references/api-reference.md`.
## Правила составления музыкального промпта
Помогая пользователю писать промпт, соблюдайте следующие правила:
- **Будьте конкретны**: `"intimate, breathy female vocal with subtle vibrato"` вместо `"female vocal"`.
- **Указывайте BPM**: `"92 BPM"`, `"slow tempo around 70 BPM"`, `"fast-paced 140 BPM"`.
- **Соединяйте настроение и жанр**: `"melancholic indie folk"` вместо одного лишь `"sad music"`.
- **Называйте инструменты**: `"fingerpicked acoustic guitar, soft brushed drums, upright bass"`.
- **Описывайте характер записи**: `"lo-fi warmth, vinyl crackle, bedroom recording feel"`.
- **НЕ используйте отрицания**: `"no drums"` не работает; описывайте только желаемое.
- **НЕ сочетайте противоречащие друг другу стили**: `"vintage lo-fi"` и `"crisp modern production"` несовместимы.
- **Укладывайтесь в 2000 символов**: более длинный промпт будет отклонён.
### Формула из восьми компонентов
Сочетайте компоненты в таком порядке:
1. **Жанр и стиль**: `"Indie folk"`, `"Progressive house"`, `"Soulful blues"`.
2. **Эпоха или ориентир**: `"1960s Motown"`, `"modern"`, `"80s synthwave"`.
3. **Настроение и эмоция**: `"melancholic"`, `"euphoric"`, `"bittersweet"`, `"triumphant"`.
4. **Тип вокала**: `"breathy female alto"`, `"raspy male tenor"`, `"choir harmonies"`.
5. **Темп и BPM**: `"slow 60 BPM"`, `"mid-tempo 100 BPM"`, `"driving 128 BPM"`.
6. **Инструменты**: `"acoustic guitar, piano, strings, light percussion"`.
7. **Характер записи**: `"lo-fi"`, `"polished pop production"`, `"raw live recording"`.
8. **Атмосфера**: `"intimate"`, `"epic"`, `"dreamy"`, `"cinematic"`.
Не каждому промпту нужны все восемь компонентов. Обычно хватает четырёх–шести.
## Правила структуры текста песни
Помогая размечать текст песни:
- Ставьте тег структуры на отдельной строке перед каждым разделом.
- Используйте `\n` для переноса строки внутри текста и `\n\n` для паузы между разделами.
- Укладывайтесь в 3500 символов с учётом тегов.
- Для инструментального перерыва используйте `[Inst]` или `[Solo]`, не добавляя текст после тега.
- Ставьте `[Build Up]` перед припевом, чтобы обозначить нарастание.
- Сохраняйте близкое число слогов в строках куплета для естественного ритма.
### Типичные структуры песен
**Обычная поп- или рок-песня:**
`[Intro] → [Verse] → [Pre Chorus] → [Chorus] → [Verse] → [Pre Chorus] → [Chorus] → [Bridge] → [Chorus] → [Outro]`
**Баллада:**
`[Intro] → [Verse] → [Verse] → [Chorus] → [Verse] → [Chorus] → [Bridge] → [Chorus] → [Outro]`
**Электронная или танцевальная музыка:**
`[Intro] → [Build Up] → [Chorus] → [Break] → [Verse] → [Build Up] → [Chorus] → [Outro]`
**Простая короткая песня:**
`[Verse] → [Chorus] → [Verse] → [Chorus] → [Outro]`
### Инструментал и вокал
- **Песня с вокалом**: разместите текст под тегами разделов.
- **Чистый инструментал**: используйте только теги `[Inst]` либо другие структурные теги без текста под ними.
- **Инструментальное вступление, затем вокал**: начните с `[Intro]` без текста, затем добавьте `[Verse]` с текстом.
- **Инструментальный проигрыш посреди песни**: вставьте `[Inst]` или `[Solo]` между вокальными разделами.
## Обработка ответа API
При создании кода или объяснении ответа API:
- **Статус запроса**: `base_resp.status_code === 0` означает успех.
- **Завершение генерации**: `data.status === 2` означает, что работа закончена; `1` — ещё выполняется.
- **Результат в URL** (`output_format: "url"`): `data.audio` содержит ссылку для скачивания, которая действует 24 часа.
- **Результат в hex** (`output_format: "hex"`): `data.audio` содержит аудиобайты в шестнадцатеричной записи; преобразуйте их через `bytes.fromhex()` в Python или `Buffer.from(hex, "hex")` в Node.js.
- **Поток** (`stream: true`): работает только с hex; фрагменты данных приходят через SSE в `data.audio`.
- **Дополнительные сведения**: объект `extra_info` содержит `music_duration` в секундах, `music_sample_rate`, `music_channel` (2 = стерео), `bitrate` и `music_size` в байтах.
## Сценарий 6. Учёт генераций в Google Sheets
В проекте есть Python-скрипт `tracker/sheets_logger.py`: он записывает каждую генерацию в панель Google Sheets.
**Однократная настройка:**
1. Нужен проект Google Cloud с включённым Sheets API.
2. Нужен JSON-файл ключа сервисного аккаунта.
3. Таблица Google Sheets должна быть открыта для email сервисного аккаунта с правом редактирования.
4. В `.env` должны быть заданы `GOOGLE_SHEET_ID` и `GOOGLE_SERVICE_ACCOUNT_JSON`.
5. Выполните `pip install -r tracker/requirements.txt`.
**После генерации:**
```python
from tracker.sheets_logger import log_generation
# After a successful music_generation call:
log_generation(
prompt="Indie folk, melancholic, acoustic guitar",
lyrics="[Verse]\nWalking through...",
audio_setting={"sample_rate": 44100, "bitrate": 256000, "format": "mp3"},
result=api_response, # the full JSON response dict
title="Autumn Walk"
)
```
Панель отслеживает 16 столбцов: время, название, промпт, фрагмент текста песни, жанр, настроение, тип вокала, BPM, инструменты, аудиоформат, частоту дискретизации, битрейт, длительность, URL результата, статус и сведения об ошибке.
Жанр, настроение, тип вокала, BPM и инструменты автоматически извлекаются из текста промпта.
## Важные замечания
- Ссылки на аудио истекают через **24 часа** — скачивайте файлы и сохраняйте локально.
- Модель **недетерминирована**: одинаковый ввод может дать разные результаты.
- Лучшее качество вокала модель даёт на **китайском и английском**; на других языках оно может быть ниже.
- Если недопустимые символы составляют больше **10%** содержимого, аудио не создаётся.
- На некоторых платформах один аккаунт может выполнять только одну генерацию одновременно.
- Music-2.5 создаёт аудио длительностью до **примерно пяти минут** за один вызов.
references/api-reference.md
# Справочник по музыкальному API Minimax
## Авторизация
Все запросы требуют токен Bearer в заголовке Authorization.
```
Authorization: Bearer <MINIMAX_API_KEY>
Content-Type: application/json
```
**Базовый URL:** `https://api.minimax.io/v1/`
Получите ключ API на [platform.minimax.io](https://platform.minimax.io) в разделе Account Management > API Keys. Используйте ключ **Pay-as-you-go**: ключи Coding Plan не покрывают генерацию музыки.
---
## Конечная точка генерации музыки
```
POST https://api.minimax.io/v1/music_generation
```
### Тело запроса
```json
{
"model": "music-2.5",
"prompt": "Indie folk, melancholic, acoustic guitar, soft piano, female vocals",
"lyrics": "[Verse]\nWalking through the autumn leaves\nNobody knows where I've been\n\n[Chorus]\nEvery road leads back to you",
"audio_setting": {
"sample_rate": 44100,
"bitrate": 256000,
"format": "mp3"
},
"output_format": "url",
"stream": false
}
```
### Параметры
| Параметр | Тип | Обязателен | По умолчанию | Ограничения | Описание |
| --- | --- | --- | --- | --- | --- |
| `model` | string | Да | — | `"music-2.5"` | Идентификатор версии модели |
| `lyrics` | string | Да | — | 1–3500 символов | Текст песни с тегами структуры и переносами строк `\n` |
| `prompt` | string | Нет | `""` | 0–2000 символов | Описание стиля, настроения, жанра и инструментов |
| `audio_setting` | object | Нет | см. ниже | — | Параметры качества звука |
| `output_format` | string | Нет | `"hex"` | `"hex"` или `"url"` | Формат аудиоданных в ответе |
| `stream` | boolean | Нет | `false` | — | Включение потоковой выдачи, только для hex |
### Объект audio_setting
| Поле | Тип | Допустимые значения | По умолчанию | Описание |
| --- | --- | --- | --- | --- |
| `sample_rate` | integer | `16000`, `24000`, `32000`, `44100` | `44100` | Частота дискретизации в Гц |
| `bitrate` | integer | `32000`, `64000`, `128000`, `256000` | `256000` | Битрейт в бит/с |
| `format` | string | `"mp3"`, `"wav"`, `"pcm"` | `"mp3"` | Аудиоформат результата |
### Структурные теги (поддерживается 14)
Теги управляют построением песни. Ставьте каждый на отдельной строке перед текстом соответствующего раздела:
| Тег | Назначение |
| --- | --- |
| `[Intro]` | Инструментальное или вокальное вступление |
| `[Verse]` | Основной куплет |
| `[Pre Chorus]` | Нарастание перед припевом |
| `[Chorus]` | Основной припев или хук |
| `[Post Chorus]` | Раздел сразу после припева |
| `[Bridge]` | Контрастный раздел, обычно перед последним припевом |
| `[Interlude]` | Инструментальный проигрыш между разделами |
| `[Outro]` | Завершение песни |
| `[Transition]` | Короткий музыкальный переход |
| `[Break]` | Ритмический разрыв или пауза |
| `[Hook]` | Запоминающийся мелодический хук |
| `[Build Up]` | Нарастание интенсивности перед дропом или припевом |
| `[Inst]` | Чисто инструментальный раздел, без вокала |
| `[Solo]` | Инструментальное соло, например гитарное |
Теги входят в ограничение в 3500 символов.
### Успешный ответ (output_format: "url")
```json
{
"trace_id": "0af12abc3def4567890abcdef1234567",
"data": {
"status": 2,
"audio": "https://cdn.minimax.io/music/output_abc123.mp3"
},
"extra_info": {
"music_duration": 187.4,
"music_sample_rate": 44100,
"music_channel": 2,
"bitrate": 256000,
"music_size": 6054912
},
"base_resp": {
"status_code": 0,
"status_msg": "success"
}
}
```
### Успешный ответ (output_format: "hex")
```json
{
"trace_id": "0af12abc3def4567890abcdef1234567",
"data": {
"status": 2,
"audio": "fffb9064000000..."
},
"extra_info": {
"music_duration": 187.4,
"music_sample_rate": 44100,
"music_channel": 2,
"bitrate": 256000,
"music_size": 6054912
},
"base_resp": {
"status_code": 0,
"status_msg": "success"
}
}
```
### Поля ответа
| Поле | Тип | Описание |
| --- | --- | --- |
| `trace_id` | string | Уникальный идентификатор запроса для отладки |
| `data.status` | integer | `1` = выполняется, `2` = завершено |
| `data.audio` | string | URL аудио (режим url) или байты в шестнадцатеричном виде (режим hex) |
| `extra_info.music_duration` | float | Длительность в секундах |
| `extra_info.music_sample_rate` | integer | Фактически использованная частота дискретизации |
| `extra_info.music_channel` | integer | Число каналов (`2` = стерео) |
| `extra_info.bitrate` | integer | Фактически использованный битрейт |
| `extra_info.music_size` | integer | Размер файла в байтах |
| `base_resp.status_code` | integer | `0` = успех; остальные значения см. в кодах ошибок |
| `base_resp.status_msg` | string | Сообщение о статусе для человека |
### Потоковая выдача
Если задано `stream: true`:
- Работает только с `output_format: "hex"`, несовместима с `"url"`.
- Ответ приходит в виде событий Server-Sent Events (SSE).
- Каждый фрагмент содержит часть hex-данных в `data.audio`.
- У фрагментов с аудио стоит `data.status: 1`.
- Завершающий фрагмент содержит `data.status: 2` и сводные данные.
- Соедините все hex-фрагменты и преобразуйте их, чтобы получить полное аудио.
---
## Конечная точка генерации текста песни
```
POST https://api.minimax.io/v1/lyrics_generation
```
### Тело запроса
```json
{
"mode": "write_full_song",
"prompt": "A soulful blues song about a rainy night and lost love"
}
```
### Параметры
| Параметр | Тип | Обязателен | По умолчанию | Ограничения | Описание |
| --- | --- | --- | --- | --- | --- |
| `mode` | string | Да | — | `"write_full_song"` или `"edit"` | Режим генерации |
| `prompt` | string | Нет | — | 0–2000 символов | Описание темы, идеи или стиля |
| `lyrics` | string | Нет | — | 0–3500 символов | Существующий текст песни, только для режима edit |
| `title` | string | Нет | — | — | Название песни; при передаче сохраняется |
### Тело ответа
```json
{
"song_title": "Rainy Night Blues",
"style_tags": "Soulful Blues, Rainy Night, Melancholy, Male Vocals, Slow Tempo",
"lyrics": "[Verse]\nThe streetlights blur through window pane\nAnother night of autumn rain\n\n[Chorus]\nYou left me standing in the storm\nNow all I have is memories warm",
"base_resp": {
"status_code": 0,
"status_msg": "success"
}
}
```
### Поля ответа
| Поле | Тип | Описание |
| --- | --- | --- |
| `song_title` | string | Созданное или сохранённое название песни |
| `style_tags` | string | Описания стиля через запятую; используйте как музыкальный промпт |
| `lyrics` | string | Текст песни с тегами структуры, готовый для music_generation |
| `base_resp.status_code` | integer | `0` = успех |
| `base_resp.status_msg` | string | Сообщение о статусе |
### Два этапа работы
```
Step 1: POST /v1/lyrics_generation
Input: { mode: "write_full_song", prompt: "theme description" }
Output: { song_title, style_tags, lyrics }
Step 2: POST /v1/music_generation
Input: { model: "music-2.5", prompt: style_tags, lyrics: lyrics }
Output: { data.audio (url or hex) }
```
---
## Готовые настройки качества звука
### Узкий канал связи (самый маленький файл)
```json
{ "sample_rate": 16000, "bitrate": 64000, "format": "mp3" }
```
### Предпросмотр или черновик
```json
{ "sample_rate": 24000, "bitrate": 128000, "format": "mp3" }
```
### Обычное качество (рекомендуется по умолчанию)
```json
{ "sample_rate": 44100, "bitrate": 256000, "format": "mp3" }
```
### Профессиональная работа или импорт в DAW
```json
{ "sample_rate": 44100, "bitrate": 256000, "format": "wav" }
```
---
## Ограничения частоты и стоимость
| Тариф | Стоимость в месяц | Кредиты | RPM (запросов в минуту) |
| --- | --- | --- | --- |
| Starter | $5 | 100,000 | 10 |
| Standard | $30 | 300,000 | 50 |
| Pro | $99 | 1,100,000 | 200 |
| Scale | $249 | 3,300,000 | 500 |
| Business | $999 | 20,000,000 | 800 |
Расход кредитов за генерацию зависит от длительности аудио. Ссылки на аудио истекают через 24 часа.
references/prompt-engineering-guide.md
# Руководство по составлению музыкальных промптов ## Формула из восьми компонентов Составляйте промпт из этих компонентов. Все восемь не обязательны: обычно достаточно четырёх–шести. ``` [Genre/Style], [Era/Reference], [Mood/Emotion], [Vocal Type], [Tempo/BPM], [Instruments], [Production Style], [Atmosphere] ``` ### Подробности о компонентах **1. Жанр и стиль** Indie folk, Progressive house, Soulful blues, Pop ballad, Jazz fusion, Synthwave, Ambient electronic, Country rock, Hip-hop boom bap, Classical orchestral, R&B, Disco funk, Lo-fi indie, Metal **2. Эпоха или ориентир** 1960s Motown, 70s disco, 80s synthwave, 90s grunge, 2000s pop-punk, modern, retro, vintage, contemporary, classic **3. Настроение и эмоция** melancholic, euphoric, nostalgic, hopeful, bittersweet, triumphant, yearning, peaceful, brooding, playful, intense, dreamy, defiant, tender, wistful, anthemic **4. Тип вокала** breathy female alto, powerful soprano, raspy male tenor, warm baritone, deep resonant bass, falsetto, husky, crystal clear, choir harmonies, a cappella, duet, operatic **5. Темп и BPM** slow 60 BPM, ballad tempo 70 BPM, mid-tempo 100 BPM, upbeat 120 BPM, driving 128 BPM, fast-paced 140 BPM, energetic 160 BPM **6. Инструменты** acoustic guitar, electric guitar, fingerpicked guitar, piano, Rhodes piano, upright bass, electric bass, drums, brushed snare, synthesizer, strings, violin, cello, trumpet, saxophone, harmonica, ukulele, banjo, mandolin, flute, organ, harp, percussion, congas, tambourine, vibraphone, steel drums **7. Характер записи** lo-fi, polished pop production, raw live recording, studio quality, bedroom recording, vinyl warmth, analog tape, digital crisp, spacious reverb, dry and intimate, heavily compressed, minimalist **8. Атмосфера** intimate, epic, dreamy, cinematic, ethereal, gritty, lush, sparse, warm, cold, dark, bright, urban, pastoral, cosmic, underground --- ## Шаблоны промптов по жанрам ### Поп ``` Upbeat pop, catchy chorus, synthesizer, four-on-the-floor beat, bright female vocals, radio-ready production, energetic 120 BPM ``` ### Поп-баллада ``` Pop ballad, emotional, piano-driven, powerful female vocals with vibrato, sweeping strings, slow tempo 70 BPM, polished production, heartfelt ``` ### Инди-фолк ``` Indie folk, melancholic, introspective, acoustic fingerpicking guitar, soft piano, gentle male vocals, intimate bedroom recording, 90 BPM ``` ### Соул-блюз ``` Soulful blues, rainy night, melancholy, raspy male vocals, slow tempo 65 BPM, electric guitar, upright bass, harmonica, warm analog feel ``` ### Джаз ``` Jazz ballad, warm and intimate, upright bass, brushed snare, piano, muted trumpet, 1950s club atmosphere, smooth male vocals, 80 BPM ``` ### Электронная и танцевальная музыка ``` Progressive house, euphoric, driving bassline, 128 BPM, synthesizer pads, arpeggiated leads, modern production, festival energy, build-ups and drops ``` ### Рок ``` Indie rock, anthemic, distorted electric guitar, powerful drum kit, passionate male vocals, stadium feel, energetic 140 BPM, raw energy ``` ### Классическая и оркестровая музыка ``` Orchestral, sweeping strings, French horn, dramatic tension, cinematic, full symphony, dynamic crescendos, epic and majestic ``` ### Хип-хоп ``` Lo-fi hip hop, boom bap, vinyl crackle, jazzy piano sample, relaxed beat 85 BPM, introspective mood, head-nodding groove ``` ### R&B ``` Contemporary R&B, smooth, falsetto male vocals, Rhodes piano, muted guitar, late night urban feel, 90 BPM, lush production ``` ### Кантри и американа ``` Appalachian folk, storytelling, acoustic fingerpicking, fiddle, raw and honest, dusty americana, warm male vocals, 100 BPM ``` ### Метал ``` Heavy metal, distorted riffs, double kick drum, aggressive powerful vocals, dark atmosphere, intense and relentless, 160 BPM ``` ### Синтвейв и 80-е ``` Synthwave, 80s retro, pulsing synthesizers, gated reverb drums, neon-lit atmosphere, driving arpeggios, nostalgic and cinematic, 110 BPM ``` ### Лоу-фай инди ``` Lo-fi indie pop, mellow 92 BPM, soft female vocals airy and intimate, clean electric guitar, lo-fi drums, vinyl warmth, bedroom recording aesthetic, late night melancholy ``` ### Диско-фанк ``` Disco funk, groovy bassline, wah-wah guitar, brass section, four-on-the-floor kick, 115 BPM, energetic female vocals, sparkling production, dancefloor energy ``` --- ## Каталог описаний вокала ### Женский вокал - `breathy female vocal with emotional delivery and subtle vibrato` - `powerful soprano, clear and soaring, with controlled dynamics` - `soft, intimate female alto, whispery and gentle` - `sassy, confident female voice with rhythmic phrasing` - `ethereal, angelic female vocal with layered harmonies` - `raspy, soulful female voice with blues inflection` ### Мужской вокал - `warm baritone, smooth and resonant, with emotional depth` - `raspy male tenor with rock edge and raw power` - `deep, resonant bass voice, commanding and rich` - `falsetto male vocal, airy and delicate, R&B style` - `gravelly crooner, vintage jazz feel, intimate delivery` - `powerful tenor with soaring high notes and controlled vibrato` ### Ансамбль и особые варианты - `male-female duet with harmonized chorus` - `choir harmonies, layered voices, cathedral reverb` - `a cappella vocal arrangement, no instruments` - `spoken word with musical backing` - `vocal ad-libs and runs between main phrases` --- ## Слова для описания настроения и эмоции Эти описания хорошо согласуются с обучающими данными Minimax: | Категория | Слова для промпта | | --- | --- | | Грусть | melancholic, bittersweet, yearning, wistful, somber, mournful, lonely | | Радость | euphoric, joyful, uplifting, celebratory, playful, carefree, sunny | | Напряжение | driving, powerful, fierce, relentless, urgent, explosive, raw | | Спокойствие | peaceful, serene, meditative, tranquil, floating, gentle, soothing | | Мрачность | brooding, ominous, haunting, sinister, shadowy, tense, mysterious | | Романтика | tender, intimate, warm, passionate, longing, devoted, sensual | | Эпичность | triumphant, majestic, anthemic, soaring, grandiose, cinematic, sweeping | | Ностальгия | retro, vintage, throwback, reminiscent, dreamy, hazy, faded | --- ## Чего следует избегать ### Отрицания (НЕ ИСПОЛЬЗУЙТЕ) Модель ненадёжно обрабатывает отрицательные инструкции. | Плохо | Лучше | | --- | --- | | "no drums" | "acoustic guitar and piano only" | | "without vocals" | используйте тег `[Inst]` в тексте песни | | "not too fast" | "slow tempo 70 BPM" | | "don't use autotune" | "raw, natural vocal delivery" | ### Несовместимые стили Не сочетайте противоречащие друг другу эстетики: | Противоречие | Почему | | --- | --- | | "vintage lo-fi" + "crisp modern production" | лоу-фай и кристальная чёткость противоречат друг другу | | "intimate whisper" + "powerful belting" | одновременно шептать и петь мощным полным голосом нельзя | | "minimalist" + "full orchestra" | разреженное и плотное звучание противоречат друг другу | | "raw punk" + "polished pop production" | характеры записи не сочетаются | ### Слишком общие описания | Слабый промпт | Сильный промпт | | --- | --- | | "sad song with guitar" | "melancholic indie folk, fingerpicked acoustic guitar, male vocals, intimate, 85 BPM" | | "happy music" | "upbeat pop, bright female vocals, synth and piano, 120 BPM, radio-ready" | | "rock song" | "indie rock, anthemic, distorted electric guitar, driving drums, passionate vocals, 140 BPM" | | "electronic music" | "progressive house, euphoric, 128 BPM, synthesizer pads, driving bassline" | --- ## Проверочный список для улучшения промпта При проверке промпта спросите: 1. Назван ли жанр? Например, `"indie folk"`, а не просто `"folk"`. 2. Описаны ли настроение и эмоция хотя бы одним словом? 3. Названы ли конкретные инструменты, а не просто «музыка»? 4. Указан ли темп или уровень энергии: BPM либо словами? 5. Описан ли тип вокала, если в песне есть вокал? 6. Не превышает ли промпт 2000 символов? 7. Есть ли отрицания, которые нужно переписать? 8. Нет ли сочетаний несовместимых стилей?
references/error-codes.md
# Справочник ошибок API Minimax ## Таблица кодов ошибок | Код | Название | Причина | Решение | | --- | --- | --- | --- | | `0` | Успех | Запрос выполнен | Ничего делать не нужно | | `1002` | Ограничена частота | Слишком много запросов в минуту | Подождите 10–30 секунд и повторите с экспоненциальной задержкой | | `1004` | Ошибка авторизации | Ключ API неверен, истёк или отсутствует | Проверьте ключ на platform.minimax.io, отсутствие пробелов; при истечении создайте новый | | `1008` | Недостаточный баланс | На аккаунте закончились кредиты | Пополните баланс на platform.minimax.io > Billing | | `1026` | Содержимое отклонено | Текст или промпт не прошёл модерацию | Уберите чувствительные, жестокие или откровенные фрагменты | | `2013` | Неверные параметры | Неподходящие типы или значения вне допустимого диапазона | Сверьте все параметры со схемой API | | `2049` | Неверный формат ключа API | Строка ключа повреждена | Проверьте завершающие переводы строк, лишние пробелы и ошибки копирования | ## Дерево диагностики ``` Получили ответ с ошибкой? │ ├─ Проверьте base_resp.status_code │ ├─ 1002 (ограничена частота) │ ├─ Отправляете много запросов? → Добавьте задержку между вызовами. │ ├─ Запрос всего один? → RPM вашего тарифа может быть низким (Starter = 10 RPM). │ └─ Действие: подождите и повторите с экспоненциальной задержкой (10, 20, 40 секунд). │ ├─ 1004 (ошибка авторизации) │ ├─ Ключ API задан? → Проверьте формат заголовка Authorization. │ ├─ Это ключ Coding Plan? → Для музыки нужен ключ Pay-as-you-go. │ ├─ Срок действия ключа истёк? → Создайте новый на platform.minimax.io. │ └─ Действие: проверьте формат «Authorization: Bearer <key>» без лишних пробелов. │ ├─ 1008 (недостаточный баланс) │ ├─ Проверьте остаток кредитов на platform.minimax.io. │ └─ Действие: пополните баланс или перейдите на более высокий тариф. │ ├─ 1026 (содержимое отклонено) │ ├─ Проверьте текст песни на чувствительные слова и темы. │ ├─ Проверьте промпт на откровенное содержимое. │ └─ Действие: исправьте и отправьте повторно; правила модерации не опубликованы. │ ├─ 2013 (неверные параметры) │ ├─ model = "music-2.5", а не "music-01" или другое значение? │ ├─ Длина lyrics — от 1 до 3500 символов? │ ├─ Длина prompt — не больше 2000 символов? │ ├─ sample_rate: 16000, 24000, 32000 или 44100? │ ├─ bitrate: 32000, 64000, 128000 или 256000? │ ├─ format: "mp3", "wav" или "pcm"? │ ├─ output_format: "hex" или "url"? │ └─ Действие: исправьте неверный параметр и повторите запрос. │ ├─ 2049 (неверный формат ключа API) │ ├─ В конце ключа есть перевод строки или пробелы? │ ├─ Он правильно скопирован из панели управления? │ └─ Действие: скопируйте ключ заново и уберите пробелы. │ └─ data.status === 1 (это не ошибка!) └─ Генерация ещё идёт. Проверьте статус позже или дождитесь окончания. ``` ## Частые ошибки параметров | Ошибка | Проблема | Исправление | | --- | --- | --- | | `"model": "music-01"` | Не та модель для собственного API | Используйте `"music-2.5"` | | `"lyrics": ""` | Пустой текст песни | Нужен текст длиной 1–3500 символов | | `"sample_rate": 48000` | Недопустимая частота дискретизации | Используйте 16000, 24000, 32000 или 44100 | | `"bitrate": 320000` | Недопустимый битрейт | Используйте 32000, 64000, 128000 или 256000 | | `"format": "flac"` | Неподдерживаемый формат | Используйте "mp3", "wav" или "pcm" | | `"stream": true` + `"output_format": "url"` | Поток работает только с hex | Задайте `output_format: "hex"` или отключите поток | | Отсутствует заголовок `Content-Type` | Сервер не может разобрать JSON | Добавьте `Content-Type: application/json` | | В конце ключа есть `\n` | Авторизация не срабатывает | Уберите завершающий перевод строки | | Промпт длиннее 2000 символов | API отклоняет запрос | Сократите промпт | | Текст длиннее 3500 символов | API отклоняет запрос | Сократите текст или уберите часть тегов структуры | ## Коды HTTP | Статус HTTP | Значение | Действие | | --- | --- | --- | | `200` | Запрос обработан | Проверьте `base_resp.status_code` на ошибки уровня API | | `401` | Нет авторизации | Ключ API отсутствует или неверен | | `429` | Слишком много запросов | Уменьшите частоту и повторите позже | | `500` | Ошибка сервера | Повторите через небольшое время | | `503` | Сервис недоступен | Серверы Minimax перегружены; повторите позже |
examples/code-examples.md
# Примеры кода
Во всех примерах ключ API загружается из файла `.env` через переменные окружения.
---
## Python: генерация музыки (результат по URL)
```python
import os
import requests
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv("MINIMAX_API_KEY")
def generate_music(prompt, lyrics, output_file="output.mp3"):
response = requests.post(
"https://api.minimax.io/v1/music_generation",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"model": "music-2.5",
"prompt": prompt,
"lyrics": lyrics,
"audio_setting": {
"sample_rate": 44100,
"bitrate": 256000,
"format": "mp3"
},
"output_format": "url"
}
)
response.raise_for_status()
result = response.json()
if result["base_resp"]["status_code"] != 0:
raise Exception(f"API error {result['base_resp']['status_code']}: {result['base_resp']['status_msg']}")
audio_url = result["data"]["audio"]
duration = result["extra_info"]["music_duration"]
print(f"Generated {duration:.1f}s of music")
audio_data = requests.get(audio_url)
with open(output_file, "wb") as f:
f.write(audio_data.content)
print(f"Saved to {output_file}")
return result
# Usage
generate_music(
prompt="Indie folk, melancholic, acoustic guitar, soft piano, female vocals",
lyrics="""[Intro]
[Verse]
Walking through the autumn leaves
Nobody knows where I've been
[Chorus]
Every road leads back to you
Every song I hear rings true
[Outro]
""",
output_file="my_song.mp3"
)
```
---
## Python: генерация музыки (результат в hex)
```python
import os
import binascii
import requests
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv("MINIMAX_API_KEY")
def generate_music_hex(prompt, lyrics, output_file="output.mp3"):
response = requests.post(
"https://api.minimax.io/v1/music_generation",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"model": "music-2.5",
"prompt": prompt,
"lyrics": lyrics,
"audio_setting": {
"sample_rate": 44100,
"bitrate": 256000,
"format": "mp3"
},
"output_format": "hex"
}
)
response.raise_for_status()
result = response.json()
if result["base_resp"]["status_code"] != 0:
raise Exception(f"API error: {result['base_resp']['status_msg']}")
audio_bytes = binascii.unhexlify(result["data"]["audio"])
with open(output_file, "wb") as f:
f.write(audio_bytes)
print(f"Saved {len(audio_bytes)} bytes to {output_file}")
```
---
## Python: два этапа работы (текст, затем музыка)
```python
import os
import requests
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv("MINIMAX_API_KEY")
BASE_URL = "https://api.minimax.io/v1"
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
def generate_lyrics(theme):
"""Step 1: Generate structured lyrics from a theme."""
response = requests.post(
f"{BASE_URL}/lyrics_generation",
headers=HEADERS,
json={
"mode": "write_full_song",
"prompt": theme
}
)
response.raise_for_status()
data = response.json()
if data["base_resp"]["status_code"] != 0:
raise Exception(f"Lyrics error: {data['base_resp']['status_msg']}")
return data
def generate_music(style_prompt, lyrics, output_file="song.mp3"):
"""Step 2: Generate music from lyrics and a style prompt."""
response = requests.post(
f"{BASE_URL}/music_generation",
headers=HEADERS,
json={
"model": "music-2.5",
"prompt": style_prompt,
"lyrics": lyrics,
"audio_setting": {
"sample_rate": 44100,
"bitrate": 256000,
"format": "mp3"
},
"output_format": "url"
}
)
response.raise_for_status()
result = response.json()
if result["base_resp"]["status_code"] != 0:
raise Exception(f"Music error: {result['base_resp']['status_msg']}")
audio_data = requests.get(result["data"]["audio"])
with open(output_file, "wb") as f:
f.write(audio_data.content)
print(f"Saved to {output_file} ({result['extra_info']['music_duration']:.1f}s)")
return result
# Full workflow
theme = "A soulful blues song about a rainy night and lost love"
style = "Soulful blues, rainy night, melancholy, male vocals, slow tempo, electric guitar, upright bass"
print("Step 1: Generating lyrics...")
lyrics_data = generate_lyrics(theme)
print(f"Title: {lyrics_data['song_title']}")
print(f"Style: {lyrics_data['style_tags']}")
print(f"Lyrics:\n{lyrics_data['lyrics']}\n")
print("Step 2: Generating music...")
generate_music(style, lyrics_data["lyrics"], "blues_song.mp3")
```
---
## Python: потоковый ответ
```python
import os
import json
import binascii
import requests
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv("MINIMAX_API_KEY")
def generate_music_streaming(prompt, lyrics, output_file="stream_output.mp3"):
response = requests.post(
"https://api.minimax.io/v1/music_generation",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"model": "music-2.5",
"prompt": prompt,
"lyrics": lyrics,
"audio_setting": {
"sample_rate": 44100,
"bitrate": 256000,
"format": "mp3"
},
"output_format": "hex",
"stream": True
},
stream=True
)
response.raise_for_status()
chunks = []
for line in response.iter_lines():
if not line:
continue
line_str = line.decode("utf-8")
if not line_str.startswith("data:"):
continue
data = json.loads(line_str[5:].strip())
if data.get("base_resp", {}).get("status_code", 0) != 0:
raise Exception(f"Stream error: {data['base_resp']['status_msg']}")
if data.get("data", {}).get("status") == 1 and data["data"].get("audio"):
chunks.append(binascii.unhexlify(data["data"]["audio"]))
audio_bytes = b"".join(chunks)
with open(output_file, "wb") as f:
f.write(audio_bytes)
print(f"Streaming complete: {len(audio_bytes)} bytes saved to {output_file}")
```
---
## JavaScript / Node.js: генерация музыки (результат по URL)
```javascript
import "dotenv/config";
import { writeFile } from "fs/promises";
const API_KEY = process.env.MINIMAX_API_KEY;
async function generateMusic(prompt, lyrics, outputPath = "output.mp3") {
const response = await fetch("https://api.minimax.io/v1/music_generation", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "music-2.5",
prompt,
lyrics,
audio_setting: { sample_rate: 44100, bitrate: 256000, format: "mp3" },
output_format: "url",
}),
});
const result = await response.json();
if (result.base_resp?.status_code !== 0) {
throw new Error(`API Error ${result.base_resp?.status_code}: ${result.base_resp?.status_msg}`);
}
const audioUrl = result.data.audio;
const audioResponse = await fetch(audioUrl);
const audioBuffer = Buffer.from(await audioResponse.arrayBuffer());
await writeFile(outputPath, audioBuffer);
console.log(`Saved to ${outputPath} (${result.extra_info.music_duration.toFixed(1)}s)`);
return result;
}
// Usage
await generateMusic(
"Pop, upbeat, energetic, female vocals, synthesizer, driving beat",
`[Verse]
Running through the city lights
Everything is burning bright
[Chorus]
We are alive tonight
Dancing through the neon light`,
"pop_song.mp3"
);
```
---
## JavaScript / Node.js: результат в hex с преобразованием
```javascript
import "dotenv/config";
import { writeFile } from "fs/promises";
const API_KEY = process.env.MINIMAX_API_KEY;
async function generateMusicHex(prompt, lyrics, outputPath = "output.mp3") {
const response = await fetch("https://api.minimax.io/v1/music_generation", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "music-2.5",
prompt,
lyrics,
audio_setting: { sample_rate: 44100, bitrate: 256000, format: "mp3" },
output_format: "hex",
}),
});
const result = await response.json();
if (result.base_resp?.status_code !== 0) {
throw new Error(`API Error: ${result.base_resp?.status_msg}`);
}
const audioBuffer = Buffer.from(result.data.audio, "hex");
await writeFile(outputPath, audioBuffer);
console.log(`Saved ${audioBuffer.length} bytes to ${outputPath}`);
}
```
---
## JavaScript / Node.js: потоковая выдача
```javascript
import "dotenv/config";
import { writeFile } from "fs/promises";
const API_KEY = process.env.MINIMAX_API_KEY;
async function generateMusicStreaming(prompt, lyrics, outputPath = "stream_output.mp3") {
const response = await fetch("https://api.minimax.io/v1/music_generation", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "music-2.5",
prompt,
lyrics,
audio_setting: { sample_rate: 44100, bitrate: 256000, format: "mp3" },
output_format: "hex",
stream: true,
}),
});
const chunks = [];
const decoder = new TextDecoder();
const reader = response.body.getReader();
let buffer = "";
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
let boundary;
while ((boundary = buffer.indexOf("\n\n")) !== -1) {
const event = buffer.slice(0, boundary).trim();
buffer = buffer.slice(boundary + 2);
if (!event) continue;
const dataMatch = event.match(/^data:\s*(.+)$/m);
if (!dataMatch) continue;
const parsed = JSON.parse(dataMatch[1]);
if (parsed.base_resp?.status_code !== 0) {
throw new Error(`Stream error: ${parsed.base_resp?.status_msg}`);
}
if (parsed.data?.status === 1 && parsed.data?.audio) {
chunks.push(Buffer.from(parsed.data.audio, "hex"));
}
}
}
const fullAudio = Buffer.concat(chunks);
await writeFile(outputPath, fullAudio);
console.log(`Streaming complete: ${fullAudio.length} bytes saved to ${outputPath}`);
}
```
---
## cURL: генерация музыки
```bash
curl -X POST "https://api.minimax.io/v1/music_generation" \
-H "Authorization: Bearer $MINIMAX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "music-2.5",
"prompt": "Indie folk, melancholic, acoustic guitar, soft piano",
"lyrics": "[Verse]\nWalking through the autumn leaves\nNobody knows where I have been\n\n[Chorus]\nEvery road leads back to you\nEvery song I hear rings true",
"audio_setting": {
"sample_rate": 44100,
"bitrate": 256000,
"format": "mp3"
},
"output_format": "url"
}'
```
---
## cURL: генерация текста песни
```bash
curl -X POST "https://api.minimax.io/v1/lyrics_generation" \
-H "Authorization: Bearer $MINIMAX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "write_full_song",
"prompt": "A soulful blues song about a rainy night and lost love"
}'
```
---
## Готовые настройки качества звука
### Наборы параметров для Python dict
```python
QUALITY_LOW = {"sample_rate": 16000, "bitrate": 64000, "format": "mp3"}
QUALITY_PREVIEW = {"sample_rate": 24000, "bitrate": 128000, "format": "mp3"}
QUALITY_STANDARD = {"sample_rate": 44100, "bitrate": 256000, "format": "mp3"}
QUALITY_PROFESSIONAL = {"sample_rate": 44100, "bitrate": 256000, "format": "wav"}
```
### Наборы параметров для объекта JavaScript
```javascript
const QUALITY_LOW = { sample_rate: 16000, bitrate: 64000, format: "mp3" };
const QUALITY_PREVIEW = { sample_rate: 24000, bitrate: 128000, format: "mp3" };
const QUALITY_STANDARD = { sample_rate: 44100, bitrate: 256000, format: "mp3" };
const QUALITY_PROFESSIONAL = { sample_rate: 44100, bitrate: 256000, format: "wav" };
```
examples/lyrics-templates.md
# Шаблоны текстов песен ## Типичные структуры песен Распространённые последовательности тегов: **Обычная поп- или рок-песня:** `[Intro] → [Verse] → [Pre Chorus] → [Chorus] → [Verse] → [Pre Chorus] → [Chorus] → [Bridge] → [Chorus] → [Outro]` **Баллада:** `[Intro] → [Verse] → [Verse] → [Chorus] → [Verse] → [Chorus] → [Bridge] → [Chorus] → [Outro]` **Электронная или танцевальная музыка:** `[Intro] → [Build Up] → [Chorus] → [Break] → [Verse] → [Build Up] → [Chorus] → [Outro]` **Простая короткая песня:** `[Verse] → [Chorus] → [Verse] → [Chorus] → [Outro]` **Прогрессивная или эпичная песня:** `[Intro] → [Verse] → [Pre Chorus] → [Chorus] → [Interlude] → [Verse] → [Pre Chorus] → [Chorus] → [Bridge] → [Solo] → [Build Up] → [Chorus] → [Outro]` --- ## Шаблон поп-песни ``` [Intro] [Verse] Morning light breaks through my window pane Another day I try to start again The coffee's cold, the silence fills the room But something tells me change is coming soon [Pre Chorus] I can feel it in the air tonight Something shifting, pulling me toward the light [Chorus] I'm breaking through the walls I built Letting go of all this guilt Every step I take is mine I'm finally feeling fine I'm breaking through [Verse] The photographs are fading on the shelf I'm learning how to just be myself No more hiding underneath the weight Of everything I thought would make me great [Pre Chorus] I can feel it in the air tonight Something shifting, pulling me toward the light [Chorus] I'm breaking through the walls I built Letting go of all this guilt Every step I take is mine I'm finally feeling fine I'm breaking through [Bridge] It took so long to see The only one holding me back was me [Chorus] I'm breaking through the walls I built Letting go of all this guilt Every step I take is mine I'm finally feeling fine I'm breaking through [Outro] ``` --- ## Шаблон рок-песни ``` [Intro] [Verse] Engines roar on an empty highway Headlights cutting through the dark Running from the life I used to know Chasing down a distant spark [Verse] Radio plays our broken anthem Windows down and letting go Every mile puts it all behind me Every sign says don't look home [Pre Chorus] Tonight we burn it all Tonight we rise or fall [Chorus] We are the reckless hearts Tearing the world apart Nothing can stop this fire inside We are the reckless hearts [Inst] [Verse] Streetlights flicker like a warning But I'm too far gone to care Took the long road out of nowhere Found myself already there [Pre Chorus] Tonight we burn it all Tonight we rise or fall [Chorus] We are the reckless hearts Tearing the world apart Nothing can stop this fire inside We are the reckless hearts [Bridge] They said we'd never make it Said we'd crash and burn But look at us still standing Every scar a lesson learned [Solo] [Build Up] We are we are we are [Chorus] We are the reckless hearts Tearing the world apart Nothing can stop this fire inside We are the reckless hearts [Outro] ``` --- ## Шаблон баллады ``` [Intro] [Verse] The winter trees are bare and still Snow falls softly on the hill I remember when you held my hand Walking paths we used to plan [Verse] Your laughter echoes in these halls Your name is written on these walls Time has taken what we had But memories still make me glad [Chorus] I will carry you with me Through the storms and through the sea Even when the world goes dark You're the ember in my heart I will carry you [Verse] The seasons change but I remain Standing here through sun and rain Every star I see at night Reminds me of your gentle light [Chorus] I will carry you with me Through the storms and through the sea Even when the world goes dark You're the ember in my heart I will carry you [Bridge] And if the years should wash away Every word I meant to say Know that love was always true Every moment led to you [Chorus] I will carry you with me Through the storms and through the sea Even when the world goes dark You're the ember in my heart I will carry you [Outro] ``` --- ## Шаблон хип-хопа и R&B ``` [Intro] [Verse] City lights reflecting off the rain Another late night grinding through the pain Started from the bottom with a dream Nothing's ever easy as it seems Momma said to keep my head up high Even when the storm clouds fill the sky Now I'm standing tall above the noise Found my voice and made a choice [Hook] We don't stop we keep it moving Every day we keep on proving That the grind don't stop for nothing We keep pushing keep on hustling [Verse] Look around at everything we built From the ashes rising no more guilt Every scar a story that I own Seeds of struggle finally have grown Late nights early mornings on repeat Every setback made the win more sweet Now they see the vision crystal clear We've been building this for years [Hook] We don't stop we keep it moving Every day we keep on proving That the grind don't stop for nothing We keep pushing keep on hustling [Bridge] From the bottom to the top We don't know how to stop [Hook] We don't stop we keep it moving Every day we keep on proving That the grind don't stop for nothing We keep pushing keep on hustling [Outro] ``` --- ## Шаблон электронной или танцевальной песни ``` [Intro] [Build Up] Feel the pulse beneath the floor Can you hear it wanting more [Chorus] Lose yourself in neon lights We're alive alive tonight Let the music take control Feel the rhythm in your soul We're alive alive tonight [Break] [Verse] Strangers dancing side by side In this moment nothing to hide Every heartbeat syncs in time Lost in rhythm lost in rhyme [Build Up] Feel the pulse beneath the floor Can you hear it wanting more Louder louder [Chorus] Lose yourself in neon lights We're alive alive tonight Let the music take control Feel the rhythm in your soul We're alive alive tonight [Inst] [Build Up] One more time [Chorus] Lose yourself in neon lights We're alive alive tonight Let the music take control Feel the rhythm in your soul We're alive alive tonight [Outro] ``` --- ## Шаблон фолка или акустической песни ``` [Intro] [Verse] Down by the river where the willows lean I found a letter in the autumn green Words like water flowing soft and slow Telling stories from so long ago [Verse] My grandfather walked these roads before Carried burdens through a world at war But he never lost his gentle way And his kindness lives in me today [Chorus] These old roads remember everything Every footstep every song we sing Through the valleys and the mountain air Love is planted everywhere These old roads remember [Verse] Now the seasons paint the hills with gold And the stories keep the young from cold Every sunset brings a quiet prayer For the ones who are no longer there [Chorus] These old roads remember everything Every footstep every song we sing Through the valleys and the mountain air Love is planted everywhere These old roads remember [Bridge] So I'll walk a little further still Past the chapel on the distant hill And I'll listen for the echoes there Carried softly through the evening air [Chorus] These old roads remember everything Every footstep every song we sing Through the valleys and the mountain air Love is planted everywhere These old roads remember [Outro] ``` --- ## Шаблон джазовой песни ``` [Intro] [Verse] Smoke curls slowly in the amber light Piano whispers through the velvet night A glass of something golden in my hand The drummer keeps a brushstroke on the snare [Verse] She walked in like a song I used to know A melody from many years ago Her smile could melt the winter off the glass Some moments were not meant to ever last [Chorus] But we danced until the morning came Two strangers playing at a nameless game The saxophone was crying soft and low And neither one of us wanted to go [Solo] [Verse] The city sleeps but we are wide awake Sharing secrets for each other's sake Tomorrow we'll be strangers once again But tonight we're more than just old friends [Chorus] And we danced until the morning came Two strangers playing at a nameless game The saxophone was crying soft and low And neither one of us wanted to go [Outro] ``` --- ## Шаблоны чисто инструментальных композиций ### Кинематографический инструментал ``` [Intro] [Inst] (Soft piano, building strings) [Build Up] (Full orchestra swelling) [Inst] (Triumphant brass and percussion) [Interlude] (Gentle woodwinds, reflective) [Build Up] (Timpani roll, rising tension) [Inst] (Full symphonic climax) [Outro] (Fading strings, peaceful resolution) ``` ### Композиция с гитарным соло ``` [Intro] [Inst] (Rhythm guitar and bass groove) [Solo] (Lead guitar melody) [Inst] (Full band groove) [Solo] (Extended guitar solo, building intensity) [Break] [Solo] (Final guitar solo, emotional peak) [Outro] ``` ### Эмбиент и атмосферная музыка ``` [Intro] [Inst] (Ethereal synth pads, slow evolution) [Transition] [Inst] (Layered textures, subtle percussion) [Interlude] (Minimal, spacious) [Build Up] (Gradually intensifying) [Inst] (Full atmospheric wash) [Outro] (Slowly dissolving into silence) ```
Текст доступен бесплатно по CC0 1.0. Источники и лицензии.
Как использовать навык
Прочитайте инструкцию и проверьте, какие файлы, инструменты и подключения ей нужны. Перенесите навык в совместимое приложение для AI-агентов или используйте подходящие шаги в чате. Если навык состоит из нескольких файлов, сохраните их структуру.