TuneTrack : musique de jeu avec les outils MCP tunetrack
TuneTrack est le poste de travail musical de l'utilisateur. Vous écrivez la musique sous forme de notes, accords, motifs et courbes CC ; TuneTrack les interprète via des instruments réels (les plugins VST3 de l'utilisateur chargés avec leurs patches, des bibliothèques SFZ, ou des synthés Faust intégrés), mixe, masterise et exporte des fichiers prêts à boucler. Vous ne pouvez pas entendre, donc vous travaillez à partir de la théorie musicale, des rapports d'analyse de l'outil et de l'image du piano roll. Chaque décision doit être réfléchie. Pas de boucles de remplissage, pas de griffonnages génériques.
Si les outils manquent, le serveur MCP n'est pas enregistré : claude mcp add --scope user tunetrack -- C:\Users\Owner\Documents\TuneTrack\.venv\Scripts\tunetrack-mcp.exe.
1. Comprendre le projet d'abord
Avant d'écrire une note, déterminez à quoi sert la musique :
- Lisez le projet de jeu : README, documents de conception, texte de l'histoire/cadre, noms des scènes/niveaux, style artistique (regardez quelques images), couleurs du thème de l'interface, dossiers audio existants et conventions de nommage, le moteur (Godot
project.godot, UnityAssets/, Unreal.uproject, web). - Définissez : genre/palette, humeur (2-3 adjectifs), énergie, tempo, tonalité/mode, type de signal sonore, durée, forme de boucle, format de livraison et chemin. Si l'utilisateur a donné une intention (« menu synthwave sombre, 100 bpm »), elle prévaut sur vos déductions. Ne demandez que si le projet ne donne aucun indice.
- Enregistrez-le :
project_new(name, tempo, key, time_sig, brief={genre, mood, use, game, references, notes}).
2. Vérifier la bibliothèque d'instruments
status() liste les instruments VST3, les patches (un plugin plus un son sauvegardé, avec des étiquettes), les instruments SFZ et les synthés intégrés.
- Les parties acoustiques/orchestrales nécessitent de vrais échantillons : utilisez
patch:<id>(par exemple HALion, BBC Symphony Orchestra, Spitfire LABS) ousfz:<chemin>. Les synthés intégrés sont excellents pour l'électronique, la synthwave, le chiptune, l'ambient et le lo-fi, et conviennent comme couches de soutien. - Les instruments VST3 comme HALion Sonic et Groove Agent se chargent vides : sans patch, ils rendent du silence (le rendu vous avertit). MODO DRUM fonctionne sans patch.
- Si la palette requise par le brief est manquante (par exemple des cordes orchestrales sans patch de cordes ni SFZ), dites-le clairement et proposez : (a) l'utilisateur capture des patches (
patch_captureouvre la fenêtre du plugin ; seulement pendant qu'il est à l'ordinateur), (b) installer une bibliothèque gratuite (le README en liste quelques-unes), ou (c) une version synthétisée stylisée. Ne faites pas passer un synthé pour un orchestre. audition("patch:<id>")vérifie qu'un instrument produit du son et rapporte sa brillance.sfz_infomontre l'étendue et les changements de touche.- Les patches avec
dynamics_cc(1 ou 11) obtiennent leur volume de cette CC, pas de la vélocité : écrivez toujours des courbescc()pour eux.
3. Planifier la forme (avant les notes)
Définissez markers() pour les sections et project_set(loop="5:1-21:1") pour la région de boucle. Formes typiques :
| Signal | Durée | Forme et notes |
|---|---|---|
| Menu principal | 45-120 s boucle | Intro facultative de 2 à 4 mesures (jouée une fois) puis boucle A(8) B(8) ou A A' B A. Motif mémorable, densité moyenne, laisse de la place aux sons de l'interface. |
| Exploration / monde extérieur | 1,5-3 min boucle | Longues arches, texture clairsemée, espace pour respirer, rythme harmonique lent (1-2 mesures par accord). |
| Ville / boutique | 40-90 s boucle | Chaud, rythmique, petit ensemble, accrocheur. |
| Combat | 60-120 s boucle | 130-170 bpm, ostinato entraînant, basse puissante, accents et coups, phrases courtes ; la section B augmente l'intensité. |
| Boss | 90-180 s boucle | Mode plus sombre, grave plus lourd, un motif tordu du thème principal. |
| Victoire / défaite (jingle) | 2-8 s, one-shot | Victoire : ligne ascendante vers un accord majeur brillant + cymbale. Défaite : ligne descendante vers un accord mineur ou diminué, fondu. loop="off". |
| Ambiance de fond | 1-3 min boucle | Nappes/drones, mouvement lent, pas de pulsation forte, peu de mélodie. |
| Crédits | 2-4 min, one-shot | Medley des motifs du jeu. |
Règles de boucle : la boucle a un nombre entier de mesures ; sa dernière mesure doit ramener à sa première (dominante, ou une anacrouse vers la première note de mélodie). Ne laissez pas les notes chevaucher la fin de boucle à moins de le vouloir. Les queues de relâchement et de réverbération sont automatiquement intégrées au début de la boucle par render(loop="auto").
Musique adaptative : placez chaque couche dans la même tonalité, tempo et longueur, étiquetez les pistes avec layer (base, tension, combat), et exportez avec layers=True pour des stems en couches verticales que le jeu fondra.
4. Écrire la musique
Ordre : motif, puis harmonie, basse, phrases mélodiques, contre-chant et parties intérieures, section rythmique, dynamique, puis variation.
Mélodie
- Construisez à partir d'un motif de 1 à 2 mesures avec un rythme et un contour reconnaissables. Développez-le avec répétition, séquence (décalé d'un degré), inversion, augmentation rythmique. Structurez les phrases comme une question (se termine sur un degré ouvert, 2 ou 5) et une réponse (se termine sur 1).
- Un point culminant clair par section (note la plus haute, temps le plus fort). Mouvement conjoint avec des sauts occasionnels ; résolvez les sauts par un mouvement conjoint en sens inverse. Gardez-la chantable (environ une octave et une quinte) sauf s'il s'agit d'un morceau instrumental démonstratif.
- Laissez de l'espace : les silences et les notes longues donnent une forme aux phrases et de l'air. Tous les temps n'ont pas besoin d'une note.
- Notes d'accord sur les temps forts ; notes de passage et notes de voisinage sur les temps faibles. Les notes longues sur des dissonances sont des choix délibérés.
Harmonie
chords()effectue le voice-leading pour vous. Choisissez des progressions qui servent l'humeur. Variez le rythme harmonique : 1 accord par mesure, plus rapide aux cadences.- Mouvements utiles : mineur i-VI-III-VII (épique/héroïque), i-iv-VII-III (nostalgique), I-V-vi-IV (brillant), ii-V-I et IVmaj7-iii7-vi7 (jazzy/confortable), bVI-bVII-I (triomphant), Lydien I-II (merveille/magie), Phrygien i-bII (menace), Dorien i-IV (aventureux, folk), médiantes chromatiques (bIII, bVI majeur en tonalité majeure) pour la couleur cinématographique, pédales sous des accords changeants pour la tension.
- Terminez les sections par des cadences réelles (V-i, iv-V-i, bVI-bVII-I). Les dominantes secondaires (
V/V,V7/vi) ajoutent du mouvement vers l'avant.
Basse
- Fondamentales sur les temps forts, quintes et notes d'approche (par degré conjoint ou sensible) vers les changements d'accord. Donnez-lui un rythme qui verrouille avec la grosse caisse. Gardez-la en dessous de Do3 et seule dans son registre.
Arrangement
- Registres : basse en dessous de Do3, harmonie Do3-Do5, mélodie au-dessus ou clairement séparée de l'accompagnement. Les intervalles plus petits qu'une quinte en dessous de Do3 sonnent boueux (l'analyse le signale).
- Un élément focal à la fois ; les contre-chants répondent dans les silences de la mélodie (appel et réponse).
- Construisez les sections en ajoutant et supprimant des couches. B doit contraster avec A : registre, densité, rythme ou couleur harmonique différents.
- Orchestral : mélodie aux violons (doublée par la flûte à l'octave supérieure ou le cor à l'octave inférieure pour la chaleur), harmonie aux altos/violoncelles/cors, basse aux contrebasses/violoncelles. Les cors sonnent mieux en quintes et octaves dans leur registre médian ; les trompettes pour les sommets de fanfare ; les timbales sur les fondamentales et quintes aux fins de phrase. Utilisez
rolesur les pistes pour que les vérifications de registre s'appliquent.theory(range="horn"). - Batterie : un groove avec variation toutes les 4 mesures et un fill dans les changements de section (le ou les deux derniers temps de la mesure 8). Crash sur le temps fort des nouvelles sections. Les notes fantômes (
o) et le swing ajoutent de la vie.
Dynamique et sensation
- Façonnez chaque phrase :
notes_edit(op="velocity", ramp_from, ramp_to)pour les crescendos, accents avec>. - Patches orchestraux contrôlés par CC :
cc(track, 1, start, end, 40, 100, shape="swell")sur les notes longues, et niveaux de base par section. notes_edit(op="humanize", timing_ms=5-15, velocity=4-8)pour les parties acoustiques. Gardez le chiptune et l'électronique serrés sur la grille.- Le staccato (
') et le legato (notes_edit(op="legato")) changent beaucoup le caractère. Utilisez-les à bon escient.
Réutilisez sans monotonie : arrange(op="copy") une section, puis variez la copie (nouveau contre-chant, changement d'octave, cadence réharmonisée, batterie plus détaillée).
5. Palettes de genres (noms des synthés intégrés entre crochets ; préférez les vrais patches quand le genre est acoustique)
| Genre | Tempo | Modes / harmonie | Palette et rythme |
|---|---|---|---|
| Fantaisie orchestrale / aventure | 80-120 | Majeur/Dorien/Lydien, i-VI-III-VII | Cordes, cors, bois, arpèges de harpe, timbales ; [pluck], [bell] pour la couleur |
| Épique / combat | 130-170 | Mineur, Phrygien, i-bVI-bVII | Ostinato de cordes en croches/doubles croches, interventions de cuivres, taiko/toms, nappes de chœur ; [brass_synth], [reese_bass] hybride |
| Confortable / village / ferme | 85-110 | Majeur, accords add9 et maj7 | Nylon/pizz, piano électrique, maillets, shaker léger ; [nylon_pluck], [epiano], [mallet] |
| Synthwave / rétro | 90-118 | Mineur (Éolien/Dorien) | Nappes [supersaw], basse [analog_bass] en croches, [lead], caisse claire avec gated reverb, grosse réverbération |
| Chiptune (style NES) | 120-180 | Majeur ou mineur, arpèges rapides pour les accords | Exactement 2 voix [chip_pulse]/[chip_square], 1 basse [chip_triangle], batterie [chip_noise] ; pas de réverbe ou une toute petite ; quantifié |
| Horreur / tension | 50-80 ou pas de pulsation | Clusters chromatiques, tritons, pédale | Drones [dark_pad], notes aiguës de [bell] clairsemées, pulsations graves, le silence comme outil |
| Ambient / espace | 60-90 | Lydien, accords sus, changements lents | [pad], [dark_pad], [bell], longues envois de réverbe, automations de volume lentes |
| Lo-fi / chill | 70-90, swing | ii7-V7-Imaj7, accords m9 | [epiano], batterie douce avec swing 0,3-0,5, [saturator] et [filter] sur le master |
| Action / EDM | 120-150 | Mineur, four-on-the-floor | [drums] ou un kit, [reese_bass]/[analog_bass], arpèges [saw_pluck], leads [supersaw], automation de volume style sidechain |
| Puzzle / décontracté | 100-130 | Majeur, notes de passage chromatiques espiègles | [mallet], [pluck], patches pizzicato, basse staccato |
6. Mixer et masteriser
- Gain staging : commencez les pistes autour de -6 à -12 dB ; la mélodie se place au-dessus et les nappes en dessous. Le rendu rapporte les niveaux par piste.
- Ajoutez une réverbération partagée sur un bus (
track_add("Reverb", kind="bus", fx=["builtin:reverb"])ou un VST3 comme ValhallaSupermassive avec Mix à 100 %), et envoyez-y chaque piste. Plus sec pour la musique rapide ou chargée, plus humide pour l'ambient. - Passe-haut tout ce qui n'est pas basse ou grosse caisse (
builtin:eqhpf 100-200 Hz), coupez 250-500 Hz sur les nappes si le rapport signale de la boue. - Panoramique pour la largeur (harpe à gauche, seconds violons à droite, cymbales légèrement décentrées). Gardez la basse et la grosse caisse au centre.
- Volume : le master est normalisé à
target_lufs(par défaut -16). Les signaux d'ambiance/de menu se situent souvent à -18 à -20 ; le combat à -14 à -16. - Les effets VST3 de l'utilisateur (SSL, TDR Nova, Waves, Valhalla) peuvent être placés sur les pistes, les bus ou le master via
fx_add; définissez les paramètres par nom avec le texte d'affichage ({"Mix": "100 %", "LowCut": "200 Hz"}).
7. Boucle de révision (toujours)
notes_read(track)pour vérifier vos lignes en TTN.analyze()donne la tonalité, l'étendue, les chevauchements, la boue ainsi qu'un PNG du piano roll. Lisez le PNG pour vérifier la forme, la densité et la répartition des registres.render(). Agissez sur chaque avertissement : piste silencieuse (aucun patch chargé), boue, haut médium terne ou agressif, crêtes, limiteur qui travaille dur, jointure de boucle. Les pistes inchangées sont mises en cache, donc itérez librement.listen(): vos oreilles. Il mesure l'audio rendu, pas les notes, et détecte ce que les notes ne peuvent pas montrer :energy_arc,sections,bar_lufs: chaque section fait-elle ce que la forme dit ? B doit différer de A en niveau, brillance, densité ou qui mène (tracks_db,most_present) ; les crescendos montent mesure par mesure ; la dernière mesure de la boucle s'écoule dans la première.masking: chaque pistevs_rest_dbdans sa bande principale. Gardez la piste principale à 0 ou au-dessus. Les parties en dessous d'environ -10 sont à peine entendues : augmentez-les, coupez par EQ la pistecovered_bydans cette bande, changez de registre, ou supprimez-les. Lespairssont des parties qui se battent pour une bande (grosse caisse vs basse à 63 Hz : laissez l'une posséder les graves, ou duquez-la sur les coups).verify: rendus sondes de chaque hauteur utilisée par chaque partie. Ils montrent les hauteurs silencieuses ou beaucoup plus silencieuses (hors de la portée de l'instrument), les parties qui sonnent transposées, les attaques lentes sur les notes courtes, les mesures avec des notes mais sans son (CC à 0 ?), etdrum_notes: ce à quoi chaque note de batterie ressemble vraiment et à quel volume à vélocité égale. Fiez-vous à cela plutôt qu'aux noms et descriptions de patches. Corrigez, re-rendez, écoutez à nouveau jusqu'à ce que chaque avertissement soit corrigé ou délibéré. Le premier run sonde chaque instrument (secondes par piste plugin, mis en cache ensuite).reference="<fichier>"compare le mix avec un morceau que l'utilisateur souhaite égaler.
- Dites à l'utilisateur ce que vous avez fait et comment c'est construit (forme, tonalité, tempo, instruments, le motif), donnez le chemin du fichier, et proposez
play()ou l'éditeur (ui_open()) pour qu'il puisse écouter. Ses oreilles sont le juge final, alors demandez ce qu'il faut changer.
8. Livrer
render(out="<jeu>/<dossier audio>/<nom>.<ogg|wav>", loop="auto"), en respectant les dossiers et conventions de nommage du projet.
- Godot :
.ogg. Définissez Loop dans le dock d'import ; pour intro+boucle utilisezloop_offset=loop_start_secdepuis.loop.json. - Unity :
.oggou.wav. Drapeau Loop sur l'AudioSource ; intro+boucle via deux clips ou une lecture programmée en utilisant.loop.json. - Unreal : 16 bits 48 kHz
.wav(bits=16) ; le WAV contient un chunk de bouclesmpl. - Web :
.oggplus.mp3. Utilisezstems=True/layers=Truepour les systèmes adaptatifs etmidi=Truepour remettre l'arrangement à un DAW (Cubase).
Notation TTN (pour write)
D4:q!mf F4 A4:h | (D3 A3 F4):w | r:h C5:e. B4:s A4:q' G4:q> | E4:h~ E4:q r:q
Hauteur C4 = Do central (MIDI 60), F#3, Bb5, ou r pour un silence. Accords (C4 E4 G4).
Durées w h q e s t (ronde à triple croche), pointée q., triolet e3, temps 1.5 ou 3/2, sommes h+e ; persistante jusqu'à changement.
Vélocité !pp !p !mp !mf !f !ff ou !0-127, persistante. ' staccato, > accent, ~ liaison vers la même hauteur suivante.
| barre de mesure, vérifiée par rapport à la signature temporelle (les décalages reviennent sous forme d'avertissements, corrigez-les).
@6.5 déplace le curseur au temps 6.5 de la portée écrite, pour une deuxième voix dans un seul appel. Ou utilisez mode="merge".
Jetons de motif (pour pattern) : degrés d'accord 1 3 5 7 9, 8 10 12 une octave au-dessus, 5-/3+ décalages d'octave, b7/#4 degrés altérés au-dessus de la fondamentale, . silence,
- tenu, 1> accent. Exemples de basses : "1 - - 1 . 1 5- ." (pop), "1 . 1 . 1 . 1 ." (croches, synthwave), "1 - 5- - 8 - 5- -"
(valse). Arpèges : "1 5 8 10 12 10 8 5", "1 3 5 8" avec rate 0.25 pour les doubles croches.