NØISEIT

Crea brani con l'IA

Tre modi di lavorare

Farti guidare una domanda alla volta, farti riempire i buchi, o specificare tutto in una volta sola.

build_song prende un mode. Esiste perché “fammi un brano” e “ecco lo schema esatto che voglio” sono richieste diverse, e un server che gestisce solo una delle due è una seccatura per l'altra.

guided: una domanda alla volta

Per quando NØISE non lo conosci ancora. Il server chiede in ordine musicale — come si chiama, che tonalità, quanto veloce, quale stile (uno per tutto il brano), quale groove all'inizio, quale kit, quale accordatura, com'è costruito — e ogni opzione dice cosa fa, non solo come si chiama:

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 pattern

Siccome il server non tiene nessuna sessione, ogni risposta torna con la bozza fin qui. Il tuo modello manda quella bozza più la nuova risposta, e riceve la domanda successiva. Non viene memorizzato niente da nessuna parte.

Questo ha una conseguenza utile: la bozza è sempre un punto di partenza valido. A metà strada puoi completare il resto da solo e passare a direct: il percorso guidato non è un imbuto in cui resti bloccato.

assisted: quello predefinito

Costruisce quello che gli hai dato, e chiede solo le cose che cambiano davvero quello che senti e che mancano: la tonalità e lo stile. Tutto il resto che lasci fuori resta non impostato, e l'app lo suona con i valori fissi del formato — il primo kit e il primo feel dello stile, il preset STOCK, i fill dell'arrangiamento. Un valore che il server non ha potuto usare torna come avviso, con quello che ha usato al suo posto.

direct: nessuna domanda

Costruisce il brano, oppure fallisce con errori precisi. Per il lavoro in serie, e per quando sai esattamente cosa vuoi.

{ "mode": "direct", "song": { "name": "…", "key": "Am", "sections": [ … ] } }

Quando un client non può chiedere

Il server non usa l'elicitation di MCP, nemmeno nei client che la supportano. Una domanda torna sempre come dati strutturati accanto al testo, ed è il tuo modello a fartela:

{
  "done": false,
  "step": 2,
  "total": 8,
  "question": { "field": "key", "prompt": "Which key is it in? …" },
  "draft": { "name": "What's Up" }
}

Così la conversazione funziona in ogni client. Il server non si blocca mai ad aspettare qualcosa che non può ricevere.