# Step 2 : Structure et Ecriture

> **Avant de commencer :** garder en tete les principes de `best-practices.md` (racine) — une idee centrale par track, *show don't tell*, prosodie (accent tonique sur temps fort), anatomie du hook, erreurs a eviter. Les fichiers `reference/` font autorite sur tout point technique.

> **Chargement just-in-time :** ne charger que les references de la langue choisie en Step 1. Pour un track FR, ne jamais charger les references EN (et inversement).

> **Ecrire A PARTIR du brief (Step 1.5), pas par-dessus.** La matiere concrete (shortlist object-writing), l'image centrale, le POV/temps/cadre, la prosodie (stable/instable) et le « turn » sont deja fixes. Chaque ligne puise dans les details concrets recoltes — jamais inventer une abstraction quand un detail de la shortlist dit la meme chose plus fort.

## Planification Narrative

L'arc (le « turn ») a ete esquisse en Step 1.5. Le rappeler brievement, ancre sur la matiere :

1. **Verse 1** : pose la scene (detail concret d'ouverture)
2. **Verse 2** : avance — nouvel angle/escalade, **jamais** reformuler V1
3. **Verse 3** (si applicable) : resolution / twist
4. **Bridge** (si applicable) : le vrai retournement (peut changer POV/temps/lieu)
5. **Chorus** : coeur emotionnel via l'image centrale — le hook

Le schema de rimes suit la **prosodie choisie en Step 1.5** (stable/instable selon le sens), pas « la rime la plus riche par defaut ».

## Generation des Lyrics — boucle par section

1. **Lire le template** selectionne en Step 1 (`reference/templates/songs/[genre].md`). Suivre son Section Flow et choisir la structure (standard ou variation documentee). Genre electronic → structure Build-Drop (`templates/songs/electronic.md`).
2. **Generer section par section**, dans la langue choisie uniquement, avec les metatags Suno corrects (`[Verse 1]`, `[Chorus]`, etc. — voir `reference/suno/format.md` "Tags de Structure"). Termes de section canoniques en anglais meme pour un track FR (`reference/glossary.md`). Chaque Verse avance la narration. Chorus memorable et concis, identique a chaque repetition.
3. **Viser 2000-3000 caracteres** de lyrics (sweet spot Suno).

Pour CHAQUE section, appliquer la **boucle de controle** (ecrire ligne → verifier → reecrire → ligne suivante) :

- **(a) Tests semantiques (1-6)** — pour chaque ligne, executer les **6 tests** de `reference/linguistic/semantic/tests.md` (listes par langue : `semantic/lists-fr.md` ou `semantic/lists-en.md`). Bloquants sauf Test 3 en genre tolerant. Le sens prime sur la rime.
- **(a-bis) Tests de craft (7-9)** — `reference/craft/craft-tests.md`. **Test 7 (show don't tell)** : aucune emotion/abstraction nommee la ou un detail concret la montrerait (sauf hook assume / rupture documentee) — bloquant. **Test 8 (specificite)** : ≥ 2-3 details concrets par couplet, abstraction non dominante. **Test 9 (angle frais)** : le track a une image centrale / conceit / detail signature (normalement deja garanti par Step 1.5). C'est ce qui empeche le generique.
- **(b) Flow** — pour chaque ligne, verifier la chantabilite selon `reference/linguistic/{lang}/flow.md` : densite syllabique vs BPM cible, cesure si >10 syllabes, clusters (FR) / tongue-twisters (EN), alignement stress/downbeat (EN), mot final polysyllabique. Reecrire toute ligne bloquee avant de continuer.
- **(c) Rimes par section** — une fois la section ecrite, mini-rapport rimes avant de passer a la suivante. Classifier les paires par IPA (`reference/linguistic/{lang}/rhymes.md` Etapes 1-5) et comparer aux ratios de `reference/linguistic/{lang}/rhymes-thresholds.md` (FR) ou par famille A/B/C (EN). Reecrire jusqu'a atteindre les ratios. Eye rhymes EN interdites hors Outro. **Outil :** pour elargir les options de rimes (riches/approchees) sans tomber dans le niche, `python scripts/lyric_assist.py rhymes --lang {fr|en} --word X` (FR = Lexique avec frequence ; EN = Datamuse). La prosodie choisie en Step 1.5 (stable/instable) prime sur « la rime la plus riche ».
- **(d) Hook (Chorus uniquement)** — avant de finaliser le Chorus, appliquer les 3 tests de qualite de `reference/linguistic/hooks-punchlines.md` ("3 Tests de Qualite" : oubli, isolation, singabilite) + verifier les anti-patterns de hook du template. Un Chorus qui echoue le test d'oubli ou de singabilite est reecrit, meme si le plan narratif a ete approuve.

## Suggestions de Delivery Vocal par Section

UN tag de delivery principal par section, croisant : (a) `bible > Style Vocal > Style vocal` + `Techniques preferees`, (b) le role emotionnel de la section (template), (c) le vocabulaire de `reference/suno/format.md` "Metatags de Delivery Vocal".

| Section | soft/breathy | powerful/raspy | rap |
|---------|--------------|----------------|-----|
| Intro | [Whispered]/[Humming] | [Soft]/[Spoken] | [Spoken]/rien |
| Verse | [Breathy]/[Soft] | [Raspy]/defaut | [Rapped]/[Trap Flow] |
| Pre-Chorus | [Building] | [Intense]/[Crescendo] | [Melodic Rap] |
| Chorus | [Emotional]/[Powerful] | [Belted]/[Powerful] | [Melodic Rap]/[Sung] |
| Bridge | [Whispered] (contraste) | [Vulnerable]/[Soft] | [Soft]/[Spoken] |
| Outro | [Whispered]/[Fade Out] | [Soft]/[Fade Out] | [Spoken]/[Fade Out] |

Regles : UN tag par section ; Chorus toujours plus intense que les Verses ; Bridge contraste ; si la bible specifie des techniques explicites, elles priment ; ne jamais inventer de tag (valider contre `reference/suno/format.md`).

## Auto-Generation du Style Prompt

Genere automatiquement depuis la bible (l'utilisateur revoit, n'ecrit pas). Front-loading par priorite.

**Etape 0 — Shortlist bible (PREAMBULE OBLIGATOIRE) :** lire la bible et extraire les elements qui distinguent CET artiste : (1) noms d'artistes/styles dans "Influences", (2) instruments/production specifiques dans "Style Vocal"/"Identite Musicale", (3) signature culturelle/regionale dans "Themes"/"Lore". Compiler 5-10 elements classes Tier 1 (signature culturelle) → Tier 4. Reserver >= 2 slots pour ces elements.

**Etapes 1-7 :**
1. **Genre (tags 1-2)** : `Genre principal` + sous-genre pertinent au concept.
2. **Mood (tags 3-4)** : mapper l'emotion DU TRACK vers 1-2 mood tags (`suno/format.md` "Mood et Energy Tags").
3. **Vocal (tags 5-6)** : copier `Style Vocal > Tags Suno` de la bible.
4. **Instrumentation (tags 7-8)** : **prioriser les instruments de la shortlist (Tier 2)** sur les correspondances generiques. Sinon `suno/format.md` "Instrument Tags".
5. **Production + BPM** : seulement si < 5 tags descriptifs.
6. **Tag langue** : si FR, ajouter "All lyrics in French" (ne compte pas dans les 5-8 tags).
7. **Assembler + verifier** : 5-8 tags descriptifs, 120-300 chars. **Filiation obligatoire** : >= 2 elements de la shortlist bible presents (sinon reinjecter). Si signature culturelle, >= 1 tag culturel present.

**Presentation :** prompt complet + comptage chars + source de chaque tag + filiation explicite ("`Pedal Steel` instrument bible Tier 2, `Oud` signature Tier 1 — 2 elements bible inclus") + question "Ce style prompt a ete genere depuis la bible. Ajustements ?".

**Notes style prompt :** toujours en anglais (champ technique) ; tags separes par virgules ; pas de prompting negatif dans le style prompt (les `[no X]` dans les lyrics fonctionnent). Techniques avancees ponctuelles (exclude tags, style stacking, notation phonetique, tension rythmique, extends) : `reference/suno/advanced.md`.

## Output de Step 2 → enchainer directement sur Step 3

**Ne PAS demander d'ajustements a cette etape, et ne PAS attendre l'utilisateur.** Une fois les lyrics et le style prompt produits (et la boucle de controle inline passee), **passer directement a Step 3 (verification par le subagent)**. La demande d'ajustements se fait APRES la verification, avec le rapport en main — cela evite un aller-retour avant meme d'avoir les resultats.

Avant de lancer Step 3, calculer le comptage preliminaire (`scripts/suno_count.py`) : style prompt [X]/1000 ([zone]) ; lyrics [X]/3000 (rec) | 5000 (limite). Ces valeurs seront integrees au rapport.

**Ne PAS ecrire de fichier a cette etape** — la sauvegarde se fait en Step 3, apres verification et eventuels ajustements.
