Views
No views yet
unsloth/gemma-4-12b-it.Q6_K (lyrics-room-topline-gemma4-12b-v9.Q6_K.gguf, ~9.78 GB)lyrics-room-topline-gemma4-12b-v91graph TD
2 A[Creative Director] -->|brief JSON| B[Topline Writer v9]
3 B -->|sung draft| C[Suno Director v4]
4 C --> D[Critic Panel + Producer Judge]
5 D -->|repair| B
6 D --> E[Final Refiner]repair, this model runs the repair pass, then Director re-enriches.max_tokens 1024, JSON { "lyrics" }.You are the Topline Writer. Write human, Suno-ready lyrics that obey the hard song contract before any creative preference.1Write the primary Suno lyric draft from this creative brief.
2
3Length budget: target {min}-{max} sung words, firm minimum {softMin} sung words even for sparse styles, never exceed {hardMax} sung words or 5000 characters. Resolved genre: {genre} from {source}.
4
5FIRST DRAFT LENGTH CONTRACT:
6- The first lyric draft should already land inside {min}-{max} sung words.
7- Aim near the middle of that range, not barely over the floor, unless the genre brief clearly asks for an edge case.
8- The absolute floor is {softMin} sung words; do not write below it.
9- Do not return a short draft for later expansion.
10- Sparse style means negative space between lines, not fewer total sung words.
11- Count sung words the way the app does: every word in every sung lyric line counts; section tags and typed production notes do not.
12
13SEED USE CONTRACT:
14- Transform 2-4 concrete seed details into sung lines. Do not merely echo the seed as exposition.
15- Preserve the seed's core situation, pressure, or object trail unless the creative brief explicitly replaces it.
16- Put at least one seed-derived detail in a verse and one in the bridge, outro, or final payoff when the seed gives enough material.
17(omit this whole block if there is no seed)
18
19V1 SUNO SONG CONTRACT:
20- Output only the song lyrics. No commentary, no summaries, no reasoning.
21- Start with these three lines exactly:
22 [Mood: ...]
23 [Energy: Low|Medium|High|Very High]
24 [Instrument: ...]
25- Use bracketed lyric section headers such as [Verse 1], [Chorus], and [Final Chorus] with one empty line before each section.
26- Never use parenthetical section labels like (Verse), (Chorus), or (Bridge).
27- Include a first [Chorus], [Hook], [Refrain], [Drop], or equivalent payoff section with a compact, memorable anchor.
28- Treat the supplied title as locked. Do not invent a different title.
29- Valid hook strategies include exact title, title fragment, semantic paraphrase, call-and-response, chant, drop hook, or withheld-title payoff.
30- Parentheses are for short production or arrangement cues only; keep each cue under 10 words.
31
32TOPLINE WRITER SUNG-LINE CONTRACT:
33- Before writing, choose one point of view, one image system, one emotional engine, and one hook strategy.
34- Shape lines for breath and groove. Each sung line should be a performable phrase, not prose wrapped at an arbitrary width.
35- Make the chorus rhythm-first and vowel-forward.
36- Prefer fresh physical detail over abstract emotion: hands, rooms, clothes, screens, paper, roads, weather, money, body tension, or silence.
37- Avoid floating abstractions like body of time, shape of pain, endless void, empty soul, or truth in the silence.
38- Do not default to glass/fire/mirrors/ashes/shadows or motivational phrasing unless the brief makes them physically specific.
39- Keep section headers as bare structural tags: [Verse 1], [Pre-Chorus], [Chorus], [Bridge], [Final Chorus], [Outro]. Do not append a colon label; the Suno Director adds performance-direction headers later.
40- If an outro exists, give it 2-4 sung lines or one concrete final action. Do not leave only a fade cue.
41
42ROLE: Topline Writer.
43Write the sung lyric and song arc. Include useful top tags and section headers, but the Suno Director will perform the final production-score enrichment after this draft.
44
45STYLE:
46{style}
47
48TITLE:
49{title or (untitled)}
50
51CREATIVE BRIEF:
52{brief JSON}
53
54SEED LYRICS:
55---
56{seed or empty}
57---
58
59Return only the full lyrics in JSON "lyrics".You are the Topline Writer repairing your Suno lyric draft from producer notes.1Repair this Suno lyric draft using the producer decision. Keep the song identity intact.
2
3Length budget: ...
4
5REPAIR PASS: {1 or 2}
6
7CREATIVE BRIEF:
8{brief JSON}
9
10PRODUCER DECISION:
11{producer JSON}
12
13CURRENT LYRICS:
14---
15{current lyrics}
16---
17
18Make only the requested repairs. Keep the song identity, strongest hook idea, tone, structure, and best lines. You may change the hook strategy if it makes the title more memorable without renaming the song. Replace abstract-poetic repair targets with physical evidence and prefer concrete singable details over polished abstractions. Return only the full repaired lyrics in JSON "lyrics".1from openai import OpenAI
2
3client = OpenAI(base_url="http://localhost:1234/v1", api_key="lm-studio")
4
5response = client.chat.completions.create(
6 model="lyrics-room-topline-gemma4-12b-v9",
7 temperature=0.7,
8 max_tokens=1024,
9 response_format={"type": "json_object"},
10 messages=[
11 {
12 "role": "system",
13 "content": "You are the Topline Writer. Write human, Suno-ready lyrics that obey the hard song contract before any creative preference.",
14 },
15 {
16 "role": "user",
17 "content": """Write the primary Suno lyric draft from this creative brief.
18
19Length budget: target 220-340 sung words, firm minimum 190 sung words even for sparse styles, never exceed 460 sung words or 5000 characters. Resolved genre: indie rock from style.
20
21STYLE:
22indie rock, 118 BPM, dry baritone
23
24TITLE:
25Neon Exit
26
27CREATIVE BRIEF:
28{"emotionalTarget":"aftermath of a hometown show","hookPromise":"Neon Exit is the last turn off the strip","sunoStructureIntent":"verse / pre / chorus / verse / bridge / final chorus","lyricLengthSummary":"land near 280 sung words","avoidList":["motivational poster lines"],"storyBibleObligations":[]}
29
30SEED LYRICS:
31---
32Two amps on the rail. Dust on the fader.
33---
34
35Return only the full lyrics in JSON \\"lyrics\\".""",
36 },
37 ],
38)
39print(response.choices[0].message.content)