feat: design system overhaul — sidebar, AI chats, settings, brainstorm, color cleanup
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 12s
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 12s
- Sidebar: dynamic brand-accent colors, brainstorm section restyled - AI chat general: popup panel with expand/collapse, hides when contextual AI open - AI chat contextual: tabs reordered (Actions first), X close button, height fix - Settings: all tabs restyled, 6 new color presets (sage, terracotta, iron, etc.) - Global color cleanup: emerald/orange hardcoded → brand-accent dynamic - Brainstorm page: orange → brand-accent throughout - PageEntry animation component added to key pages - Floating AI button: bg-brand-accent instead of hardcoded black - i18n: all 15 locales updated with new AI/billing keys - Billing: freemium quota tracking, BYOK, stripe subscription scaffolding - Admin: integrated into new design - AGENTS.md + CLAUDE.md project rules added
This commit is contained in:
65
.agent/skills/suno-feedback-elicitor/references/README.md
Normal file
65
.agent/skills/suno-feedback-elicitor/references/README.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# Feedback Elicitor
|
||||
|
||||
The Feedback Elicitor guides users through a structured post-generation feedback loop after they have listened to their Suno output, translating subjective musical reactions into concrete parameter adjustments. It handles five feedback types — clear, positive, vague, contradictory, and technical — each with a tailored elicitation strategy. For vague feedback ("it just doesn't feel right"), it uses a three-phase guided elicitation sequence (binary narrowing, comparative anchoring, emotional vocabulary bridge) to draw out specifics. The skill produces structured adjustment recommendations that feed directly back into the Style Prompt Builder and Lyric Transformer.
|
||||
|
||||
## When to Use Directly vs. Through Mac
|
||||
|
||||
Use this skill directly when you have already generated a song on Suno and want to refine it based on what you heard. Use Mac (the orchestrating agent) when feedback refinement is part of a larger iterative workflow where you want seamless handoff between skills.
|
||||
|
||||
## Feedback Types
|
||||
|
||||
| Type | Signal | Strategy |
|
||||
|------|--------|----------|
|
||||
| **Clear** | Specific, actionable problem ("the guitar is too loud") | Direct parameter mapping |
|
||||
| **Positive** | Likes the result, wants to evolve or lock in | Identify what to preserve vs. evolve |
|
||||
| **Vague** | Knows something is off but cannot articulate it | Three-phase guided elicitation |
|
||||
| **Contradictory** | Wants conflicting things ("more energetic but also chill") | First Principles reset; check for section contrast |
|
||||
| **Technical** | Artifacts, glitches, pronunciation issues | Regeneration or Suno Studio feature recommendations |
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Receive Feedback** — Accept natural language reactions; capture everything including creative context
|
||||
2. **Gather Context** — Collect original style prompt, lyrics, model, sliders, and intent as relevant
|
||||
3. **Triage** — Classify feedback type (mixed feedback is handled per-component)
|
||||
4. **Elicit/Map** — Apply type-specific strategy to extract actionable specifics
|
||||
5. **Map to Adjustments** — Translate findings into style prompt changes, exclusion updates, slider adjustments, lyric adjustment specs, and model/Studio suggestions
|
||||
6. **Present Recommendations** — Before/after narrative preview, structured adjustment package with confidence scores
|
||||
7. **Handoff** — Offer to invoke Style Prompt Builder or Lyric Transformer with the adjustments; suggest band profile updates for systematic preferences
|
||||
|
||||
### Headless Mode (`--headless` or `-H`)
|
||||
|
||||
- `--headless:analyze` — Triage and categorize feedback only, return analysis JSON
|
||||
- `--headless:adjustments` — Accept feedback + original prompts, return full adjustment recommendations
|
||||
- `--headless` — Analyze + generate adjustments with balanced defaults
|
||||
|
||||
## Scripts
|
||||
|
||||
| Script | Description |
|
||||
|--------|-------------|
|
||||
| `parse-feedback.py` | Validates and extracts structured dimensions from feedback input in a single pass |
|
||||
| `map-adjustments.py` | Maps feedback dimensions to Suno parameter adjustments with consistency validation |
|
||||
|
||||
## Example Invocation
|
||||
|
||||
```
|
||||
# Interactive
|
||||
"The vocals feel too polished on my last Suno generation"
|
||||
"It just doesn't feel right — can you help me figure out what to change?"
|
||||
|
||||
# Headless
|
||||
--headless:adjustments --feedback "vocals too polished, needs rawer feel" --style-prompt "warm indie rock..." --model v5-pro
|
||||
--headless:analyze --feedback "it sounds off somehow"
|
||||
```
|
||||
|
||||
## Output Integration
|
||||
|
||||
Adjustment recommendations are structured to feed directly into other skills:
|
||||
|
||||
- **Style prompt changes** go to the Style Prompt Builder via `--headless:refine`
|
||||
- **Lyric changes** go to the Lyric Transformer via `--headless:refine` as an adjustment spec
|
||||
- **Systematic preferences** can be saved back to the band profile
|
||||
- **Iteration logs** can be persisted at `docs/feedback-history/` for multi-round refinement
|
||||
|
||||
## Part of the Suno Band Manager Module
|
||||
|
||||
This skill is part of the Suno Band Manager module and works with any LLM CLI supporting the [Agent Skills](https://agentskills.io) standard. For the full guided experience, invoke Mac — the orchestrating agent — instead of using this skill directly.
|
||||
@@ -0,0 +1,169 @@
|
||||
# Feedback Triage Guide
|
||||
|
||||
> **Last validated:** March 2026 (updated for v5.5). Elicitation techniques are craft-based (not Suno-specific) and do not require frequent re-validation. The Suno parameter mappings in the opposing pairs table should be verified via web search if Suno model behavior has changed since this date.
|
||||
|
||||
## Classification Rules
|
||||
|
||||
### Clear Feedback
|
||||
**Signals:** Specific nouns (guitar, vocals, bass, drums, tempo), comparative statements ("too much," "not enough," "louder," "softer"), direct requests ("add," "remove," "change").
|
||||
|
||||
**Examples:**
|
||||
- "The electric guitar is too prominent"
|
||||
- "I need a bridge between the second chorus and the outro"
|
||||
- "The vocals sound too autotuned"
|
||||
- "It's too fast — slow it down"
|
||||
- "The drums overpower everything"
|
||||
|
||||
**Action:** Map directly to parameter adjustments. No elicitation needed.
|
||||
|
||||
### Positive Feedback
|
||||
**Signals:** Approval language ("love it," "great," "perfect," "nailed it"), evolution requests ("can we try," "what if," "now make it"), preservation language ("keep the," "don't change").
|
||||
|
||||
**Examples:**
|
||||
- "This is exactly what I wanted!"
|
||||
- "Love the vocals — can we try a darker instrumental?"
|
||||
- "Perfect energy. What about a version with more acoustic guitar?"
|
||||
- "Keep everything but make the chorus hit harder"
|
||||
|
||||
**Action:** Identify what to preserve (anchor), then explore evolution direction. Suggest saving successful elements to band profile.
|
||||
|
||||
### Vague Feedback
|
||||
**Signals:** Feeling-based language without specifics ("off," "not right," "something's missing," "doesn't feel like"), hedging ("I don't know," "hard to explain," "it's just"), negation without alternative ("I don't like it," "that's not it").
|
||||
|
||||
**Examples:**
|
||||
- "Something about it just isn't right"
|
||||
- "It doesn't feel like what I imagined"
|
||||
- "I don't know, it's missing something"
|
||||
- "It's close but not there yet"
|
||||
- "The vibe is off"
|
||||
|
||||
**Action:** Three-phase guided elicitation (binary narrowing → comparative anchoring → emotional vocabulary bridge).
|
||||
|
||||
### Contradictory Feedback
|
||||
**Signals:** Opposing descriptors in same feedback ("more X but also more Y" where X and Y conflict), sequential reversals ("actually no, I want..."), wanting everything changed but nothing changed.
|
||||
|
||||
**Examples:**
|
||||
- "Make it more energetic but also more relaxed"
|
||||
- "I want it raw and lo-fi but also radio-ready"
|
||||
- "The vocals should be more prominent but also blend in more"
|
||||
- "It needs to be simpler but also more interesting"
|
||||
|
||||
**Action:** First Principles reset — find the one anchor, rebuild from there. Reframe contradictions as potential structural insights (verse vs. chorus contrast). When the contradiction spans multiple dimensions (arrangement + lyrics + delivery), use **three-pass layered prompting** to isolate changes: adjust concept/mood first, then lyrics/structure, then performance cues — never all at once. See suno-parameter-map.md "Three-Pass Layered Prompting" for the workflow.
|
||||
|
||||
**When feedback touches both vocal identity and style:** If the user wants to change the singing voice AND the musical direction simultaneously, apply the **one-variable-at-a-time rule** — adjust either the Persona/vocal identity OR the style prompt, not both in the same generation. Changing both creates compounding unpredictability. Persona controls artist identity (vocals, character); style prompt controls the producer brief (genre, mood, arrangement).
|
||||
|
||||
### Technical/Quality Feedback
|
||||
**Signals:** Quality-specific language ("glitchy," "robotic," "artifact," "clipping," "distortion," "cuts off"), timestamp references ("at 1:23"), pronunciation complaints, audio fidelity terms ("muffled," "compressed," "tinny"), generation-specific issues distinct from creative direction.
|
||||
|
||||
**Examples:**
|
||||
- "There's a weird glitch at 1:23"
|
||||
- "The vocals sound robotic in the second verse"
|
||||
- "The audio quality drops toward the end"
|
||||
- "It mispronounces the word 'ethereal'"
|
||||
- "There's clipping in the chorus"
|
||||
|
||||
**Action:** Route to Suno Studio features (Replace Section, Warp Markers, Remove FX) or regeneration. These issues are typically generation-specific, not prompt-specific — try regenerating 3-5 times before modifying the prompt. See suno-parameter-map.md "Audio Quality & Artifacts" and "Suno Studio Resolution Paths" sections.
|
||||
|
||||
**v5.5 recommended approach:** Use the **generate -> inspect -> refine** workflow rather than regenerating from scratch. If the structure and melody are good, use section replacement for the problem area instead of full regeneration. Only regenerate fully when the structure or emotional direction is fundamentally wrong. See suno-parameter-map.md "v5.5 Workflow Paradigm" for the full decision framework.
|
||||
|
||||
#### Voice & Custom Model Feedback Patterns
|
||||
|
||||
When the user has a Voice or Custom Model active, technical feedback often maps to these specific issues:
|
||||
|
||||
| Feedback | Root Cause | Resolution Path |
|
||||
|----------|-----------|----------------|
|
||||
| "Vocals don't sound like me" (Voice active) | Audio Influence too low, poor source recording quality, or style prompt overriding Voice identity | 1. Increase Audio Influence — start at 55-70%, go to 75-85% if identity is paramount (see use-case table in suno-parameter-map.md). 2. Re-record a cleaner voice sample (less background noise, consistent mic distance). 3. Use delivery metatags (`[Whispered]`, `[Belted]`) instead of style prompt vocal descriptors — the Voice provides identity, metatags shape performance. |
|
||||
| "Production doesn't match my style" (Custom Model active) | Generic prompt descriptors being absorbed by the model's trained defaults | 1. Use more specific prompt overrides — name the exact elements to change rather than broad descriptors. 2. If the model consistently misses the target, retrain with a better-curated catalog that more accurately represents the desired production style. |
|
||||
| "Voice sounds right but delivery is wrong" (Voice active) | Style prompt vocal descriptors conflicting with Voice identity | Remove vocal descriptors from the style prompt. Use delivery metatags in the lyrics field instead: `[Whispered]`, `[Belted]`, `[Tender]`, `[Aggressive]`. The Voice handles identity; metatags handle performance. |
|
||||
| "Changed multiple things and now it's worse" (Voice + Custom Model) | Multiple simultaneous changes making it impossible to isolate the cause | Apply the one-variable-at-a-time rule: adjust delivery metatags first, then Audio Influence, then style prompt. Regenerate after each single change. |
|
||||
|
||||
### Production Diagnostic Patterns
|
||||
|
||||
Common feedback patterns with non-obvious root causes. When you hear these, check the indicated sources before adjusting the style prompt.
|
||||
|
||||
| Feedback Pattern | Check First | Root Cause & Fix |
|
||||
|-----------------|-------------|-----------------|
|
||||
| "Guitar dominates / bass not prominent enough" | Genre context (rock/metal?) + instrumental sections | Bass prominence is a known Suno limitation in rock/metal. Try: remove "guitar" mentions from style prompt, add guitar to exclusions, use `[Instrument: bass]` tags (unreliable but worth trying). Bass-forward rock/metal is currently not achievable reliably. |
|
||||
| "Ending is too loud / song doesn't come down" | Style prompt for unidirectional build language ("crescendo dynamics", "build to crushing climax") | The style prompt must describe the full arc, not just the build. Replace with `slow build then fade` or `dynamic shifts loud to quiet`. |
|
||||
| "Wrong bass tone" | Whether "funk" appears in style prompt | "Funk" triggers slap/pop bass (Flea/Claypool style). For overdriven fingerstyle bass (Geddy Lee style), remove "funk" entirely. |
|
||||
| "Song sounds too modern / wrong era" | Whether a Persona is loaded | Personas anchor sound to the era of the source song. Reduce Audio Influence to 10-15% or generate without Persona for era-specific pieces. |
|
||||
| "Vocals are screaming when they shouldn't be" | Style prompt for `metal`, `sludge`, `doom`; lyrics for `!` or ALL CAPS | These are scream triggers. Fix: add explicit positive vocal instructions (e.g., "clean vocals, melodic singing"), remove triggers, use `[Vocal Style: whispered]` to reset after aggressive sections. |
|
||||
| "Song loops / too much instrumental" | Source text length (under 15 lines?) + style prompt for `instrumental breaks` | Short lyrics cause looping and filler instrumentals. Suggest: double the delivery (repeat verses with variation), extract and repeat chorus, or place a hard `[End]` tag. |
|
||||
| "Sound is too theatrical / too many keyboards" | Style prompt for `baroque`, `rock opera`, `cinematic`, or `orchestral` | These keywords trigger keyboard-heavy theatrical arrangements. Fix: describe desired qualities without those words; specify heavy orchestral instruments by name (cello, heavy strings, kettle drums); use "power ballad" instead of "rock opera" for dynamic range. |
|
||||
| "Song doesn't come back down / ending stays loud" | Whether the dynamic arc is stated TWICE in the style prompt | A single mention of descent isn't enough — Suno latches onto the loudest directive. Both `building from gentle to crushing then returning to gentle` AND `dynamic arc quiet to massive to quiet` are needed to reliably produce a full arc. |
|
||||
| "One section sounds wrong but the rest is fine" | Whether the issue is section-specific or global | Use **parameterized section tags** for per-section fixes: `[Verse: whispered vocals, acoustic guitar only]`, `[Chorus: full band, powerful vocals]`. This targets the problem section without changing the overall style prompt. See suno-parameter-map.md "Parameterized Section Tags". |
|
||||
|
||||
---
|
||||
|
||||
## Elicitation Techniques
|
||||
|
||||
### Binary Narrowing
|
||||
Rapid yes/no or A/B questions to reduce the problem space. Goal: identify which dimension(s) need adjustment in under 5 questions.
|
||||
|
||||
**Dimension checklist:**
|
||||
1. Music/production vs. vocals/singing
|
||||
2. Energy level (too high / too low / right)
|
||||
3. Structure (sections, flow, length)
|
||||
4. Lyrics (content, delivery, phrasing)
|
||||
5. Overall vibe/mood (right neighborhood or wrong direction)
|
||||
|
||||
**Rules:**
|
||||
- Ask one question at a time
|
||||
- Accept partial answers — "kind of both" is useful signal
|
||||
- If they narrow to a single dimension in 2 questions, skip ahead to Phase 2
|
||||
|
||||
### Comparative Anchoring
|
||||
Use reference points the user knows to triangulate what they want.
|
||||
|
||||
**Techniques:**
|
||||
- **Artist/song reference:** "Name a song that has the feel you're going for"
|
||||
- **Spectrum placement:** "If 1 is [extreme A] and 10 is [extreme B], where is it now and where do you want it?"
|
||||
- **A/B contrast:** Suggest two contrasting descriptions and ask which is closer to their vision
|
||||
- **Temporal reference:** "Think of the last song that made you feel the way this one should — what was it?"
|
||||
|
||||
**Rules:**
|
||||
- Don't require musical knowledge — "a movie scene" or "a feeling" works too
|
||||
- If they give a reference, decompose it into concrete audio characteristics (instrumentation, tempo, vocal style, production quality, energy)
|
||||
|
||||
### Emotional Vocabulary Bridge
|
||||
Map subjective feelings to Suno-actionable parameters.
|
||||
|
||||
**Core opposing pairs and their Suno parameter mappings:**
|
||||
|
||||
| Pair | Low End → Suno | High End → Suno |
|
||||
|------|----------------|-----------------|
|
||||
| Heavy ↔ Light | Dense instrumentation, layered, bass-heavy, thick | Sparse arrangement, airy, minimal, delicate |
|
||||
| Fast ↔ Slow | Driving rhythm, uptempo, energetic beat | Slow tempo, laid-back groove, gentle pace |
|
||||
| Polished ↔ Raw | Radio-ready mix, clean production, crisp | Lo-fi, organic, rough edges, imperfect |
|
||||
| Familiar ↔ Weird | Classic genre conventions, traditional | Experimental, unexpected, genre-bending (↑ Weirdness slider) |
|
||||
| Warm ↔ Cold | Analog warmth, rich tones, close mics | Crystalline, digital, distant, sterile |
|
||||
| Intimate ↔ Epic | Close, quiet, small room, whispered | Wide stereo, big reverb, anthemic, soaring |
|
||||
| Smooth ↔ Gritty | Clean vocals, flowing melody, polished | Raspy, distorted, textured, rough |
|
||||
| Bright ↔ Dark | Major key feel, uplifting, shimmering | Minor key feel, moody, deep, shadowy |
|
||||
| Tight ↔ Loose | Precise timing, quantized, controlled | Swing, human feel, organic timing, relaxed |
|
||||
| Simple ↔ Complex | Minimal arrangement, few instruments, straightforward | Layered, intricate arrangement, multiple textures (↑ Weirdness slider) |
|
||||
| Organic ↔ Synthetic | Live instruments, acoustic, natural, analog warmth | Electronic, digital, synthesized, programmed beats |
|
||||
| Atmospheric ↔ Punchy | Reverb, space, ambient pads, "atmospheric" | Low-end presence, tight transients, "punchy" |
|
||||
| Lo-fi Warmth ↔ Polished Radio-Ready | Vintage character, low-pass filtering, "lo-fi warmth" | Clean, modern, commercial mix, "polished radio-ready" |
|
||||
| Driving ↔ Lush | Forward momentum, energetic basslines, "driving" | Layered pads, dense production, "lush" |
|
||||
| Raw Live ↔ Produced | Less processed, room sound, "raw live recording" | Spatial separation, "wide stereo", processed |
|
||||
|
||||
**Rules:**
|
||||
- Only present pairs relevant to the narrowed dimension
|
||||
- Ask them to place the current output AND their desired target on the spectrum
|
||||
- The gap between "where it is" and "where they want it" determines adjustment magnitude
|
||||
- If binary narrowing does not converge after 4 questions, pivot to reference-first: "Name a song that sounds like what you wanted — I'll work backwards from there." Reference decomposition is often easier than dimensional analysis for non-musicians.
|
||||
- If elicitation still does not converge, suggest generating 2-3 variants with different parameter profiles and letting the user compare (turns an elicitation problem into a selection problem).
|
||||
|
||||
### First Principles Fallback
|
||||
When feedback is contradictory or elicitation isn't converging.
|
||||
|
||||
**The anchor question:** "If you could only keep ONE thing about this song exactly as it is, what would it be?"
|
||||
|
||||
**Rebuild sequence:**
|
||||
1. Lock the anchor — this does not change
|
||||
2. For each remaining dimension, offer two options anchored to the keeper
|
||||
3. Build up layer by layer, checking for contradiction at each step
|
||||
4. If a new contradiction emerges, reframe as structural contrast (verse vs. chorus, intro vs. drop)
|
||||
|
||||
**Borrowed from:** Socratic Questioning, 5 Whys, First Principles Analysis (BMad Advanced Elicitation methods).
|
||||
@@ -0,0 +1,327 @@
|
||||
## Audio Analysis Workflow
|
||||
|
||||
**Post-publish pipeline:** When a new track is published, the Band Manager agent (Mac) orchestrates a full analysis pipeline using these scripts — see Mac's SKILL.md under "Post-Publish Analysis Pipeline" for the complete workflow covering analysis, consistent data storage, external comparison, felt BPM checks, and playlist placement. The pipeline ensures consistent data across all catalog files.
|
||||
|
||||
### Overview
|
||||
|
||||
Three complementary audio analysis approaches, each with different strengths:
|
||||
- **librosa (Python)** — Programmatic analysis: BPM, key detection, tempo stability, energy arcs, section boundaries. Fast, batch-capable, objective measurements.
|
||||
- **Gemini 3.1 Pro** — AI audio analysis: upload MP3, get instrument identification, genre classification, dynamic arc description, style prompt accuracy feedback. Best with two-pass workflow for fusion genres.
|
||||
- **ChatGPT (with audio upload)** — AI audio analysis: upload MP3 for "blind" analysis without providing the style prompt. Useful for unbiased genre/instrument identification. May correctly identify sounds that Gemini hallucinates from seeing the style prompt text.
|
||||
|
||||
### Trust Hierarchy and Cross-Verification
|
||||
|
||||
When using multiple analysis sources, you'll often get different answers for the same field. Resolve disagreements by source authority for the field type:
|
||||
|
||||
**For measurable fields (BPM, key, energy levels, section boundaries, spectral balance):**
|
||||
- **librosa is primary** — it measures actual audio properties from raw waveforms. Its quirks (halftime detection on slow songs, key major/minor disputes) are predictable and correctable, but it does NOT hallucinate content that isn't there.
|
||||
- **Gemini and ChatGPT are secondary** — useful as cross-verification but not authoritative on measurable fields.
|
||||
- **When they disagree on BPM:** default to librosa with the halftime correction for slow contemplative songs (raw 150-160 → felt 75-80). Verify with manual hi-hat counting if it matters.
|
||||
- **When they disagree on key:** consider both readings, use lyric/emotional context as tiebreaker, or accept that key is uncertain. There is a documented pattern of Gemini consistently picking minor where librosa consistently picks major on the same track — without ground truth verification, neither source is automatically right.
|
||||
|
||||
**For instrument identification:**
|
||||
- **Basic rhythm section + lead vocal (guitar, bass, drums, vocals):** Both Gemini and ChatGPT are reasonably reliable. The AI tools tend to catch what's actually present in the basic stack.
|
||||
- **Anything beyond the basic stack (brass, strings, synths, atmospheric pads, additional percussion):** Hold the AI's claim loose. Verify against the actual audio before filing as fact.
|
||||
- **Reverb/delay/atmospheric effects:** AI tools can misidentify these as instruments. Atmospheric production framing in the style prompt (e.g., "cathedral roominess," "intimate studio room ambience," "wide analog stereo with shimmer") increases the hallucination risk — the AI may hear "brass section" or "string pads" that are actually just reverb tails on guitars or vocals. Verify before trusting.
|
||||
|
||||
**For subjective fields (mood, vibe, "what works," whether a track "lands"):**
|
||||
- **Human ear is primary.** AI tools can describe what they hear, but their mood/vibe interpretations are heavily influenced by prompt framing and shouldn't be trusted as the final word.
|
||||
- **Avoid leading language in your AI prompts** that biases the tool toward specific moods or genre fusions. Let it describe what it actually perceives without suggestive framing.
|
||||
|
||||
**Don't burn cycles asking which tool to trust on settled fields.** For BPM/key/section boundaries, default to librosa. For instrument ID beyond the basic rhythm section, verify before filing. For mood, trust the human ear. This calibration is consistent across catalogs and shouldn't be relitigated for every track.
|
||||
|
||||
### librosa Analysis Scripts
|
||||
|
||||
Requirements: Python 3, librosa, numpy (`pip install librosa numpy`)
|
||||
|
||||
**analyze-audio.py** — Batch BPM and key detection for all MP3s in a directory. Uses Krumhansl-Kessler chroma correlation for key estimation. Outputs a summary table with BPM, key, key confidence, and duration.
|
||||
```bash
|
||||
python scripts/analyze-audio.py /path/to/mp3s/
|
||||
```
|
||||
|
||||
**audio-deep-analysis.py** — Deep single-track analysis: chord progression over time, energy curve, spectral features, section boundaries, harmonic/percussive separation.
|
||||
```bash
|
||||
python scripts/audio-deep-analysis.py track.mp3
|
||||
```
|
||||
|
||||
**tempo-detail.py** — Detailed tempo analysis showing BPM over time in windows. Detects tempo changes, off-beats, and stability.
|
||||
```bash
|
||||
python scripts/tempo-detail.py track.mp3
|
||||
```
|
||||
|
||||
**batch-full-analysis.py** — Batch full analysis across a catalog: tempo stability, energy arc, section boundaries, spectral balance. Outputs a comprehensive summary report.
|
||||
```bash
|
||||
python scripts/batch-full-analysis.py /path/to/mp3s/
|
||||
```
|
||||
|
||||
#### librosa Notes
|
||||
|
||||
- **BPM misreads are genre-dependent and go both directions:**
|
||||
- Speed metal → reads **half-time** (e.g., reports 99 BPM when felt tempo is ~198 — reads snare on beat 3 as beat 1)
|
||||
- Doom/sludge → reads **double-time** (e.g., reports 144 BPM when felt tempo is ~72 — counts subdivisions as pulse)
|
||||
- Power ballads → overcounts (e.g., reports 96 BPM when felt is ~68)
|
||||
- Heartbeat/pulse tracks → overcounts (e.g., reports 96 when tagged 60)
|
||||
- **~19% of tracks have significant BPM misreads** in production testing (31-track catalog). Always verify against genre/feel.
|
||||
- **"Felt BPM"** — the human-perceived tempo vs. librosa's measurement. When a user says "it feels too fast/slow," compare their perception against felt BPM, not librosa BPM. Felt BPM is what matters for playlist sequencing and feedback triage.
|
||||
- **LLM BPM estimates also diverge** — Gemini AI Studio, Gemini web, and ChatGPT produce different values for the same track. No single source is reliable for BPM; cross-reference at least two.
|
||||
- Key confidence below 0.5 is low reliability
|
||||
- Enharmonic equivalents: D# = Eb, C# = Db, A# = Bb, F# = Gb
|
||||
- librosa is deterministic — same file always produces the same results. Use as ground truth for BPM/key baseline, but always apply genre-aware correction before acting on the number.
|
||||
- **Slow contemplative songs (felt tempo 70-80 BPM) trigger halftime detection consistently.** librosa raw values around 150-160 BPM with felt tempo around 75-80 BPM is a well-documented pattern. When librosa reports 152 BPM on a song that "feels" much slower than that, the felt tempo is likely half (76). Cross-verify with hi-hat counting before trusting either value.
|
||||
- **Manual hi-hat counting is the cheap reliable BPM verification** when AI tools disagree. Count hi-hat hits in a 10-second window of a steady-groove section. Most rock/pop songs play hi-hats as straight eighth notes. Calculation: `(hat hits in 10 sec ÷ 2) × 6 = quarter-note BPM`. Example: 25 hi-hat hits in 10 sec → (25 ÷ 2) × 6 = 75 BPM. When sources contest the BPM, this 30-second manual check is the tiebreaker.
|
||||
|
||||
### ChatGPT Audio Analysis
|
||||
|
||||
ChatGPT can analyze uploaded MP3 files. Key workflow difference from Gemini:
|
||||
|
||||
**Blind analysis (recommended first pass):** Upload the MP3 WITHOUT providing the style prompt or any context about what the song should sound like. Ask ChatGPT to describe what it hears — genre, instruments, mood, vocal style, production. This gives unbiased identification of what Suno actually produced.
|
||||
|
||||
**Why blind matters:** When LLMs see the style prompt alongside the audio, they tend to hear what the prompt describes rather than what's actually there. In testing, ChatGPT's blind analysis correctly identified "southern rock / blues rock with fingerstyle bass" while Gemini (which saw the style prompt) hallucinated "funk-metal party groove with slap/pop bass" on the same track.
|
||||
|
||||
**Calibrated follow-up:** After the blind pass, share the style prompt and ask ChatGPT to compare intent vs. reality. This two-step approach (blind → calibrated) produces the most honest assessment.
|
||||
|
||||
**BPM comparison:** ChatGPT's BPM estimates are rough (120-125 range estimates vs. librosa's precise 123.0). Use librosa for BPM, LLMs for subjective qualities.
|
||||
|
||||
#### ChatGPT Reliability Warning
|
||||
|
||||
**ChatGPT audio analysis is inconsistent across tracks.** In testing:
|
||||
- On one track (southern rock/blues), blind analysis was accurate — correctly identified genre, instruments, and bass technique where Gemini hallucinated from the style prompt.
|
||||
- On another track (brass-metal fusion), blind analysis completely failed — described "alternative rock, indie, hip-hop groove, synth pads" with no brass, no metal, and 94 BPM on a 184 BPM track. Did not hear the audio file correctly.
|
||||
|
||||
**Possible causes:** Free-tier ChatGPT may not reliably process all audio uploads. Track complexity, length, or encoding may affect analysis quality. More testing is needed to identify when ChatGPT audio analysis can be trusted.
|
||||
|
||||
**Recommendation:** Treat ChatGPT audio analysis as a supplementary data point, not a reliable source. Cross-reference with Gemini and librosa. When ChatGPT's blind analysis agrees with librosa's objective measurements, it's likely accurate. When it diverges significantly (wrong genre family, wrong BPM by >30%), discard it. The blind analysis technique remains valuable in principle — just verify the output makes basic sense before acting on it.
|
||||
|
||||
### Gemini 3.1 Audio Analysis
|
||||
|
||||
### Setup
|
||||
- Use Google AI Studio (not gemini.google.com) for primary analysis — direct model access, upload audio, control parameters
|
||||
- Settings: Gemini 3.1 Pro, Thinking: High, **Temperature: 0.5** (see Temperature Findings below), everything else off (no grounding, search, code execution, or structured output)
|
||||
- Export from Suno as MP3 — sufficient for analysis, WAV offers no practical benefit
|
||||
- New context per song — prevents bleed between analyses
|
||||
- gemini.google.com rate limit is separate from AI Studio — alternate between them when daily limits are hit
|
||||
|
||||
### Two-Pass Workflow (Mandatory for Fusion Genres)
|
||||
- Gemini's first pass flattens fusion genres into nearest pure genre (e.g., NOLA brass-metal → "ska-punk", groove-funk-metal → "sludge")
|
||||
- First pass prompt must include calibration: (a) distinguish tempo changes from volume/intensity dynamics, (b) describe what's actually present without manufacturing genre fusions or instruments that aren't there, (c) verify BPM by tapping the most consistent rhythmic pulse (kick/snare/hi-hat) and reporting the quarter-note pulse, not subdivisions or "felt" impressions
|
||||
- Second pass (follow-up in same context) is mandatory. Ask specifically about: mood/feel vs. heaviness, volume/intensity dynamics without tempo change, bass techniques and independent role, stereo panning placement
|
||||
- Before/after improvement is dramatic — example: first pass = "NWOBHM speed metal, zero funk, bass follows guitar." Follow-up = "funk-metal party groove, standout slap bass, Les Claypool comparison." Same audio.
|
||||
|
||||
### Prompt Templates
|
||||
|
||||
These prompts were refined across 30+ song analyses and consistently produce the most useful output.
|
||||
|
||||
#### First Pass — Structured Blind Analysis
|
||||
|
||||
Use this for the initial analysis. The blind approach (no style prompt) prevents Gemini from hearing what the prompt describes rather than what's actually there. For cataloging workflows where you want the accuracy comparison in one pass, include the Style Prompt Accuracy section at the end with the style prompt.
|
||||
|
||||
```
|
||||
You are analyzing a track from the band [BAND NAME] for cataloging purposes. Listen to the full track carefully before responding.
|
||||
|
||||
IMPORTANT LISTENING NOTES:
|
||||
- Distinguish between tempo changes (BPM actually shifts) and dynamic changes (volume/intensity shifts without tempo change). A song can get quieter or sparser without slowing down. Report both separately.
|
||||
- Describe the genre or genres you actually hear without assuming a fusion is present. If the track is in a single sub-genre, name that single sub-genre. If you hear multiple genre influences blended together, name all the ingredients you actually hear — but do NOT manufacture a fusion that isn't present in the audio.
|
||||
- Only describe instruments and elements you can clearly identify. Do NOT manufacture content that isn't there. If you're uncertain whether something is an actual instrument or a production effect (reverb tails, delay echoes, atmospheric pads, ambient swells), describe what you hear without assigning it to a specific instrument category. Reverb-heavy production can sound similar to brass or strings in places — don't guess.
|
||||
- For BPM, tap along to the most consistent rhythmic pulse (usually kick/snare or hi-hat). Report the underlying quarter-note pulse, not subdivision rates (don't count eighth notes or sixteenths as the BPM). Do NOT adjust your BPM estimate to fit a "feels fast" or "feels slow" impression — report what your tap-along count actually gives you, then separately note if the song feels different from that count.
|
||||
|
||||
Provide your analysis in this exact format:
|
||||
|
||||
## Technical
|
||||
- **Estimated BPM:** [BPM or range if it shifts, note where shifts occur]
|
||||
- **Estimated Key:** [key/scale]
|
||||
- **Time Signature:** [detected, note any changes with approximate timestamps]
|
||||
- **Duration:** [mm:ss]
|
||||
|
||||
## Sonic Profile
|
||||
- **Intro (first 15 seconds):** [exactly what instruments enter, in what order, what they're doing]
|
||||
- **Overall Genre Feel:** [describe the blend of genre influences you hear — this band fuses multiple styles, so name all the ingredients, not just the dominant one]
|
||||
- **Guitar:** [tone, style, notable techniques — clean/distorted, riff-driven/atmospheric, any solos and where]
|
||||
- **Bass:** [how prominent, tone, role — following guitar or independent, any standout moments]
|
||||
- **Drums:** [style, energy, notable fills or pattern changes, cymbal work]
|
||||
- **Vocals:** [delivery style, grit level, harmonization, how many voices, any spoken/whispered sections]
|
||||
- **Other Instruments:** [brass, keys, strings, anything else present]
|
||||
|
||||
## Dynamic Arc
|
||||
Describe how the energy moves through the song from start to finish. Note builds, drops, peaks, and transitions with approximate timestamps. Separately note any volume/intensity shifts that occur WITHOUT tempo changes.
|
||||
- [0:00-0:xx] — [what's happening]
|
||||
- [0:xx-0:xx] — [what's happening]
|
||||
(continue through the full track)
|
||||
|
||||
## Outro
|
||||
- **How it ends:** [fade, hard stop, instrumental tail, final hit — be specific about the last 10 seconds]
|
||||
|
||||
## Notable Moments
|
||||
List 3-5 specific timestamps where something musically interesting happens:
|
||||
- [timestamp] — [what happens and why it's notable]
|
||||
|
||||
## Style Prompt Accuracy
|
||||
Compare what you hear to what was requested in the generation prompt below. Note:
|
||||
- What the prompt asked for that IS clearly present in the audio
|
||||
- What the prompt asked for that is NOT present or only weakly present
|
||||
- Anything notable in the audio that was NOT in the prompt
|
||||
|
||||
Style prompt used: "[PASTE STYLE PROMPT]"
|
||||
Exclude styles requested: "[PASTE EXCLUDES]"
|
||||
```
|
||||
|
||||
**Blind vs. style-prompted:** For diagnostic workflows (investigating why a song sounds wrong), remove the Style Prompt Accuracy section and style prompt from the first pass entirely. Share the style prompt in a separate follow-up only. For cataloging workflows where you want the comparison in one pass, keep the section as-is.
|
||||
|
||||
#### Second Pass — Calibrated Follow-Up (Same Context)
|
||||
|
||||
Send this as a follow-up in the same conversation after the first pass:
|
||||
|
||||
```
|
||||
Good analysis. A few areas I'd like you to listen again more carefully for:
|
||||
|
||||
1. **Mood/feel vs. heaviness:** How does this track feel — describe what you actually perceive. Heavy instrumentation doesn't predict mood; a heavy song can feel many ways and so can a light one. Don't pick from a suggested list — describe what's there.
|
||||
2. **Volume/intensity dynamics:** Are there moments where the band gets noticeably quieter or sparser WITHOUT the tempo changing? Describe those shifts.
|
||||
3. **Bass specifics:** Listen to the bass independently. Is it using any specific techniques — slap/pop, fingerstyle, pick attack, melodic runs independent of guitar? Does it ever take a lead role?
|
||||
4. **Stereo placement:** Are any instruments panned notably left or right, especially in the intro?
|
||||
```
|
||||
|
||||
#### Non-Band-Specific Variant
|
||||
|
||||
For songs not part of a band project (solo work, one-offs), replace the opening line:
|
||||
|
||||
```
|
||||
You are analyzing an AI-generated music track for cataloging purposes. Listen to the full track carefully before responding.
|
||||
```
|
||||
|
||||
And adjust the genre note:
|
||||
|
||||
```
|
||||
- Describe the genre or genres you actually hear without assuming a fusion is present. If the track is in a single sub-genre, name that single sub-genre. If you hear multiple genre influences blended together, name them — but do not manufacture a fusion that isn't present in the audio.
|
||||
```
|
||||
|
||||
### What Gemini Does Well
|
||||
- Instrument identification (basic rhythm section + lead vocal) — reliably catches guitar, bass, drums, and vocals when they're actually present. Less reliable for non-basic instruments (brass, strings, synths, ambient pads) — see "What Gemini Misses or Gets Wrong."
|
||||
- Genre classification at macro level — right family even if specific fusion label is wrong (with the caveat that prompting Gemini to "look for fusion" will cause it to manufacture fusions that aren't there)
|
||||
- Style Prompt Accuracy feedback — the most valuable output. Honest about what Suno delivered vs. what was requested
|
||||
- Structural timeline with timestamps — dynamic arc breakdowns useful for songbook documentation
|
||||
- Stereo placement (when asked) — catches hard-panned guitars, center-anchored bass/drums
|
||||
|
||||
### What Gemini Misses or Gets Wrong
|
||||
- Cannot hear fusion when present — rounds to nearest pure genre even after calibration. Needs directed follow-up to surface real fusions
|
||||
- Misses mood/irony — reads heaviness as aggression by default. Cannot detect playful or ironic energy in heavy music without explicit prompting
|
||||
- BPM unreliable — may read subdivisions as pulse, or be biased by "feels fast/slow" leading language in prompts. Treat estimates as approximate; verify with manual hi-hat counting when it matters
|
||||
- Misses volume dynamics on first pass — describes tracks as "consistently dense" when they have significant intensity shifts
|
||||
- Cannot parse detailed endings — fine detail on last 10 seconds is unreliable
|
||||
- Misses bass techniques on first pass — slap/pop, melodic runs, lead bass consistently missed until follow-up
|
||||
- **Hallucinates atmospheric/effect content as instruments** — reverb tails, delay echoes, and ambient pads on guitars/vocals can be misidentified as brass section, string pads, or other instruments that aren't actually present. Atmospheric production framing in the style prompt ("cathedral roominess," "intimate studio room ambience," "wide analog stereo," "shimmer") increases hallucination risk. When Gemini reports a non-basic instrument, verify against the actual audio before filing as fact. **Documented case:** Gemini reported a "very prominent brass section" on a track with no brass at all — what it heard was reverb tails on the vocals and guitars from an atmospheric production stack.
|
||||
- **Inconsistent key detection vs. librosa** — there is a documented pattern of Gemini consistently leaning toward minor-key readings while librosa consistently leans toward major-key readings on the same track. Without ground truth verification (perfect-pitch listener, manual chord identification), neither source is automatically correct. Use lyric content / emotional context as a tiebreaker, or accept that key is uncertain and document both readings.
|
||||
- **Sensitive to leading language in prompts** — phrases like "this band plays genre fusion" or "a heavy song can feel upbeat, playful, or ironic" prime Gemini to invent content matching those framings. Use neutral, descriptive prompt language that asks Gemini to describe what it perceives without suggesting what categories to find. The prompt templates in this doc have been progressively de-led to minimize these effects.
|
||||
|
||||
### Temperature Findings — 0.5 Outperforms 0.3
|
||||
|
||||
A/B testing on the same track (brass-metal fusion) with blind prompts at different temperatures:
|
||||
|
||||
**Gemini at 0.5 temp (blind, no style prompt):**
|
||||
- Genre: "Progressive metal, ska-core, hard rock, swing/jazz, dark cabaret" — best genre description from any LLM
|
||||
- Brass: Correctly detected on blind prompt (trumpet, trombone, saxophone)
|
||||
- Dynamics: Verse dropouts well captured — guitars drop out, sparse mix, builds for choruses
|
||||
- Bass (first pass): "Punchy, metallic, pick-driven, walking lines" — reasonable
|
||||
- BPM: ~145 (closer to librosa's 184.6 half-time than 0.3 temp's 165)
|
||||
|
||||
**Gemini at 0.3 temp (with style prompt + follow-up calibration):**
|
||||
- Genre: "Manic carnival-punk, ska-core, funk-metal" — decent but needed follow-up to get there
|
||||
- Brass: Detected but classified as ska-punk rather than NOLA brass-metal
|
||||
- Bass: Hallucinated "slap/pop funk-metal techniques" — likely influenced by seeing "NOLA funk groove" in the style prompt
|
||||
- BPM: ~165 (same as a completely different track — unreliable)
|
||||
|
||||
**Key takeaway:** 0.5 temp with a blind prompt produced better genre description, more accurate instrument detection, and fewer hallucinations than 0.3 temp with the style prompt provided. The extra temperature gives Gemini room to describe what it actually hears rather than fitting output into narrow categories.
|
||||
|
||||
**Persistent gaps at both temperatures:**
|
||||
- Ending detail remains unreliable — neither caught the a capella moment, vocal yell, triple snare strike, or final brass blast
|
||||
- Intro accuracy: 0.5 temp said full band at 0:00 when actually brass-only for first 10 seconds
|
||||
- Follow-up prompts can trigger hallucinations — asking specifically about bass at 0.5 temp produced "slap and pop, lead melodic role" when bass was actually hidden behind guitar/tubas
|
||||
|
||||
**Updated recommendation:** Use **0.5 temperature** in AI Studio as the default. Use **blind prompts** (no style prompt) for the first pass. Only share the style prompt in a calibrated follow-up. Be cautious with follow-up questions about specific instruments — they can trigger hallucinations where the first pass was accurate.
|
||||
|
||||
### Integration with Feedback Elicitor
|
||||
- Style Prompt Accuracy as feedback loop: compare what was prompted vs. what Gemini hears → identify what Suno ignores, misinterprets, or adds unbidden → adjust future prompts
|
||||
- A/B prompt testing: change one variable, generate both, analyze both, compare. Quantifies what prompt changes actually do.
|
||||
- Batch analysis for playlist ordering: BPM, key, and dynamic arc data across catalog enables data-informed playlist decisions
|
||||
|
||||
### Gemini as Suno Prompt Engineering Feedback Loop
|
||||
|
||||
The highest-value use of Gemini audio analysis is **real-time A/B testing of Suno prompts during song creation**, not retrospective catalog analysis. Retrospective analysis of already-published songs is limited — you have one audio snapshot per song and no controlled comparison. The real power is testing prompt changes as you make them.
|
||||
|
||||
**Recommended workflow for prompt improvement:**
|
||||
1. Write style prompt + lyrics package
|
||||
2. Generate 2-3 versions on Suno
|
||||
3. Run each through Gemini blind at 0.5 temp (NO style prompt in the analysis request)
|
||||
4. Compare what Gemini hears across versions to what was prompted
|
||||
5. Identify what the prompt actually controlled vs. what Suno ignored
|
||||
6. Adjust ONE variable (word position, tag, slider value), regenerate, analyze again
|
||||
7. Document what moved and what didn't in the songbook generation log
|
||||
|
||||
**A/B testing discipline:** Change ONE variable per test. Move "art rock" from position 1 to position 3? Generate both, analyze both, compare. Add "driving technical bass"? Generate with and without, analyze both. This is the only way to systematically learn what Suno actually responds to vs. what it ignores.
|
||||
|
||||
**Why Gemini's strengths align with this workflow:** It reliably detects instrument presence, dynamic arc, mood/energy, and stereo placement — exactly the things prompt changes are trying to influence. Its weaknesses (BPM, bass technique, endings) don't matter for A/B comparisons because they'd be equally wrong on both versions.
|
||||
|
||||
### Preferred Workflow
|
||||
Opus 4.6 (Claude) as primary prompter/orchestrator, Gemini 3.1 as audio analysis assistant. Claude builds Suno packages, Gemini analyzes resulting audio, Claude interprets analysis to inform next iteration. Mac can suggest A/B testing as an optional step after presenting a Suno package: "Want to test this prompt? Generate 2-3 versions, run them through Gemini, and I'll tell you what landed and what didn't."
|
||||
|
||||
---
|
||||
|
||||
## Playlist Sequencing
|
||||
|
||||
### Methodology
|
||||
|
||||
Playlist ordering requires balancing two dimensions simultaneously:
|
||||
- **Sonic flow** — BPM transitions, key compatibility (Camelot wheel), energy arcs, timbral variety
|
||||
- **Lyrical/narrative progression** — thematic arc across songs, emotional journey, story sequencing
|
||||
|
||||
Neither dimension alone is sufficient. Adjacent tracks need to work musically AND thematically.
|
||||
|
||||
### Sequencing Principles
|
||||
|
||||
**Album sequencing fundamentals:**
|
||||
- Opener must grab attention — front-loading engaging material is critical in the streaming era
|
||||
- Variety within cohesion — avoid two songs with similar arrangement density, instrumentation, or timbral character back-to-back
|
||||
- Similar thematic songs need distance — tracks covering the same ground blur when adjacent
|
||||
- Sonic palette contrast is essential for maintaining interest
|
||||
- Silence between tracks is itself a sequencing decision — spacing signals mood group shifts
|
||||
|
||||
**DJ Harmonic Mixing (Camelot Wheel):**
|
||||
- Same key (8A→8A): Perfect but monotonous if overused
|
||||
- +/-1 number, same letter (8A→7A or 9A): Most common professional move, changes one scale note
|
||||
- Relative major/minor (8A→8B): Mood shift without changing harmonic center. Minor→major lifts; major→minor darkens
|
||||
- +2 numbers: Energy boost, more noticeable — use sparingly
|
||||
- Beyond +2: Risk audible clashing — use only for intentional dramatic contrast
|
||||
|
||||
**BPM takes priority over key:** A harmonically perfect transition with a 20 BPM jump sounds worse than a minor key clash at the same tempo. Double/half time relationships (70 BPM ↔ 140 BPM) share the same pulse grid and can work together.
|
||||
|
||||
**Camelot is a key-relationship tool, not a comprehensive transition-smoothness measure.** The Camelot wheel tracks key relationships only — it does NOT capture:
|
||||
- **Tempo gaps** — a 152 BPM power-pop banger adjacent to a 78-felt heavy-rock track will sound jarring even with a perfect 10A↔10B relative pair
|
||||
- **Genre/style register** — power-pop crashing into philosophical-heavy or piano-grief sounds abrupt regardless of Camelot match
|
||||
- **Energy/dynamic level** — sustained-high banger next to sustained-low melancholy won't blend even with key alignment
|
||||
- **Production aesthetic** — different mix character (warm analog vs. modern compressed, etc.) creates discontinuity
|
||||
|
||||
**When Camelot perfection is misleading:** For genre-outlier tracks (e.g., a power-pop song in a non-power-pop catalog, or a thrash track in a folk-leaning album), Camelot architecture may favor placement spots where the keys line up beautifully but the listening experience is jarring because of tempo, genre, or energy mismatches. Camelot perfection on paper does NOT equal smooth listening transitions when other dimensions diverge.
|
||||
|
||||
**Production-confirmed (LV Mirror Image placement, 2026-04-28):** Initial placement options framed Option A as Camelot-strong (three-track perfect run Slide→DID→MI at 9A→10A→10B) and Option C as a "Camelot trade-off for thematic-callback." User correction: *"Not so much trading Camelot because it's honestly just jarring in those other positions and in C it's a little less so."* Options A and B were rejected because the **listening experience was jarring** despite Camelot perfection — the 152 BPM power-pop crashing into 78-felt DID/Cities was a tempo+genre+energy mismatch that Camelot couldn't correct for. Position 3 had rougher Camelot but tonally adjacent tracks (PR 81-felt, Askin'? 92-felt) were less distant from MI's banger energy, producing a less-jarring transition.
|
||||
|
||||
**Practical rule for placement evaluation:** When presenting placement options, describe the **listening experience** (smooth / fluid / abrupt / jarring) as the primary criterion. Camelot is one input. Explicitly call out tempo gaps, genre register gaps, and energy gaps alongside Camelot when significant. A Camelot-perfect match with a 70+ BPM gap should be flagged as "Camelot-perfect but tempo-jarring," not as "the strongest option." For genre-outlier tracks, accept that no placement will be Camelot-AND-tempo-AND-genre-perfect — pick where the listening experience is least jarring.
|
||||
|
||||
**When Camelot is reliable:** Camelot transitions work cleanly when the songs are also tempo-and-genre-coherent. The framework breaks down specifically when other dimensions diverge. Same-genre / same-tempo-pocket placements (e.g., sequential tracks in a coherent stylistic cluster) benefit straightforwardly from Camelot architecture; cross-genre / cross-tempo placements need additional listening-experience evaluation.
|
||||
|
||||
**Concert setlist design (W-Shape model):**
|
||||
- Featured songs at three peaks (beginning, middle, end) with complementary songs providing changes in key, tempo, timbre, and mood between them
|
||||
- Multiple peaks and valleys rather than a single arc
|
||||
- Peak-end rule: audiences remember the best moment and the final moment most vividly
|
||||
- Encore: a planned 3-5 song mini-set at high energy following a breath-catching break
|
||||
|
||||
### Playlist Sequencing Scripts
|
||||
|
||||
**playlist-sequencing-data.py** — Generates a full sequencing report: BPM, overall/entry/exit keys, Camelot codes, energy levels, intro/outro energy percentages, and transition quality ratings between adjacent tracks.
|
||||
```bash
|
||||
python scripts/playlist-sequencing-data.py /path/to/mp3s/
|
||||
```
|
||||
|
||||
**chord-progression.py** — Analyzes chord changes and key centers in 30-second windows within a single track. Measure-by-measure detection is too noisy with distorted guitars, but 30-second key center summaries are useful.
|
||||
```bash
|
||||
python scripts/chord-progression.py track.mp3
|
||||
```
|
||||
|
||||
**Camelot wheel mapping** is embedded in the sequencing script — all 24 keys (12 major, 12 minor) mapped to codes 1A-12A (minor) and 1B-12B (major).
|
||||
@@ -0,0 +1,34 @@
|
||||
# Headless Output Contract
|
||||
|
||||
```json
|
||||
{
|
||||
"feedback_analysis": {
|
||||
"triage_type": "clear|positive|vague|contradictory|technical",
|
||||
"identified_dimensions": ["vocals", "energy"],
|
||||
"confidence": "high|medium|low"
|
||||
},
|
||||
"adjustment_recommendations": {
|
||||
"style_prompt": {"add": [], "remove": [], "reorder_notes": ""},
|
||||
"exclusions": {"add": [], "remove": []},
|
||||
"sliders": {"weirdness": "", "style_influence": ""},
|
||||
"lyrics": {"changes": []},
|
||||
"model_suggestion": "",
|
||||
"studio_features": []
|
||||
},
|
||||
"confidence_scores": {"style_prompt": "high", "sliders": "medium"},
|
||||
"iteration_log": {"session_id": "", "round": 1, "tried": [], "user_reaction": "", "reasoning_chain": ""},
|
||||
"suggested_next_action": {"skill": "", "mode": "", "params": {}}
|
||||
}
|
||||
```
|
||||
|
||||
## Headless Input Contract
|
||||
|
||||
| Flag | Required | Description |
|
||||
|------|----------|-------------|
|
||||
| `--feedback` | Yes | Text string or JSON with feedback content |
|
||||
| `--style-prompt` | Recommended | Original style prompt used for generation |
|
||||
| `--model` | Optional | Suno model used (v4.5-all, v4 Pro, v4.5 Pro, v4.5+ Pro, v5 Pro, v5.5 Pro) |
|
||||
| `--sliders` | Optional | JSON with Weirdness/StyleInfluence values |
|
||||
| `--lyrics` | Optional | File path to original lyrics |
|
||||
| `--band-profile` | Optional | Profile name for context loading |
|
||||
| `--iteration-log` | Optional | File path to previous round's iteration log |
|
||||
@@ -0,0 +1,44 @@
|
||||
# Feedback Elicitor Output Template
|
||||
|
||||
```
|
||||
## Feedback Summary
|
||||
{One-paragraph summary of what the user wants changed and why}
|
||||
|
||||
## Before/After Preview
|
||||
**Current sound:** {vivid description of what the current output likely sounds like}
|
||||
**Target sound:** {vivid description of what the adjusted version should sound like}
|
||||
|
||||
## What Changed and Why
|
||||
{Word-level micro-diff of style prompt: highlight added, removed, and repositioned words with one-line explanations per change. Turns each round into a prompt-engineering micro-lesson.}
|
||||
|
||||
## Style Prompt Adjustments
|
||||
**Current:** {original style prompt if available}
|
||||
**Recommended:** {modified style prompt}
|
||||
**Changes:** {bullet list of what changed and why}
|
||||
**Confidence:** {High -- direct from your feedback / Medium -- interpreted from our conversation / Experimental -- worth trying}
|
||||
|
||||
## Exclusion Prompt Adjustments
|
||||
**Current:** {original exclusions if available}
|
||||
**Recommended:** {modified exclusions}
|
||||
|
||||
## Slider Adjustments
|
||||
{If applicable -- Weirdness and Style Influence recommendations with reasoning}
|
||||
|
||||
## Lyric Adjustments
|
||||
{If applicable -- specific changes recommended in LT adjustment spec format}
|
||||
|
||||
## Studio Features
|
||||
{If applicable -- recommended Studio workflows}
|
||||
|
||||
## Strategy Note
|
||||
{When applicable: "For this type of issue, try generating 3-5 versions with the adjusted prompt -- Suno's randomness means one may nail it without further changes." Or: "Since only the chorus needs work, consider Replace Section on v5 Pro instead of full regeneration."}
|
||||
|
||||
## Additional Notes
|
||||
{Model suggestions, creative context that influenced recommendations}
|
||||
```
|
||||
|
||||
## Iteration Log
|
||||
|
||||
```json
|
||||
{"session_id": "{timestamp}", "round": 1, "feedback_type": "vague", "dimensions_adjusted": ["vocals", "production"], "key_changes": ["rawer vocals", "less reverb"], "user_intent": "dreamy indie folk", "reasoning_chain": "User said 'too polished' -> mapped to vocal production -> reduced reverb + added raw/intimate descriptors"}
|
||||
```
|
||||
@@ -0,0 +1,196 @@
|
||||
# Playlist Sequencing Methodology
|
||||
|
||||
This reference covers album-level playlist sequencing: how to evaluate and order a body of tracks into a coherent listening experience. The focus is on the **album-craft layer** that sits above pairwise transition scoring — narrative structure, energy arcs, key positions, locked arcs, encore design.
|
||||
|
||||
For the **transition-evaluation layer** (Camelot wheel rules, BPM tolerances, felt-vs-librosa BPM corrections, listening-experience-as-primary criterion, parallel-key insights), see [`gemini-audio-analysis.md`](./gemini-audio-analysis.md) — particularly the "DJ Harmonic Mixing (Camelot Wheel)" section and the "Felt BPM" subsection. This doc assumes that material as foundational and builds on it.
|
||||
|
||||
## When to Use
|
||||
|
||||
Apply this methodology when:
|
||||
- Ordering tracks into a playlist or album for the first time
|
||||
- Re-evaluating sequencing after a regen wave changes track metrics (BPM, key, energy shape)
|
||||
- Adding a new track to an existing playlist and choosing its slot
|
||||
- Diagnosing why a published playlist "doesn't flow" despite individual tracks being strong
|
||||
|
||||
Skip the heavy methodology when:
|
||||
- Reordering 1-2 adjacent tracks with no upstream/downstream impact
|
||||
- The user has a fixed sequence preference and wants only sonic-transition feedback within it
|
||||
|
||||
## Per-Band Playlist YAML — the canonical input
|
||||
|
||||
Each band in a project owns exactly one canonical playlist file at `docs/{band-slug}-playlist.yaml`. This file is the **single source of truth** for the band's track sequence and the input to the sequencing script. The schema is straightforward:
|
||||
|
||||
```yaml
|
||||
album: "<Band display name>"
|
||||
tracks:
|
||||
- name: "<Song title (matches songbook frontmatter title)>"
|
||||
file: "<exact filename in docs/audio/, e.g. My Song.mp3>"
|
||||
# ... one entry per track, in playlist order
|
||||
```
|
||||
|
||||
Multi-band projects keep each band's playlist independent — a band's YAML lives at its own slug and produces its own auto-generated companion + JSON archive. There's no shared global playlist file; that pattern is what causes drift between bands.
|
||||
|
||||
If a band exists with songbook entries but no playlist YAML, scaffold one:
|
||||
|
||||
```bash
|
||||
python3 src/skills/suno-band-profile-manager/scripts/scaffold-playlist.py {band-slug} --from-songbook
|
||||
```
|
||||
|
||||
The schema and lifecycle rules (creation on band profile creation, deprecation of the `playlist:` block in band profile YAML, workflow rules on song publish) are documented in `suno-band-profile-manager/references/profile-schema.md` "Per-Band Playlist YAML" section.
|
||||
|
||||
## Tools Stack
|
||||
|
||||
The methodology is supported by `scripts/playlist-sequencing-data.py` which generates per-track structured data (BPM, overall/entry/exit keys, Camelot codes, energy level, intro/outro energy, transition quality) for every track in a per-band playlist YAML. Output is auto-saved to:
|
||||
- `docs/audio-analysis/playlists/{band-slug}.json` — raw JSON archive (per-band; does not collide across bands)
|
||||
- `docs/{band-slug}-playlist-sequencing.md` — refreshed Markdown companion summary (per-band path so each band gets its own; AUTOGEN markers preserve hand-curated content outside)
|
||||
|
||||
See the script's `--archive` and `--companion` flags (default ON). Catalog-wide deeper analysis (energy shifts, section boundaries, spectral balance, dynamic character) comes from `scripts/batch-full-analysis.py` writing to `docs/catalog-analysis-report.md`.
|
||||
|
||||
The data layer is the *input* to the methodology; it doesn't make sequencing decisions on its own.
|
||||
|
||||
## Per-Track Variables to Track
|
||||
|
||||
For each track in the playlist, gather and reason about all nine of these. Earlier variables tend to dominate when conflicts arise — but every variable matters and a "perfect score" on one (e.g., Camelot) doesn't override a poor score on another (e.g., tempo).
|
||||
|
||||
1. **BPM** (raw librosa) — the measured tempo
|
||||
2. **Felt BPM** (human-verified) — the *perceived* tempo, often half or double the librosa raw value. **Felt BPM is what governs listening experience**; librosa raw is a measurement that may need halftime/double-time correction. Always verify felt BPM by ear before trusting raw numbers for sequencing decisions. (See `gemini-audio-analysis.md` "Felt BPM" subsection for the correction patterns.)
|
||||
3. **Overall key + Camelot code** — the dominant key center
|
||||
4. **Entry key + Camelot code** (first 30 sec) — the key the track *opens* in. May differ from overall.
|
||||
5. **Exit key + Camelot code** (last 30 sec) — the key the track *ends* in. May differ from overall and from entry.
|
||||
6. **Energy level** (1-10 scale) — average loudness/intensity. Useful for identifying peaks and valleys.
|
||||
7. **Intro energy %** — sparse vs. explosive opening. Critical for transition-from-previous-track evaluation.
|
||||
8. **Outro energy %** — fade vs. hard ending. Critical for transition-into-next-track evaluation.
|
||||
9. **Dynamic character** — FLAT / MODERATE / DYNAMIC / HIGHLY-DYNAMIC. A "mid-tempo" song with HIGHLY-DYNAMIC character feels very different from a "mid-tempo" song with FLAT character — the listener's experience hinges on this, not just on BPM.
|
||||
|
||||
Plus three contextual variables that aren't measurable from audio alone:
|
||||
|
||||
10. **Mood/feel** — captured from Listening Notes in the songbook entry, Gemini blind analysis, or the user's articulation.
|
||||
11. **Sonic palette / arrangement density** — instrumentation profile (acoustic vs. dense metal, brass-led vs. guitar-led, etc.).
|
||||
12. **Lyrical narrative position** — what the song "means" in the album's story; what came before, what's coming next.
|
||||
|
||||
## Transition Discipline
|
||||
|
||||
The transition between two adjacent tracks is the actual moment the listener experiences. Per-track variables exist; transitions are *the experience*.
|
||||
|
||||
**Exit key matters more than overall key.** A track that's "overall in C minor" but ends in G minor will transition into the next track via G minor, not C minor. Use exit-Camelot of track N → entry-Camelot of track N+1 as the actual transition assessment. The script's `transition_to_next` field already does this.
|
||||
|
||||
**Camelot wheel scoring is one input, not the verdict.** See `gemini-audio-analysis.md` "DJ Harmonic Mixing (Camelot Wheel)" for the rules and "Camelot framework limitations" for what it misses. In particular: parallel-key transitions (same root, different mode — e.g., D# major → D# minor) score JARRING on Camelot but are musically a deliberate emotional pivot on the same harmonic center. The listener may hear continuity even when the wheel says discontinuity.
|
||||
|
||||
**BPM transition tolerance:** <3% smooth, 3-6% noticeable, >6% requires intentional contrast. Halftime/double-time pairs (e.g., felt 70 and felt 140) share a pulse grid and can mix coherently even though the felt-tempo difference is dramatic — but treat this as a *deliberate* breath-in / breath-out move, not a "smooth" transition.
|
||||
|
||||
**Intro/outro % bridges the dynamic side of the transition.** A track ending at 70% energy into a track starting at 15% creates a dramatic drop — fine if it's intentional (act break), jarring if it's mid-act. The 15% intro after a high outro reads as a hush or a reset; the listener's ear interprets the gap.
|
||||
|
||||
## Album-Craft Layer
|
||||
|
||||
Beyond pairwise transitions, the playlist as a whole has shape. Several established models apply.
|
||||
|
||||
### Energy Arc Models
|
||||
|
||||
**Inverted-U (classic album):** Tempo and energy build through the front half, peak mid-album, descend toward the close. Valence/arousal (emotional intensity) often *dips* mid-album, creating a journey shape — the energy is high but the emotional weight gets heavier before lifting.
|
||||
|
||||
**W-shape (concert / featured-songs model):** Three peaks at the beginning, middle, and end of the playlist, with complementary songs providing variety in key/tempo/timbre/mood between the peaks. Two valleys between the peaks give the listener room to breathe. The W-shape works well when the playlist has clear "anchor" tracks at all three positions.
|
||||
|
||||
**Concert peak-end rule:** The audience remembers the best moment and the final moment most vividly. Open higher-than-average, allow a dip, close higher-than-average. The closer doesn't have to be the loudest track — it has to feel like a *resolution*.
|
||||
|
||||
A 6-act narrative structure naturally creates a W-shape if Acts I, IV, and VI hold the peaks; valleys land in Acts II and V. But the shape is descriptive, not prescriptive — if the album's emotional logic produces a different curve (front-double-peak with contemplative descent close, for example), name what it actually is rather than forcing the W.
|
||||
|
||||
### Key Positions
|
||||
|
||||
The methodology treats positions **1, 4, 7, and 10** as load-bearing. Strongest songs go here. Track 1 sets the tone; track 2 confirms the promise (so 1 → 2 cannot be a misfire); track 4 anchors the front; track 7 carries the listener into the middle; track 10 picks up the second half. The final track provides resolution — separate criterion from "strongest song."
|
||||
|
||||
For longer playlists (30+ tracks), the same logic extends: 1 / 4 / 7 / 10 / 13 / ... up to a closer that resolves. The pattern thins out past about position 10 because the listener is now inside the album rather than evaluating it from the outside.
|
||||
|
||||
**Streaming-era reality:** Front-loading with engaging material is more critical than ever. The first 3-4 tracks determine whether a listener stays with the album or skips. This doesn't mean the front needs to be the *loudest* — it means it needs to be the most *immediately compelling*.
|
||||
|
||||
### Sonic Palette Variety
|
||||
|
||||
Avoid placing two songs with similar instrumentation, arrangement density, or timbral character next to each other. The methodology's principle: contrast is essential for maintaining interest.
|
||||
|
||||
Specific anti-patterns:
|
||||
- Two intricate intros back-to-back — the listener loses orientation
|
||||
- Two acoustic stripped-back tracks adjacent — the album feels like it stalled
|
||||
- Two power-pop bangers adjacent — the genre register collapses into a single mood
|
||||
- Two slow contemplative tracks adjacent — unless deliberate ("breath section")
|
||||
|
||||
Variety is an active design choice, not a side effect of randomization.
|
||||
|
||||
### Tempo Variety
|
||||
|
||||
Categorize tracks into up-tempo / mid-tempo / slow buckets. Avoid placing too many from the same category adjacent. Two slow songs back-to-back loses listeners unless deliberate.
|
||||
|
||||
But: **a deliberate slow-tempo block is a real album convention.** Doom albums, ambient stretches, contemplative interludes — three or four felt-tempo-matched tracks in a row can be an immersive zone if the *sonic palette* and *mood* shift across them. The methodology cautions against accidental same-tempo runs, not against intentional ones.
|
||||
|
||||
### Same-Key Adjacency
|
||||
|
||||
3-4 songs in the same key consecutively gets boring. When you finally shift keys after too many same-key tracks, the change feels more jarring than a varied stretch would have. Limit same-key consecutive runs to 2 unless you have a specific reason to push to 3.
|
||||
|
||||
### Similar-Songs-Need-Distance
|
||||
|
||||
Tracks that cover similar **thematic** ground (e.g., two songs about "knowing nothing," two songs about a parent, two songs about NOLA mythology) should be separated in the playlist so each hits fresh. Adjacency blurs them into one long meditation; spacing lets each song carry its own weight.
|
||||
|
||||
This is distinct from the same-key rule and the sonic-palette rule — a track can be sonically and harmonically distinct from its neighbor but cover the same lyrical territory.
|
||||
|
||||
### Locked Arcs / Preserved Sequences
|
||||
|
||||
Sometimes a sequence of 2-N tracks is *deliberately positioned* to read as a unit — a love → loss → grief → healing arc, a three-act story, a musical movement that depends on adjacency. These should be locked: the order within the arc cannot change, and the arc as a whole should travel as a block.
|
||||
|
||||
When evaluating playlist changes:
|
||||
- Surface locked arcs explicitly before proposing reorders
|
||||
- Treat the arc's position as flexible (the block may move) but the order within as fixed
|
||||
- If a proposed reorder requires breaking the arc, stop and ask the user — never break a documented locked arc on Mac's own authority
|
||||
|
||||
In Lenny's case, the locked arc is the four-song Love & Loss / Heal sequence (From Now Until... → Distant-- → Breast Feeding → The Fire That Never Stops). Per session-context-for-mac.md: *"These are positioned deliberately in the playlist and should not be separated."*
|
||||
|
||||
### Encore Structure
|
||||
|
||||
For album-as-concert-set framing: Act VI (or the final stretch) functions as a planned 3-5 song mini-set at high energy following a "breath-catching break." The break is often a single contemplative track that gives the listener room before the closing run.
|
||||
|
||||
**Anatomy of a working encore section:**
|
||||
- Breath-catcher: low-mid energy, contemplative or stripped-back
|
||||
- Encore launch: high-energy banger that re-engages the listener
|
||||
- Encore middle: sustained energy with thematic coherence
|
||||
- Encore close / resolution: doesn't have to peak louder; needs to *resolve*
|
||||
- Optional post-encore coda: the singer alone on the empty stage — fade close
|
||||
|
||||
If your final stretch lacks this shape (e.g., averages mid-energy throughout with no clear launch), call it what it is: a "contemplative legacy descent" or "extended fade close" — a different valid shape, not a broken encore.
|
||||
|
||||
## What the Methodology Doesn't Capture
|
||||
|
||||
**Listening experience is the ultimate arbiter.** Per `gemini-audio-analysis.md`: *"describe the listening experience (smooth / fluid / abrupt / jarring) as the primary criterion. Camelot is one input. Explicitly call out tempo gaps, genre register gaps, and energy gaps alongside Camelot when significant."*
|
||||
|
||||
**Parallel-key transitions** (same root, different mode) are musically a deliberate emotional pivot — minor → major lifts; major → minor darkens. Camelot wheel scores them JARRING because the wheel positions are different, but the listener hears the same harmonic center. When evaluating transitions, name parallel-key relationships explicitly when they appear; don't let the JARRING score override what the ear knows.
|
||||
|
||||
**Felt-tempo lock vs. raw-BPM lock.** Three tracks at "136 librosa" don't necessarily lock at felt-136 — one of them may be felt-68 with halftime detection. Verify felt BPM before claiming tempo continuity across tracks.
|
||||
|
||||
**Genre-outlier placement.** A power-pop track in a swamp-metal album won't have a Camelot-AND-tempo-AND-genre-perfect placement anywhere. Pick where the listening experience is *least jarring*, accept that no slot is ideal, and document the trade-off rather than pretending it's seamless.
|
||||
|
||||
**The narrative dimension is non-data.** No script measures whether two adjacent tracks are thematically coherent. That's the user's call (or the orchestrating agent's judgment based on lyrical content + writer voice context). Don't treat the data analysis as sufficient — sonic flow and thematic flow are independent and both must work.
|
||||
|
||||
## Process for Reviewing a Playlist
|
||||
|
||||
A repeatable approach for "is this playlist sequence working?" — apply variables in this order:
|
||||
|
||||
1. **Surface locked arcs** — what cannot move? Document them up front.
|
||||
2. **Run the script** — get all 38+ tracks' per-track data and per-transition scoring.
|
||||
3. **Verify felt BPM** for any track with library raw in the 130-180 BPM range or 70-100 BPM range — these are the bands where halftime/double-time confusion is most common. Ask the user when uncertain.
|
||||
4. **Identify the act structure** — is the playlist organized around narrative acts? What are their thematic functions? How many tracks per act?
|
||||
5. **Check the energy arc** — what shape does the playlist have? Does it match the intended shape (W, inverted-U, concert peak-end, contemplative descent)?
|
||||
6. **Check key positions** — do positions 1, 4, 7, 10 have load-bearing tracks? Is the closer a resolution?
|
||||
7. **Walk transitions act-by-act** — within each act, evaluate transitions on the full variable stack (Camelot, BPM-felt, intro/outro%, sonic palette, theme). Flag the worst.
|
||||
8. **Identify cluster opportunities** — are felt-tempo cousins scattered when they could be a deliberate immersive block? Are thematic cousins adjacent when they should be separated?
|
||||
9. **Form a recommendation** — propose specific moves with named justifications across multiple variables. Don't just say "swap X and Y" without naming what each variable says about that swap.
|
||||
10. **Surface trade-offs honestly** — every move has trade-offs. Name them. Don't claim a move is "cleaner" if it's actually "trades A-jarring for B-jarring."
|
||||
|
||||
The output isn't a metrics dump — it's an opinionated proposal grounded in the variables, with explicit acknowledgment of what's locked, what's a judgment call, and where the user's ear should be the tiebreaker.
|
||||
|
||||
## Cross-References
|
||||
|
||||
- `gemini-audio-analysis.md` — Camelot wheel mechanics, felt-BPM corrections, listening-experience-as-primary criterion (foundational; this doc builds on it)
|
||||
- `scripts/playlist-sequencing-data.py` — generates the per-track sequencing data
|
||||
- `scripts/batch-full-analysis.py` — generates the catalog-wide deeper analysis (energy shifts, section boundaries, dynamic character)
|
||||
- `scripts/audio-deep-analysis.py` — per-song deep analysis
|
||||
- `docs/audio-analysis/playlists/<album>.json` — JSON archive of the playlist sequencing data
|
||||
- `docs/audio-analysis/catalog/<date>-deep.json` — JSON archive of the deep catalog analysis
|
||||
- `docs/playlist-sequencing-data.md` — auto-refreshed Markdown companion to the playlist sequencing JSON
|
||||
- `docs/catalog-analysis-report.md` — auto-refreshed Markdown companion to the deep catalog analysis
|
||||
- `docs/audio-analysis-reference.md` — felt-BPM corrections + LLM-comparison hand-curated alongside the auto-table
|
||||
@@ -0,0 +1,501 @@
|
||||
# Suno Parameter Map
|
||||
|
||||
> **Related references:** For the complete delivery metatag catalog, section tag behavior, and experimental tags, see `suno-lyric-transformer/references/metatag-reference.md`. For section emotional roles and poem-to-song structure decisions, see `suno-lyric-transformer/references/section-jobs.md`.
|
||||
>
|
||||
> **Critical zone:** The first ~200 characters of a style prompt carry disproportionate influence on generation. When recommending additions, prioritize the most impactful descriptors for the critical zone. Supplementary descriptors go after.
|
||||
>
|
||||
> **Last validated:** April 6, 2026 (Suno v5.5, v5, v4.5-all). Updated with corrected Voices Audio Influence ranges (JG BeatsLab testing), Weirdness-during-Extend drift finding, callback phrasing for Replace Section, Style Influence plateau note. Recommendations are based on these model versions — newer models may respond differently.
|
||||
|
||||
Maps feedback dimensions and emotional vocabulary to concrete Suno parameter adjustments.
|
||||
|
||||
## Voices & Custom Models
|
||||
|
||||
### Voices (User-Uploaded Vocal Identity)
|
||||
|
||||
When the user has a Voice active, the Voice provides the vocal identity (timbre, character, tone). Vocal *delivery* adjustments should use **delivery metatags** in the lyrics field, NOT style prompt vocal descriptors.
|
||||
|
||||
| Adjustment | Use This (Delivery Metatag) | NOT This (Style Prompt) |
|
||||
|------------|----------------------------|------------------------|
|
||||
| Softer delivery | `[Whispered]`, `[Soft]` | "whispered vocals" in style prompt |
|
||||
| Powerful delivery | `[Belted]`, `[Powerful]` | "powerful singing" in style prompt |
|
||||
| Emotional delivery | `[Tender]`, `[Yearning]` | "emotional vocals" in style prompt |
|
||||
| Aggressive delivery | `[Aggressive]`, `[Screamed]` | "aggressive vocal style" in style prompt |
|
||||
|
||||
**Audio Influence with Voices — use-case dependent:**
|
||||
|
||||
Independent testing (JG BeatsLab, March 2026) found the practical ceiling is lower than Suno's UI range suggests. At 85%, voice resemblance only reached ~70% with increasing shimmer and vocal artifacts. Pushing the slider highest produces worse professional quality, not better.
|
||||
|
||||
| Goal | Range | Notes |
|
||||
|------|-------|-------|
|
||||
| Voice as subtle flavor | 30-40% | Gentle influence, maximum generation polish |
|
||||
| Balanced voice + quality | 40-60% | **Recommended starting point** — recognizable with manageable artifacts |
|
||||
| Identity-focused | 60-70% | Quality trade-off begins here |
|
||||
| Maximum fidelity (caution) | 70-80% | Diminishing returns; artifacts increase faster than resemblance |
|
||||
|
||||
Start at 50% and iterate in 5-10% increments based on feedback. Do not exceed 70% without accepting significant quality trade-offs.
|
||||
|
||||
### Custom Models (User-Trained Production Models)
|
||||
|
||||
When the user has a Custom Model active, the model has learned a production DNA from its training catalog. Generic production adjustments (e.g., "polished production," "raw mix") may have little effect because the model defaults to its trained production style.
|
||||
|
||||
| Feedback | Standard Approach (May Not Work) | Custom Model Approach |
|
||||
|----------|----------------------------------|-----------------------|
|
||||
| "Production is too heavy" | "lighter production" | Name the specific element: "reduce distorted guitar layers, more acoustic presence" |
|
||||
| "Mix sounds wrong" | "better mix" | Target specifics: "push vocals forward, pull back drum room reverb" |
|
||||
| "Doesn't sound like my style" | Adjust style prompt broadly | Retrain model with better-curated catalog; use more specific prompt overrides |
|
||||
|
||||
**Key principle:** Adjustments need to be MORE specific to override a Custom Model's defaults. Generic descriptors get absorbed by the model's learned tendencies.
|
||||
|
||||
### Voice + Custom Model Combined
|
||||
|
||||
When both a Voice and a Custom Model are active, change **ONE variable at a time** to isolate what moved. Changing the style prompt, Voice delivery metatags, and Audio Influence simultaneously makes it impossible to determine which change caused the result.
|
||||
|
||||
**Isolation sequence:**
|
||||
1. Adjust delivery metatags first (least disruptive — only changes vocal performance)
|
||||
2. Then adjust Audio Influence if voice fidelity is the issue
|
||||
3. Then adjust style prompt if the production/arrangement needs changing
|
||||
4. Regenerate and evaluate after each single change
|
||||
|
||||
## v5.5 Workflow Paradigm
|
||||
|
||||
v5.5 favors an iterative **generate -> inspect -> section replace -> refine** workflow over full regeneration. This preserves good material and spends fewer credits.
|
||||
|
||||
### Recommended v5.5 Workflow
|
||||
|
||||
1. **Generate** the initial output from the song package
|
||||
2. **Inspect** the full result — evaluate structure, melody, emotional angle, and production
|
||||
3. **Section replace** any sections that need work (preserve sections that are good)
|
||||
4. **Refine** with targeted adjustments (delivery metatags, slider tweaks, specific prompt edits)
|
||||
|
||||
### Critical Checkpoint Questions
|
||||
|
||||
Before spending credits on regeneration or further iteration, ask:
|
||||
|
||||
- **Is the structure correct?** If yes, do NOT regenerate from scratch — use section replacement.
|
||||
- **Is the melody usable?** A good melody with flawed production is worth refining. A bad melody needs regeneration.
|
||||
- **Does the emotional angle justify more credits?** If the song is fundamentally heading in the right direction, refine. If the emotional core is wrong, regenerate.
|
||||
|
||||
### When to Use Section Replacement vs. Full Regeneration
|
||||
|
||||
| Situation | Recommendation |
|
||||
|-----------|---------------|
|
||||
| Structure and melody are good, one section has bad vocals | Section replacement |
|
||||
| Structure is good, multiple sections need different fixes | Sequential section replacements |
|
||||
| Melody is wrong throughout | Full regeneration |
|
||||
| Overall vibe/genre is off | Full regeneration with revised style prompt |
|
||||
| Good material but wrong emotional direction | Full regeneration — emotional direction is global |
|
||||
|
||||
## Style Prompt Mechanics
|
||||
|
||||
### Genre Keyword Ordering
|
||||
|
||||
Front-loaded terms in the style prompt dominate generation output — the first ~200 characters are the critical zone. When feedback suggests a genre element is too dominant, move that keyword later in the prompt rather than removing it. For secondary influences, use softening formulations like "with [genre] accents" or "[genre] undertones" to reduce their weight without eliminating them.
|
||||
|
||||
### Dynamic Arc Mismatch
|
||||
|
||||
When the user reports that the ending or energy arc doesn't match their intent, the style prompt likely contains unidirectional language that only describes one direction of movement. The style prompt must describe the full arc.
|
||||
|
||||
| Feedback Pattern | Style Prompt Problem | Fix |
|
||||
|-----------------|---------------------|-----|
|
||||
| "Too loud at the end" | "crescendo dynamics" or similar build-only language | Replace with "dynamic shifts loud to quiet" |
|
||||
| "Builds but doesn't resolve" | "build to climax" with no release language | Replace with "slow build then fade" |
|
||||
| "Ending stays loud despite descent language" | Dynamic descent stated only once | A single mention of descent isn't enough — Suno latches onto the loudest directive. State the arc TWICE: both `building from gentle to crushing then returning to gentle` AND `dynamic arc quiet to massive to quiet` |
|
||||
| "All one energy level" | No dynamic language at all | Add explicit dynamic descriptors: "dynamic shifts", "quiet verses explosive chorus", etc. |
|
||||
|
||||
### Perceived Tempo Control (BPM Tags Are Ineffective)
|
||||
|
||||
**BPM tags in lyrics have ZERO detectable effect on Suno's actual output** — confirmed by librosa analysis across 31 songs. Suno picks a single steady tempo per song regardless of any BPM tags. Do not recommend BPM tags in lyrics as a solution for tempo issues.
|
||||
|
||||
**v5 alternative:** BPM and key specified in the style prompt (not lyrics) may be more effective in v5: e.g., `"deep house, 122 BPM, A minor, hypnotic groove"`. This is not confirmed as reliable but is worth trying when perceived tempo techniques alone are insufficient.
|
||||
|
||||
**"Felt BPM" vs. measured BPM:** When users report tempo issues, their perception reflects felt BPM (human-perceived tempo), not what librosa measures. librosa has genre-specific biases: reads half-time on speed metal (~50% of actual), double-time on doom/sludge (~200% of actual). ~19% of tracks have significant misreads. Always interpret tempo feedback against felt BPM and genre context, not raw librosa numbers.
|
||||
|
||||
When the user reports tempo issues, the recommended adjustment path uses perceived tempo techniques:
|
||||
|
||||
1. **Word/line density (PRIMARY):** Restructure lyrics — short fragmented lines (1-3 words) for slower perceived delivery, long packed lines with many syllables for faster perceived delivery. This is the most reliable single technique.
|
||||
2. **Half-time / double-time drum feel:** Add rhythm noun metatags like `[Heavy: halftime]` or `[Double Time]` in the lyrics. Creates perception of halved or doubled tempo without actual BPM change.
|
||||
3. **Instrumental density / arrangement dropout:** Use `[Energy: stripped, minimal]` to create space that feels slower. Use `[Energy: massive]` for density that feels faster.
|
||||
4. **Line breaks as breath points:** More line breaks = more pauses = slower perceived delivery. Fewer breaks = longer phrases = faster feel.
|
||||
5. **Rhythm nouns in style prompt:** "Halftime groove," "double-time driving," "shuffle," "breakbeat" lock feel better than "slow," "fast," or "upbeat."
|
||||
|
||||
Try restructuring the lyrics first (techniques 1 and 4) before modifying the style prompt or metatags.
|
||||
|
||||
## Descriptor Families as Adjustment Targets
|
||||
|
||||
Beyond `[Mood: ...]`, `[Energy: ...]`, `[Vocal Style: ...]`, and `[Instrument: ...]`, these additional descriptor families are available as adjustment targets in the lyrics field:
|
||||
|
||||
| Descriptor Family | Examples | Use When Feedback Says |
|
||||
|-------------------|---------|----------------------|
|
||||
| `[Atmosphere: ...]` | `[Atmosphere: Dreamy]`, `[Atmosphere: Cyberpunk]`, `[Atmosphere: Medieval]` | "The vibe/setting feels wrong", "needs more atmosphere" |
|
||||
| `[Texture: ...]` | `[Texture: Grainy]`, `[Texture: Velvet]` | "The sound quality/feel is wrong", "too smooth/rough" |
|
||||
| `[Effect: ...]` | `[Effect: Lo-fi]`, `[Effect: Reverb: Hall]`, `[Effect: Delay: Ping-pong]`, `[Effect: Distortion]`, `[Effect: Sidechain]`, `[Effect: Radio Filter]` | "Too much/little reverb", "needs effects", "too dry/wet" |
|
||||
|
||||
These families provide more targeted control than style prompt descriptors alone. Place them before the section they should affect.
|
||||
|
||||
## Parameterized Section Tags
|
||||
|
||||
Section tags can include per-section arrangement instructions using colon (`:`) or pipe (`|`) syntax. This enables per-section fixes without changing the overall style prompt.
|
||||
|
||||
```
|
||||
[Verse: whispered vocals, acoustic guitar only]
|
||||
[Chorus: full band, powerful vocals]
|
||||
[Bridge: stripped back, piano only]
|
||||
[Chorus | Half-Time]
|
||||
[Chorus | Double-Time]
|
||||
```
|
||||
|
||||
| Feedback | Parameterized Section Tag Fix |
|
||||
|----------|-------------------------------|
|
||||
| "The verse is too loud/busy" | `[Verse: stripped back, minimal arrangement]` |
|
||||
| "The chorus doesn't hit hard enough" | `[Chorus: full band, powerful vocals, high energy]` |
|
||||
| "The bridge needs a different feel" | `[Bridge: acoustic guitar only, intimate]` |
|
||||
| "The chorus tempo feels wrong" | `[Chorus | Half-Time]` or `[Chorus | Double-Time]` |
|
||||
|
||||
This is often more effective than global style prompt changes when the issue is section-specific.
|
||||
|
||||
## Inline Performance Modifiers
|
||||
|
||||
Parenthetical cues placed after lyric lines control vocal delivery on a per-line basis. Distinct from the backing-vocal parentheses technique — these are performance directions.
|
||||
|
||||
```
|
||||
I can't stop thinking about you (breathy)
|
||||
HOLD ON (belt)
|
||||
wait for me... (breath)
|
||||
stay with me (hold)
|
||||
```
|
||||
|
||||
| Feedback | Inline Modifier |
|
||||
|----------|----------------|
|
||||
| "Vocals too forceful on this line" | Add `(breathy)` or `(soft)` after the line |
|
||||
| "This line needs more power" | Add `(belt)` after the line |
|
||||
| "Needs a pause/breath feel here" | Add `(breath)` after the line |
|
||||
| "The note should sustain longer" | Add `(hold)` after the line |
|
||||
|
||||
Use sparingly — these are line-level adjustments, not section-level.
|
||||
|
||||
## Confirmed Descriptor Effects
|
||||
|
||||
These style prompt descriptors have confirmed, predictable effects on Suno output:
|
||||
|
||||
| Descriptor | Produces |
|
||||
|-----------|----------|
|
||||
| "atmospheric" | Reverb, space, ambient pads |
|
||||
| "airy" | Reverb/space on vocals |
|
||||
| "lo-fi warmth" | Vintage character, low-pass filtering |
|
||||
| "polished radio-ready" | Clean, modern, commercial mix |
|
||||
| "raw live recording" | Less processed, room sound |
|
||||
| "driving" | Forward momentum, energetic basslines |
|
||||
| "lush" | Layered pads, dense production |
|
||||
| "punchy" | Low-end presence, tight transients |
|
||||
| "wide stereo" | Spatial separation |
|
||||
| "gated drums" | 80s-style drum processing |
|
||||
| "vintage Rhodes" | More specific/effective than "piano" |
|
||||
|
||||
Use these as precise adjustment tools when feedback maps to one of these effects.
|
||||
|
||||
## Three-Pass Layered Prompting
|
||||
|
||||
For complex adjustments that touch multiple dimensions (arrangement, lyrics, and delivery), use a three-pass approach rather than trying to fix everything at once:
|
||||
|
||||
1. **Idea pass** — adjust the concept, mood, and genre in the style prompt
|
||||
2. **Lyric pass** — revise lyrics with structural tags, section tags, and arrangement cues
|
||||
3. **Performance pass** — add vocal delivery cues (inline modifiers), energy tags, and dynamics metatags
|
||||
|
||||
This reduces the chance of conflicting instructions and makes it easier to isolate which change fixed (or broke) something.
|
||||
|
||||
## Style Prompt Adjustment Patterns
|
||||
|
||||
### Instrumentation & Arrangement
|
||||
|
||||
| Feedback | Add to Style Prompt | Add to Exclusions |
|
||||
|----------|--------------------|--------------------|
|
||||
| "Too busy/cluttered" | "minimal arrangement, sparse instrumentation" | "no dense layering, no wall of sound" |
|
||||
| "Too empty/thin" | "lush arrangement, layered instrumentation, full sound" | — |
|
||||
| "Guitar too loud" | "subtle guitar, background guitar" | "no guitar solo, no heavy guitar" |
|
||||
| "Needs more guitar" | "prominent guitar, guitar-driven" | — |
|
||||
| "Too electronic" | "organic, acoustic, live instruments" | "no synthesizer, no electronic beats" |
|
||||
| "Too acoustic" | "electronic elements, synth textures, modern production" | — |
|
||||
| "Drums overpower" | "soft percussion, gentle drums, restrained beat" | "no heavy drums, no pounding drums" |
|
||||
| "Needs more drums" | "driving drums, prominent beat, rhythmic" | — |
|
||||
| "Second line drums sound like hip-hop" | "second line drums" only produces NOLA parade groove when the surrounding context is up-tempo + energetic + celebratory. Without that context, Suno defaults to hip-hop patterns. Add "New Orleans parade", "celebratory", "up-tempo" to the style prompt. | — |
|
||||
| "Piano feels wrong" | — | "no piano" (or specify: "no classical piano") |
|
||||
| "Bass too heavy" | "light bass, subtle low end" | "no heavy bass, no bass drops" |
|
||||
|
||||
**Keyword Triggers to Avoid**
|
||||
|
||||
Certain style prompt keywords reliably trigger unwanted arrangement choices. When the user reports theatrical, keyboard-heavy, or orchestral results they didn't want, check for these first.
|
||||
|
||||
| Keyword | What Suno Produces | Alternative Approach |
|
||||
|---------|--------------------|---------------------|
|
||||
| "baroque" | Disney/theatrical arrangements | Describe desired qualities directly; specify instruments by name |
|
||||
| "rock opera" | Keyboard-heavy, theatrical arrangements | Use "power ballad" for dynamic range without keyboards |
|
||||
| "cinematic" | Orchestral/soundtrack feel | Specify desired instruments by name (cello, heavy strings, kettle drums) |
|
||||
| "orchestral" | Light strings/flutes, not the heavy orchestral sound users typically intend | Name the specific orchestral instruments desired (cello, heavy strings, kettle drums) |
|
||||
|
||||
### Vocal Direction
|
||||
|
||||
| Feedback | Add to Style Prompt | Add to Exclusions |
|
||||
|----------|--------------------|--------------------|
|
||||
| "Vocals too polished" | "raw vocal, imperfect delivery, organic phrasing" | "no perfect pitch, no overproduced vocals" |
|
||||
| "Vocals too rough" | "polished vocal, smooth delivery, clean singing" | "no raspy vocals, no rough vocals" |
|
||||
| "Voice doesn't match" | Specify: "male/female voice, [age] years old, [tone] delivery" | Exclude the unwanted: "no [gender] vocals" |
|
||||
| "Too much vibrato" | "steady vocal, straight tone" | "no heavy vibrato" |
|
||||
| "Vocals too quiet" | "prominent vocals, voice-forward mix" | — |
|
||||
| "Vocals too loud" | "balanced mix, instrument-forward" | — |
|
||||
| "Singing sounds robotic" | "natural phrasing, breathy, human vocal" | "no robotic vocals" |
|
||||
| "Want harmonies" | "vocal harmonies, layered vocals, backing harmonies" | — |
|
||||
| "Too much harmony" | "solo vocal, single voice, unison" | "no harmonies, no backing vocals" |
|
||||
|
||||
### Energy & Tempo
|
||||
|
||||
| Feedback | Add to Style Prompt | Slider Adjustment |
|
||||
|----------|--------------------|--------------------|
|
||||
| "Too fast" | "halftime groove, laid-back, relaxed groove" (also restructure lyrics: short fragmented lines, more line breaks — see Perceived Tempo Control above). Do NOT add BPM tags — they have no effect. | — |
|
||||
| "Too slow" | "double-time driving, driving rhythm, energetic pace" (also restructure lyrics: pack more syllables per line, fewer line breaks — see Perceived Tempo Control above). Do NOT add BPM tags — they have no effect. | — |
|
||||
| "Not energetic enough" | "high energy, powerful, dynamic, driving" | Style Influence ↓ (loosen) |
|
||||
| "Too intense" | "gentle, soft, understated, subtle" | — |
|
||||
| "Energy is flat" | "building energy, dynamic shifts, crescendo" | Weirdness ↑ slightly |
|
||||
| "Feels monotonous" | "dynamic arrangement, shifting textures, varied sections" | Weirdness ↑ |
|
||||
|
||||
### Production & Mix
|
||||
|
||||
| Feedback | Add to Style Prompt | Slider Adjustment |
|
||||
|----------|--------------------|--------------------|
|
||||
| "Too polished" | "lo-fi, raw production, analog warmth, rough edges" | Weirdness ↑ |
|
||||
| "Too rough/lo-fi" | "radio-ready mix, clean production, crisp, polished" (v5 responds well to production-quality descriptors like "punchy drums, wide stereo field, crisp high-end, warm bass") | Weirdness ↓ |
|
||||
| "Sounds compressed" | "dynamic range, open mix, breathing room" | — |
|
||||
| "Too much reverb" | "dry mix, close mic, intimate" | — |
|
||||
| "Too dry" | "spacious, reverb, ambient, atmospheric" | — |
|
||||
| "Stereo feels narrow" | "wide stereo field, panoramic, expansive" | — |
|
||||
| "Sounds dated" | "modern production, contemporary sound, current" | — |
|
||||
|
||||
### Mood & Vibe
|
||||
|
||||
| Feedback | Add to Style Prompt | Slider Adjustment |
|
||||
|----------|--------------------|--------------------|
|
||||
| "Too happy/upbeat" | "melancholic, bittersweet, minor key, moody" | — |
|
||||
| "Too dark/sad" | "uplifting, bright, major key, hopeful" | — |
|
||||
| "Too generic" | "distinctive, unique, unconventional" | Weirdness ↑ (65-80) |
|
||||
| "Too weird" | "familiar, classic, conventional, straightforward" | Weirdness ↓ (25-35) |
|
||||
| "Not emotional enough" | "emotional, yearning, deeply felt, passionate" | Style Influence ↑ |
|
||||
| "Too dramatic" | "understated, subtle, restrained, casual" | — |
|
||||
|
||||
## Confirmed Suno Behavior
|
||||
|
||||
- "NOLA funk swing" lands as syncopation not true swing; "Odd time signatures" consistently ignored in 4/4 rock/metal context
|
||||
- Suno adds unscripted guitar solos regularly
|
||||
- Structural/section directions in long style prompts are largely ignored (style prompt sets overall mood, metatags handle sections imperfectly)
|
||||
|
||||
## Exclusion Guidance
|
||||
|
||||
Prioritize 2-3 specific exclusions over filling the space. Supported syntax: 'no [element]', 'without [element]', 'exclude [element]', 'avoid [element]'. The Exclude Styles field (Pro/Premier only) and in-prompt negatives both function as **probability reduction, not hard bans** — excluded elements may still appear, and regeneration may be needed. Limit to 2-3 most important exclusions; too many destabilizes the arrangement and reduces overall effectiveness.
|
||||
|
||||
## Slider Adjustment Guide
|
||||
|
||||
### Weirdness (0-100, default 50) — Paid tiers only
|
||||
|
||||
| Current Feel | Direction | Target Range | Reasoning |
|
||||
|-------------|-----------|-------------|-----------|
|
||||
| Too generic/predictable | ↑ Increase | 60-80 | More unexpected choices |
|
||||
| Too strange/unfocused | ↓ Decrease | 25-40 | More conventional, familiar |
|
||||
| Good but could explore | ↑ Slight increase | +10-15 from current | Nudge toward discovery |
|
||||
|
||||
**Observations from live testing (not exhaustive — wider range testing needed):**
|
||||
- Weirdness 50 (default) produced overly steady/predictable results for multi-tempo songs (note: actual BPM does not change — Weirdness affects rhythmic feel and arrangement variation, not tempo)
|
||||
- Weirdness 60 improved rhythmic variation
|
||||
- Weirdness 65 produced the best tempo/rhythm variation in testing so far
|
||||
- Higher values (70+) have not been tested and may produce interesting results for experimental work
|
||||
- These observations are from v5 Pro with Style Influence 70 — results may differ on other models
|
||||
- **Sliders don't control tempo, dynamics, or vocal delivery** — they control predictability (Weirdness) and prompt adherence (Style Influence). Don't recommend them as solutions for tempo/vocal issues.
|
||||
|
||||
**Confirmed slider combinations by song type (from production use):**
|
||||
|
||||
| Song Type | Weirdness | Style Influence | Notes |
|
||||
|-----------|-----------|-----------------|-------|
|
||||
| Structured songs (chorus, clear sections) | 50-55 | 75-80 | Higher SI keeps sections well-defined |
|
||||
| Through-composed with tempo shifts | 55-60 | 70-75 | Slightly looser to allow tempo variation |
|
||||
| Funk-forward | 60 | 65-70 | Funk needs room to breathe |
|
||||
| Post-metal / atmospheric | 60-65 | 65 | Balanced exploration with genre grounding |
|
||||
| Prog with odd time signatures | 65-75 | 65 | High Weirdness helps with non-standard meters |
|
||||
| Circular / agitated | 75 | 65 | Near the structural ceiling — use [End] tags |
|
||||
| Acoustic tracks | 40 | 80 | Audio Influence 25%. Persona safe at full AI when style prompt clearly defines non-heavy genre |
|
||||
| Bass prominence attempts | Any | High SI (85) did not force bass prominence; low Audio Influence (15%) slightly shifted era feel instead | Bass-forward rock/metal remains a Suno limitation |
|
||||
|
||||
**Upper limit findings (from live testing):**
|
||||
- Weirdness 75 is the practical ceiling for structured songs — still experimental but respects section boundaries and [End] tags
|
||||
- Weirdness 85 causes structural breakdown: [End] tags ignored, songs continue past lyrics with instrumental/gibberish meandering
|
||||
- At Weirdness 85, coherence loss increases in longer songs — shorter songs or songs with strong repeating structure (chorus anchors) survive higher Weirdness better
|
||||
- **Recommendation:** Cap at 75 for songs needing structural compliance. Reserve 80+ for jam/experimental mode only.
|
||||
- Always use [Fade Out] + [End] combo at high Weirdness values — more reliable stop signal than [End] alone
|
||||
|
||||
### Audio Influence (0-100%, default 25%) — Persona-dependent
|
||||
|
||||
Audio Influence controls how much the loaded Persona's source audio shapes the generation. This parameter should never be omitted from song packages when a Persona is active.
|
||||
|
||||
| Scenario | Recommended Range | Notes |
|
||||
|----------|-------------------|-------|
|
||||
| Standard tracks | 25% | Default. Reliable baseline for most genres. |
|
||||
| Acoustic tracks | 25% | Persona is safe at full Audio Influence when style prompt clearly defines a non-heavy genre. |
|
||||
| Genre-pushing tracks | 20% | Drop 5% when pushing outside the Persona's native genre to give the style prompt more room. |
|
||||
| Era mismatch (song sounds too modern/dated) | 10-15% | High Audio Influence anchors to the Persona's era. Reduce to let style prompt control era feel. |
|
||||
|
||||
**Effective range is 15-25%.** Above 25% shows diminishing returns — the generation doesn't become noticeably more Persona-like, but style prompt influence decreases. Below 15%, the Persona contributes minimal character.
|
||||
|
||||
### Style Influence (0-100, default ~50-60) — Paid tiers only
|
||||
|
||||
| Current Feel | Direction | Target Range | Reasoning |
|
||||
|-------------|-----------|-------------|-----------|
|
||||
| Doesn't match the prompt | ↑ Increase | 65-80 | Tighter adherence to style prompt |
|
||||
| Too literal/constrained | ↓ Decrease | 25-40 | More creative interpretation |
|
||||
| Prompt is vague, output is scattered | ↑ Increase + rewrite prompt | 60-70 | Better prompt + tighter adherence |
|
||||
|
||||
**Observations from live testing:**
|
||||
- Style Influence 70 gave enough room for metal weight while staying in the genre lane
|
||||
- Lower values (45-65) allowed more creative interpretation on bridges and contrasting sections
|
||||
- These are observations from limited testing, not definitive optimal values
|
||||
|
||||
### Per-Section Slider Strategy (v5 Studio)
|
||||
|
||||
v5 Studio enables per-section regeneration. Different slider values can be applied to different song sections:
|
||||
|
||||
| Section Type | Weirdness | Style Influence | Reasoning |
|
||||
|-------------|-----------|-----------------|-----------|
|
||||
| Verse | 35-50 | 55-70 | Stable foundation, moderate adherence |
|
||||
| Chorus/Hook | 25-40 | 70-85 | Tighter adherence for memorable hooks |
|
||||
| Bridge | 55-70 | 45-65 | More exploration for contrast |
|
||||
| Intro/Outro | 40-60 | 50-65 | Balanced — sets/closes the tone |
|
||||
| Breakdown | 60-80 | 35-55 | Looser interpretation for texture |
|
||||
|
||||
## Model-Specific Feedback Patterns
|
||||
|
||||
### v4 Pro
|
||||
- Hard 200-character style prompt limit (silently truncated) — all adjustment text must be extremely concise
|
||||
- Simpler model — broad genre/mood descriptors work better than nuanced ones
|
||||
- No slider control, no Persona support
|
||||
- If feedback requires more nuance than 200 chars allow, suggest upgrading to v4.5+ or higher (1,000-char limit)
|
||||
|
||||
### v4.5-all (Free Tier)
|
||||
- Limited vocal control — voice issues are harder to fix without Persona
|
||||
- Conversational style prompts work — can be more descriptive in adjustments
|
||||
- No slider control — all adjustments must go through style prompt and exclusions
|
||||
- Suggest trying different generation seeds (make again) before changing prompt
|
||||
|
||||
### v4.5 Pro / v4.5+ Pro
|
||||
- Same prompting behavior as v4.5-all but with slider access and Persona support
|
||||
- Slider adjustments available — use them before expanding the style prompt
|
||||
- v4.5+ Pro offers advanced creation methods — section-level control improves with this model
|
||||
- Personas can lock vocal direction more reliably than style prompt alone
|
||||
|
||||
### v5 Pro
|
||||
- Better vocal nuance — vocal adjustments are more likely to work
|
||||
- Crisp descriptors respond better — keep style prompt adjustments concise
|
||||
- Section-level editing available — can adjust specific parts without regenerating
|
||||
- Warp Markers allow fine-grained timing fixes
|
||||
- If vocals are the only issue, suggest "Replace Section" or "Add Vocals" before full regeneration
|
||||
|
||||
## Lyric-to-Metatag Feedback Patterns
|
||||
|
||||
| Feedback | Lyric Adjustment |
|
||||
|----------|-----------------|
|
||||
| "Chorus doesn't hit hard enough" | Add `[Energy: High]` before chorus, consider `[Build-Up]` section before it |
|
||||
| "Verse feels wrong" | Check syllable count consistency, add `[Mood: ...]` descriptor |
|
||||
| "Song structure feels off" | Review section ordering, consider adding/removing Pre-Chorus or Bridge |
|
||||
| "Vocals change style mid-song" | Add consistent `[Vocal Style: ...]` tags before each section |
|
||||
| "Instrumental section too long/short" | Adjust `[Intro]`, `[Breakdown]`, or `[Outro]` tag placement and content |
|
||||
| "Phrasing feels unnatural" | Run syllable counter, normalize line lengths within sections |
|
||||
|
||||
## Audio Quality & Artifacts
|
||||
|
||||
Common quality issues that cannot be resolved through style prompt changes alone.
|
||||
|
||||
| Feedback | Resolution Path |
|
||||
|----------|----------------|
|
||||
| "Sounds robotic/glitchy" | Regenerate (try 3-5 times with same prompt); if persistent, simplify style prompt or switch models |
|
||||
| "Audio quality drops at the end" | Generate shorter (under 2 min), extend carefully; quality degrades in long generations |
|
||||
| "Weird artifacts/noise" | Regenerate; if persistent, remove problematic descriptors from style prompt |
|
||||
| "Pronunciation is wrong" | Add phonetic hints in lyrics, or use `[Spoken Word]` metatag for problem lines |
|
||||
| "Vocals sound auto-tuned" | Add "natural vocal, organic phrasing, imperfect delivery" to style prompt; add "no auto-tune" to exclusions |
|
||||
| "Clipping/distortion (unwanted)" | Add "clean mix, headroom, dynamic range" to style prompt; reduce layering descriptors |
|
||||
| "Frequency mud / sounds muffled" | Add "crisp, clear mix, defined frequencies" to style prompt; v5 Remove FX can help |
|
||||
|
||||
**External DAW editing (Audacity, etc.) is a one-way operation** — once you edit outside Suno, you lose Suno's editing capabilities on that version. Always keep the original Suno generation as a source of truth.
|
||||
|
||||
**Key principle:** Audio quality issues are often generation-specific, not prompt-specific. Always try regenerating 3-5 times before modifying the prompt. Suno's randomness means the same prompt can produce both clean and artifact-heavy outputs.
|
||||
|
||||
## Suno Studio Resolution Paths (v5 Pro / Premier)
|
||||
|
||||
When feedback maps to Studio features rather than prompt changes.
|
||||
|
||||
| Feedback Pattern | Studio Feature | How |
|
||||
|-----------------|----------------|-----|
|
||||
| "The timing feels off in the chorus" | Warp Markers | Adjust timing of specific sections without regenerating |
|
||||
| "Verse 2 vocals are bad but the rest is great" | Replace Section | Regenerate only the problem section, preserving everything else |
|
||||
| "I want to hear different versions of the chorus" | Alternates | Generate multiple versions of a specific section and compare |
|
||||
| "Too much reverb/effects on the vocals" | Remove FX | Strip effects from the vocal track |
|
||||
| "The vocal melody is great but the lyrics are wrong" | Add Vocals | Re-record vocals over the existing instrumental |
|
||||
| "I need the instrumental without vocals" | Stems | Extract up to 12 stems including isolated instrumental |
|
||||
| "The song is great but I want to try different words" | Replace Section + Lyrics edit | Change lyrics for specific sections while preserving melody |
|
||||
|
||||
### Additional Studio Capabilities (v5.5)
|
||||
|
||||
| Feature | What It Does | Key Limitation |
|
||||
|---------|-------------|----------------|
|
||||
| Warp Markers | Fix timing post-generation without pitch shift — correct rushed or dragging sections | Timing adjustment only; does not affect pitch or melody. Artifacts with extreme corrections. |
|
||||
| Remove FX | Strip reverb/delay from the generation for external DAW processing | One-way: stripping FX is for export. May sound thinner — rebuild space with your own reverb in a DAW. |
|
||||
| Alternates | Generate 2-6 variations of a section, audition in context, comp the best parts | Single-change alternates prevent losing song identity. |
|
||||
| EQ | 6-band per-track parametric EQ with 11 presets and spectrum analyzer | Start subtle (+/-3dB). Cut > boost for natural results. |
|
||||
| Remaster | Polish production (Subtle/Normal/High strength) without changing lyrics or structure | Does NOT change style, vocalist, or arrangement — use Cover for those. |
|
||||
| Heal Edits | Smooth transitions at edit/cut points | Use after rearranging or replacing sections. |
|
||||
| Time Signature | Grid/metronome alignment for editing | Editing-only — does NOT affect the generative model. Prompt for desired meter instead. |
|
||||
|
||||
**Tier mapping:** Legacy Editor features (Replace Section, Extend, Crop, Fade, Rearrange, Stems, Remaster) are available on **Pro and Premier**. Full Studio features (Warp Markers, Remove FX, Alternates, EQ, Heal Edits, Context Window, Recording, MIDI Export) are **Premier only**. Always check the user's tier before recommending.
|
||||
|
||||
**For complete Studio & Editor workflows, tips, and troubleshooting:** See [STUDIO-EDITOR-REFERENCE.md](../../suno-agent-band-manager/references/STUDIO-EDITOR-REFERENCE.md).
|
||||
|
||||
## Song Length & Pacing
|
||||
|
||||
| Feedback | Adjustment |
|
||||
|----------|-----------|
|
||||
| "Song is too short" | Use Suno's extend feature; or add sections in lyrics (additional verse, bridge, instrumental break) |
|
||||
| "Song is too long" | Remove repeated sections in lyrics; trim `[Outro]` content; remove `[Breakdown]` if not essential |
|
||||
| "Intro goes on too long" | Shorten or remove `[Intro]` lyrics content; add `[Verse 1]` tag earlier; note: `[Intro]` tag is notoriously unreliable |
|
||||
| "Outro cuts off abruptly" | Add explicit `[Outro]` section with 2-4 lines; add `[Fade Out]` descriptor metatag |
|
||||
| "Middle section drags" | Add `[Energy: building]` metatags; shorten the dragging section; consider adding a `[Breakdown]` or `[Build-Up]` for variety |
|
||||
| "Energy drops in extended sections" | Known limitation — 62% of extended tracks drift from original prompt. **Weirdness is strongest during Extend and Bridge generation** — this is the primary drift cause. Keep Weirdness conservative during Extend. Use callback phrasing ("continue same chorus energy") and re-inject genre/mood every 1-2 extends. |
|
||||
|
||||
## Genre Drift & Consistency
|
||||
|
||||
Genre drift is one of the most common issues — 62% of extended Suno tracks deviate from the original prompt. **The Weirdness slider has the strongest destabilizing effect during Extend and Bridge generation** — high Weirdness during Extend is more disruptive than during initial generation.
|
||||
|
||||
| Feedback | Adjustment |
|
||||
|----------|-----------|
|
||||
| "Style changed mid-song" | Add consistent genre anchoring via `[Mood: ...]` and `[Energy: ...]` metatags before each section in lyrics |
|
||||
| "Extended section sounds different" | Regenerate the extension; use v5 Studio Replace Section; keep Weirdness conservative during Extend; use callback phrasing ("continue same chorus energy") and re-inject genre/mood every 1-2 extends |
|
||||
| "Genre fusion went wrong" | Simplify to single dominant genre; move secondary genre influence to later in style prompt (after critical zone) |
|
||||
| "Sounds like a different band in the second half" | Add `[Vocal Style: ...]` tags before each section; increase Style Influence slider (65-80) for tighter adherence |
|
||||
| "Voice/Persona shifted during Replace Section" | Keep Weirdness conservative during Replace operations — high Weirdness can cause Persona/Voice identity shifts |
|
||||
|
||||
**Prevention tips:** Front-load genre identity in the first 200 chars of style prompt. Use per-section metatags. Generate 3-5 versions and cherry-pick. For extensions, match the style prompt exactly, keep extensions short (30s-1min increments), and **keep Weirdness lower during Extend than during initial generation**. Use callback phrasing ("continue same chorus energy", "maintain verse mood") to anchor the extension to the existing material.
|
||||
|
||||
### Extend Anti-Drift Toolkit
|
||||
|
||||
Techniques for maintaining consistency during Extend operations, ordered by effectiveness:
|
||||
|
||||
1. **Anchor note restating** — restate genre, mood, key, and instrument palette with each extension in 1-2 sentences. Example: 'Keep the exact current groove, instrument palette, key, and tempo.'
|
||||
2. **Forbidden element phrasing** — 'No new hooks,' 'No new drums,' 'No new riffs,' 'no risers.' Negative constraints are more effective than positive instruction alone during Extend.
|
||||
3. **Structural metatag at start** — include `[Chorus]`, `[Bridge]`, `[Outro]` etc. at the beginning of every extension prompt to guide section type.
|
||||
4. **Energy alignment** — specify energy relative to existing material: 'Bridge energy: 80% of chorus; lower drums...'
|
||||
5. **Short blocks (30 seconds preferred)** — catch drift before it compounds. Limit to 2-3 extensions maximum per song.
|
||||
6. **Cover as signal cleaner** — if quality degrades after multiple extensions, use Cover to re-synthesize the audio from scratch, resetting the signal path.
|
||||
7. **Custom Extend over Quick Extend** — always use Custom Extend for anything you care about. Quick Extend is for rapid prototyping only.
|
||||
|
||||
**Verification:** Loop playback at 2x speed to confirm join seams and style consistency.
|
||||
|
||||
**Genre-specific outro templates:**
|
||||
- Gospel/Worship: soft organ and distant choir pad
|
||||
- Rock/Anthem: final guitar sustain and cymbal swell
|
||||
- Lo-fi: soft piano motif and vinyl texture
|
||||
- EDM: filtered synth tail
|
||||
- Reggae: softening skank guitar
|
||||
|
||||
Sources: [Suno 4.5 Plus Extend — Jack Righteous](https://jackrighteous.com/en-us/blogs/guides-using-suno-ai-music-creation/suno-45-plus-extend-tool) | [Outro Prompts — Jack Righteous](https://jackrighteous.com/en-us/blogs/guides-using-suno-ai-music-creation/suno-ai-outro-prompt-guide) | [End Prompts — Jack Righteous](https://jackrighteous.com/en-us/blogs/guides-using-suno-ai-music-creation/suno-ai-end-prompt-guide) | [Fade Out Prompts — Jack Righteous](https://jackrighteous.com/en-us/blogs/guides-using-suno-ai-music-creation/suno-ai-fade-out-prompt-guide)
|
||||
Reference in New Issue
Block a user