---
name: music
description: Route making a song with Suno V6 — from the person's hum, sung or rapped line (the melody is kept), from an idea, from their own lyrics, in the style of a reference they name (MusicBrainz), or as a remake of their own track; then stems, a longer version, fixed words, cover art and a music video. One choice per turn.
---
# Make a song

FlashBoards user skill, version 1.2.3 (2026-10-13).

On the board, read these guides with `list_skills` and `get_skill` when the assistant exposes them; otherwise use the hosted index through an available read-only retrieval tool. Use that runtime’s actual model discovery, current page context and guarded board actions for execution. Keep native readiness, approval and cost gates; do not claim a guide was read when retrieval is unavailable.

Read related guides with `get_skill({skillId:"<id>"})` or the [hosted index](https://pub-78da82d51ed14147ac554d38094b0c0b.r2.dev/user-skills/1.2.3/index.html). Reading a guide does not start or authorize a paid generation.

Work on the person's own voice, words and tracks.

Slots in all music guides: {seed} — the person's recording (hum, line, voice message), {track} — a finished track, {lyrics}, {style}, {title}.

## References first — offer them in the first reply

Offer to look at references together ("Show me references" / "I have my own" / "Skip"; skip it if the person already named a genre or an artist): the vibe choice from MusicBrainz (`describe_music_vibes`, `music-refs`). The pick sets the genre, the tempo and the voice. Show at most three options, one line each.

## FlashBoards choice — the method

1. **Hear it first** — any recording: `transcribe_media` with `model: "scribe_v2"` for the words and their times, and the `audio-understanding` skill model (`run_skill_model`, `audio_url` = the recording) with the question "What kind is it (rap, singing, humming)? Three genres that fit, the tempo, the delivery, the theme and a song idea." → `music-hum`.
2. **Ask one fork per turn**: the words (if the two listeners disagree), the vibe, the lyrics (write them / mine / none). Use the client's choice buttons when it has them. **When the last open choice is made, run the song in that same turn** — a turn that only announces the song makes nothing.
3. **The vibe choice comes from MusicBrainz**: `describe_music_vibes({genres: [<three genres>]})` gives for each genre the matched genre, three recognisable artists and a words-only style line. The person picks by ear; the style line is ready from the data.
4. **Write the lyrics and the style** → `music-write`: the person's own line becomes the hook, the rest is new, in the language they sang in.
5. **Make it** — `estimate_skill_model`, then `run_skill_model`:
   - a new song: model `suno-v6` with `title` (≤ 80 characters), `style` (one line, no artist names), `lyrics` with `[Verse]` / `[Chorus]` tags **or** `instrumental: true` (never both, never neither), `vocal_gender` `"m"` | `"f"`, `duration` 10–360 s; optional `negative_tags`, `style_weight`, `weirdness_constraint`, `audio_weight` (0–1).
   - a cover of their hum or their own track: model `suno-v6-cover` with the same fields plus `upload_url` = {seed} (the receipt, `generationId` or audio task id; up to five minutes) and `audio_weight: 0.65` (closer to the seed 0.75, freer 0.5).
   **Lyrics are required for a vocal song**: without them Suno makes an instrumental.
6. **Two takes** come back: let the person pick take 1 / take 2 / another round → then `music-after`.

Pieces that do not depend on each other (an opener and an outro, the same song in two genres): start up to three runs side by side, each with its own `generationAttemptId`, and say the total once.

## Classify

| The person has | Route |
|---|---|
| A voice message or a recording of a hum, a sung or rapped line | `music-hum` |
| A reference: "like <artist>", a song or a genre they love | `music-refs` → `music-write` → `suno-v6` |
| An idea or a theme ("a song about my dog stealing socks") | `music-write` → `suno-v6` |
| Their own lyrics | `music-write` (style only, their words exactly) → `suno-v6` |
| Their own finished track to remake in another style | `suno-v6-cover` with the track as `upload_url`, lyrics from them or `instrumental: true` |
| A beat or an instrumental for a video | `suno-v6` with `instrumental: true`, `duration` = the video length |
| A take they like and want more from | `music-after` |

## Global rules

1. **Lyrics in the language of the seed** (a Russian rap stays Russian), whatever language you talk to the person in.
2. **Never write out the words of an existing song** from memory. For a remake with the original words, the person pastes them.
3. **Name no artist in `style`** — describe the sound (genre, voice, instruments, tempo); Suno blocks artist names. Genres, era and similar artists come from MusicBrainz (`music-refs`), not from memory.
4. **Their line stays theirs**: keep the words of the seed as sung (fix only what they correct) and build the hook from them.
5. **A cover needs the person's own audio.** Suno refuses a commercial recording ("matches an existing recording"): offer a new song in that style; never alter a recording to get past the check, and never retry the same audio — its sibling take gets the same answer.
6. **Do not re-listen to your own takes**: their words are the lyrics you sent. Listening is for the person's recordings.
7. ElevenLabs Music (`run_skill_model`) is a second music model for beds and jingles without a seed; short stingers and effects come from ElevenLabs Sound Effects (`generate_audio` with `model: "elevenlabs-sound-effects-v2"`).
8. **"Make it now", "you decide", "skip"**: decide what is still open (the idea, the genre, the title) yourself, say it in one line and run the song in that same turn.

## Execute through MCP or on the board

Use the person's FlashBoards account; never ask for a personal provider key or run the source's local scripts. Discover `get_account`, `list_generation_models` and the tools of this client first: a published guide does not prove a feature is deployed.

**Headless, no open board.** Quote with `estimate_generation_cost` (skill models: `estimate_skill_model`), then run `generate_image`, `generate_video`, `generate_audio` or `run_skill_model` with one stable `generationAttemptId` per logical attempt. Pass `maxCostUsd` only when the current operation and selected model support it; otherwise use the quoted cost and the person's explicit approval with the supported controls. Never silently ignore an unsupported spending cap; make one `get_generation` check after `retryAfterSeconds`. Pass the person's own results by `generationId`: images in `referenceGenerationIds`, `firstFrameUrl` and `endFrameUrl`, audio in `referenceAudioUrls` or `targetAudioUrl`, videos in `referenceVideoGenerationIds`. They are read on the server; signed result links do not work as public URLs. Every `generationId` a tool returns stays valid: a later read of the same result gives a different string, and both work. Film frames and gallery pictures go in by `previewHandle`: `referencePreviewHandles` of the generation tools, a `{previewHandle}` source of `arrange_images`, `crop_image` and `pad_image`, and `describe_media`. New files come from `show_media_upload_picker` as receipts. The person's character comes in as its sheet, by `generationId` or as an upload; there is no search by name. If the person names a character without the sheet, ask for it or make one with `character-sheet`; do not scan recent results for it. Free server steps: `trim_video`, `concat_videos`, `conform_video`, `replace_video_audio`, `extract_video_frame`, `extract_video_audio`, `detect_video_cuts`, `crop_image`, `pad_image`, `arrange_images`, `cut_audio_span`, `concat_audio_tracks`, `mix_audio_tracks`, `fit_audio_duration`, `add_audio_reverb`. Check every result with `describe_media` (a question about an image; `model`, `mode` and `sourceRange` only for a video) and `transcribe_media` for speech. Both checks are paid: `describe_media` costs a fraction of a cent for an image and about 2–4 ¢ for a short video (more for a long one), `transcribe_media` under 1 ¢ a minute — count the checks you plan in the price you name before the first paid step. `describe_media` is not reliable about sound: it misses effects mixed under music and can hear voices or instruments that are not there. Check speech with `transcribe_media` and ask the person to listen for effects and music. Never repay an uncertain submission; reuse an attempt ID only for the identical request. Make each new `requestId` or `generationAttemptId` unique, for example the task, the date and a short random suffix: an ID used before, even in another chat, replays that earlier request or answers `REQUEST_ID_CONFLICT`.

**On the board.** Inspect with `list_board_sessions` and `get_board_snapshot` and carry the same `sessionId` and a fresh `activeBoardId` as `expectedBoardId`. Native cards: `execute_board_action` (`listNativeModels`, `setModel`), `prepare_board_generation` with ordered board items or owned outputs, then one `generate_on_board` within the authorized budget. Board media tools: `list_media_tools` → `start_media_tool` → `get_media_tool_run`. Put headless results on a board with `add_media_to_board`.

Keep mandatory safety settings and the live limits of each model. Prices, timings, endpoints and "free retry" claims in the sources are historical, not FlashBoards contracts. If a step this guide needs is not available or is refused (a tool error, `audio_not_configured`, a missing model or input), keep the finished assets, tell the person which step is blocked and why, and ask how to go on. A single generation that ends `failed` is not a blocked step: submit it once more with a new `generationAttemptId` (reworded if it may have hit the content checker), and stop to ask only if it fails again. A failed attempt is not always refunded, so the retry may be paid again and `maxCostUsd` caps each request on its own: count both against the budget the person approved. Never swap in another route on your own: no image model redrawing a layout or a frame, no `describe_media` in place of the frames it should check, no clip generated only to take its sound, no picture drawn where the guide takes a film frame.

## Source and related guides

- [Original Learn guide](https://flashboards-h01.vercel.app/learn/formats-and-exhibition/ai-song-from-a-hum/skills/music.md)
- Updated from the owner's skill sources of 2026-10-11.

Read: `music-hum`, `music-write`, `music-refs`, `music-after`, `musicvideo`. Source experiments and demo materials are historical; use the person's own approved media.
