Faire des morceaux avec une IA
Trois façons de travailler
Te laisser guider question par question, laisser combler les trous, ou tout spécifier d'un coup.
build_song prend un mode. Il existe parce que « fais-moi un morceau » et « voici la grille exacte que je veux » sont deux demandes différentes, et qu'un serveur qui n'en gère qu'une est pénible pour l'autre.
guided : une question à la fois
Pour quand tu ne connais pas encore NØISE. Le serveur demande dans l'ordre musical : comment ça s'appelle, quelle tonalité, quelle vitesse, quel style (un seul pour tout le morceau), quel groove de départ, quel kit, quel accordage, comment c'est construit. Et chaque option dit ce qu'elle fait, pas seulement comment elle s'appelle :
Which groove does the song start in? These are the ones rock offers; a section may pick another with its own `feel`.
- straight (recommended): Straight - the rock default
- halfTime: Half-time - changes the timing grid, not just the pattern
- driving16: Driving 16ths - changes the timing grid, not just the patternComme le serveur ne garde aucune session, chaque réponse revient avec le brouillon en l'état. Ton modèle renvoie ce brouillon plus la nouvelle réponse, et reçoit la question suivante. Rien n'est stocké nulle part.
Ça a une conséquence utile : le brouillon est toujours un point de départ valide. À mi-chemin, tu peux remplir le reste toi-même et passer en direct : le parcours guidé n'est pas un entonnoir dont tu ne sors pas.
assisted : le mode par défaut
Construit ce que tu lui as donné, et ne demande que ce qui change vraiment ce que tu entends et qui manque : la tonalité et le style. Tout ce que tu laisses de côté reste non réglé, et l'app le joue avec les défauts fixes du format — le premier kit et le premier feel du style, le preset STOCK, les fills propres à l'arrangement. Une valeur que le serveur n'a pas pu utiliser revient comme avertissement, avec ce qu'il a utilisé à la place.
direct : aucune question
Construit le morceau ou échoue avec des erreurs précises. Pour le travail en série, et pour quand tu sais exactement ce que tu veux.
{ "mode": "direct", "song": { "name": "…", "key": "Am", "sections": [ … ] } }Quand un client ne peut pas poser de question
Le serveur n'utilise pas l'elicitation de MCP, même dans les clients qui la prennent en charge. Une question revient toujours comme données structurées à côté du texte, et ton modèle te la pose lui-même :
{
"done": false,
"step": 2,
"total": 8,
"question": { "field": "key", "prompt": "Which key is it in? …" },
"draft": { "name": "What's Up" }
}La conversation marche donc dans tous les clients. Le serveur ne bloque jamais en attendant quelque chose qu'il ne peut pas obtenir.