Hacer canciones con IA
Tres maneras de trabajar
Que te lleven pregunta a pregunta, que te rellenen los huecos, o especificarlo todo de una vez.
build_song toma un mode. Existe porque “hazme una canción” y “este es el cifrado exacto que quiero” son peticiones distintas, y un servidor que solo atiende una de ellas resulta molesto para la otra.
guided: una pregunta cada vez
Para cuando aún no conoces NØISE. El servidor pregunta en orden musical (cómo se llama, qué tonalidad, a qué velocidad, qué estilo (uno para toda la canción), en qué groove empieza, qué kit, qué afinación, cómo está construida) y cada opción dice qué hace, no solo cómo se llama:
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 patternComo el servidor no guarda sesión, cada respuesta vuelve con el borrador hasta ese punto. Tu modelo envía ese borrador más la respuesta nueva, y recibe la siguiente pregunta. No se almacena nada en ningún sitio.
Eso tiene una consecuencia útil: el borrador es siempre un punto de partida válido. A mitad de camino puedes rellenar el resto tú mismo y pasar a direct: el flujo guiado no es un embudo del que no puedas salir.
assisted: el modo por defecto
Construye lo que le has dado, y solo pregunta por lo que de verdad cambia lo que oyes y falta: la tonalidad y el estilo. Todo lo demás que dejes fuera se queda sin fijar, y la app lo toca con los valores fijos del formato: el primer kit y feel del estilo, el preset STOCK, los fills propios del arreglo. Un valor que el servidor no ha podido usar vuelve como aviso con lo que ha usado en su lugar.
direct: sin preguntas
Construye la canción o falla con errores precisos. Para trabajo por lotes, y para cuando sabes exactamente lo que quieres.
{ "mode": "direct", "song": { "name": "…", "key": "Am", "sections": [ … ] } }Cuando un cliente no puede preguntar
El servidor no usa la elicitation de MCP, ni siquiera en los clientes que la admiten. Una pregunta vuelve siempre como datos estructurados junto al texto, y tu modelo te la hace él mismo:
{
"done": false,
"step": 2,
"total": 8,
"question": { "field": "key", "prompt": "Which key is it in? …" },
"draft": { "name": "What's Up" }
}Así la conversación funciona en cualquier cliente. El servidor nunca se bloquea esperando algo que no puede conseguir.