Music Room
Music Room din codai Studio — o echipă de agenți cu roluri scrie, cântă și mixează o piesă care sună cântată de oameni, cu trei porți de aprobare, o cotă lunară în plan și o creație audio editabilă.
Music Room este o echipă de agenți cu roluri care face împreună o piesă: un producător o planifică, un compozitor și un textier o scriu, un aranjor construiește forma, instrumentiștii de studio își scriu partiturile pe instrumente reale eșantionate, un producător de voce adaugă vocea, inginerii de mixaj și de mastering o finalizează, un critic o ascultă, iar o verificare de drepturi compară melodia cu un corpus de referință. Rezultatul este o creație audio obișnuită: fiecare notă scrisă de un agent este o operație editabilă, cu anulare, și poți prelua oricând controlul în editorul multipistă.
| Metodă | Cale | Rezultat |
|---|---|---|
POST | /v1/studio/music-room | Pornește o piesă (202, acceptă Idempotency-Key) |
GET | /v1/studio/music-room | Piesele tale, cele mai noi primele (?limit 1–100, ?before dată ISO) |
GET | /v1/studio/music-room/quota | { plan, included, used, remaining, period_end } |
GET | /v1/studio/music-room/{id} | Piesa; citirea avansează fluxul |
POST | /v1/studio/music-room/{id}/choose | Răspunde la poarta deschisă |
POST | /v1/studio/music-room/{id}/direct | Vorbește cu un instrumentist (202, acceptă Idempotency-Key) |
Cum se face o piesă
brief ─► plan ─► [poarta 1: alegi o variantă de plan] ─► compoziție ─► versuri ─► aranjament ─► partituri
─► umanizare ─► randare demo ─► [poarta 2: aprobi demo-ul sau dai indicații unui instrumentist]
─► voce ─► mixaj ─► mastering ─► critică (cel mult 2 runde de corecturi) ─► [poarta 3: aprobi mixajul final] ─► gataAgenții nu scriu niciodată direct audio. Ei scriu partituri simbolice pe o grilă de timpi; cod determinist umanizează ritmul și dinamica pentru fiecare instrumentist; codai-studio-media randează pistele cu instrumente eșantionate; ACE-Step cântă vocea peste o pistă-ghid randată, verificată prin recunoaștere vocală și reparată silabă cu silabă. Criticul notează groove-ul, armonia, melodia, aranjamentul, mixajul, cât de omenesc sună și potrivirea cu genul, apoi trimite corecturi țintite instrumentiștilor de cel mult două ori. robot_score (0 omenesc … 1 robotic) este o măsură simbolică a obișnuitelor „semne de AI”, iar copy_risk arată asemănarea melodiei cu melodii cunoscute.
Pornirea unei piese
curl https://ai.codai.ro/v1/studio/music-room \
-H "Authorization: Bearer $CODAI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: song-42" \
-d '{
"brief": "o melodie veselă de nuntă despre doi prieteni care se reîntâlnesc",
"language": "ro",
"genre": "hora",
"duration_seconds": 150,
"vocals": true
}'| Câmp | Implicit | Note |
|---|---|---|
brief | obligatoriu | 10–2000 de caractere: ocazie, stare, poveste, public; fără nume de artiști |
language | ro | ro sau en — limba versurilor |
genre | alege producătorul | Id-ul unui pachet de gen: pop, jingle, rock, indie, hiphop, trap, cinematic, lofi, ballad, hora, sarba, doina, colind, lautareasca, manele, pop_folk_ro, fanfara, cocek, kolo… |
duration_seconds | — | 6–240 (cel mult patru minute) |
vocals | true | false pentru o piesă instrumentală |
timbre | ales după gen | Id-ul unui timbru vocal |
voice_passport_id | — | Cântă cu vocea ta (beta): una dintre vocile tale personalizate cu consimțământ activ pentru cântat. Vezi Pașaport de voce |
instruments | — | Id-urile instrumentelor pe care trebuie să le folosească trupa (drums.kit_rock, balkan.accordion…) |
auto | false | Sare peste cele trei porți (varianta de plan 0, demo și final aprobate) |
budget_micro_usd | 10000000 | Plafonul unei piese peste cotă, cel mult 20000000 (20 $) |
title | — | Până la 200 de caractere |
Răspunsul este 202 cu piesa (object: "studio.music_room"). Interoghează GET /v1/studio/music-room/{id} la fiecare 20–60 de secunde; procesul de fundal avansează piesa și dacă nu întreabă nimeni.
Pașaport de voce (beta)
Vocea ta personalizată poate cânta în piesele tale după ce dai pentru ea un consimțământ separat și revocabil pentru cântat: în cardul „Cântat (beta)” al vocii din hub citești cu voce tare declarația pentru cântat și înregistrezi o mostră scurtă cântată (aceeași verificare în aplicație ca la crearea vocii), ceea ce apelează POST /v1/studio/voices/{id}/singing-consent. DELETE /v1/studio/voices/{id}/singing-consent retrage doar scopul „cântat”; ștergerea vocii retrage tot. Producătorul vocal trimite mostra ta cântată la ACE-Step ca referință de timbru, deci rezultatul aproximează timbrul tău; nu este o clonă fidelă. Disponibil doar unde clonarea vocii este activă pentru contul tău.
warnings îți spune ce s-a întâmplat: voice_passport_beta (cântat cu vocea ta), voice_passport_needs_singing_consent (fără consimțământ activ pentru cântat sau retras în timpul piesei), voice_passport_not_found (nu este una dintre vocile tale active), voice_passport_unavailable (clonarea vocii nu este activă pentru contul tău sau vocea este suspendată), voice_passport_lyrics_refused (versurile nu au trecut verificarea de siguranță). În toate cazurile în afară de primul piesa se face tot cu timbre.
Cele trei porți
Când piesa ajunge la o poartă, răspunde cu status: "waiting" și gate.kind completat, iar nimic nu mai rulează până nu răspunzi:
| Poartă | Ce vezi | Răspuns |
|---|---|---|
plan | Până la 3 variante de plan în gate.variants: titlu, gen, BPM, măsură, mod, secțiuni și instrumente, fiecare cu argumentul producătorului | {"gate": "plan", "variant": 0} (0–2) |
demo | Demo-ul aranjat în demo_asset_id și echipa, cu argumentul fiecărui instrumentist | {"gate": "demo", "approve": true} |
final | Mixajul final în final_asset_id, pistele separate în stems_asset_ids, ultima recenzie a criticului | {"gate": "final", "approve": true} |
curl https://ai.codai.ro/v1/studio/music-room/$ID/choose \
-H "Authorization: Bearer $CODAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"gate": "plan", "variant": 1}'La poarta de demo sau la cea finală poți și să dai indicații unui instrumentist, ca un producător în studio. Acesta își recântă partea (o secțiune sau toată piesa), iar demo-ul se randează din nou:
curl https://ai.codai.ro/v1/studio/music-room/$ID/direct \
-H "Authorization: Bearer $CODAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"role": "drums", "section_id": "chorus1", "direction": "mai relaxat pe refren, mai puține breakuri, mai multe ghost notes"}'role este unul dintre producer, composer, lyricist, arranger, drums, bass, guitar, keys, strings, brass, winds, balkan_lead, balkan_rhythm, percussion, synth, vocal_producer, sound_designer, mix_engineer, mastering_engineer, critic, rights; direction are cel mult 500 de caractere. O poartă lăsată fără răspuns 7 zile face piesa să eșueze (error: "gate_expired") și eliberează orice rezervare.
Cotă și buget
Piesele se numără pe lună calendaristică (UTC): fiecare piesă Music Room care a ajuns la ready sau încă rulează.
| Plan | Piese incluse pe lună |
|---|---|
| Pro | 4 |
| Builder | 12 |
| Max | 30 |
| Team | 10 pe loc |
| Free, Lite, Student, BYOK | 1 |
În cotă piesa e gratuită pentru tine (quota.within: true). Peste cotă fiecare pas primește o ofertă de preț, o rezervare din portofel și se decontează la costul real — 402 insufficient_funds când portofelul nu ajunge. budget_micro_usd plafonează o piesă în ambele cazuri; spent_micro_usd arată cât a costat până acum. Pașii agenților sunt taxați pe tokeni sub modelul public codai (model de utilizare codai::music-<rol>, cache de prompt activ). Vezi ce a rămas cu GET /v1/studio/music-room/quota.
Erori
| Stare | Cod | Când |
|---|---|---|
400 | invalid_request | Corpul cererii nu respectă schema |
402 | insufficient_funds | Peste cotă, iar portofelul nu acoperă pasul următor |
404 | not_found | Id necunoscut sau piesa altui cont |
409 | not_at_gate | choose sau direct cât timp piesa nu așteaptă la acea poartă |
429 | too_many_music_rooms | Ai deja două piese care rulează |
503 | media_ops_unavailable | Motorul de randare muzicală nu e configurat pe acest gateway |
Mențiuni
credits conține rândurile de publicat împreună cu piesa: bibliotecile de eșantioane CC-BY folosite de instrumentiști și „Built with Llama” când a rulat un asistent simbolic. Fiecare rezultat poartă marcajul AI, ca restul codai Studio.
SDK-uri
const room = await codai.studio.musicRoom.create(
{ brief: 'o melodie veselă de nuntă despre doi prieteni vechi', language: 'ro', genre: 'hora' },
{ idempotencyKey: 'song-42' },
);
let r = await codai.studio.musicRoom.wait(room.id, { untilGate: true });
if (r.gate?.kind === 'plan') r = await codai.studio.musicRoom.choose(r.id, { gate: 'plan', variant: 0 });
await codai.studio.musicRoom.direct(r.id, { role: 'drums', direction: 'mai puține breakuri' });
const { remaining } = await codai.studio.musicRoom.quota();room = client.studio.music_room.create("o melodie veselă de nuntă despre doi prieteni vechi", language="ro", genre="hora")
r = client.studio.music_room.wait(room["id"], until_gate=True)
if r["gate"] and r["gate"]["kind"] == "plan":
r = client.studio.music_room.choose(r["id"], "plan", variant=0)
print(client.studio.music_room.quota()["remaining"])TypeScript: studio.musicRoom.create / get / list / choose / direct / quota / wait (wait(id, { untilGate, intervalMs, timeoutMs, signal })). Python: studio.music_room.create / get / list / choose / direct / quota / wait (wait(id, until_gate=, interval=, timeout=)).
Unelte pentru agenți
Agenții codai de pe desktop, telefon și VS Code și setul de unelte MCP Studio folosesc același flux prin patru unelte: music_room_create (pornește o piesă; auto doar când ai cerut să fie făcută direct), music_room_status (o citește și o avansează), music_room_choose (răspunde la o poartă cu decizia ta) și music_room_direct (vorbește cu un instrumentist).
Versuri și jam live
Uneltele de compoziție din codai Studio — scrii versuri cu verificarea silabelor și a rimelor, le aliniezi la un clip vocal pentru sincronizare karaoke și LRC și cânți live cu muzică generată printr-un WebSocket.
Loturi
Umpli un șablon sau o creație dintr-un fișier CSV ori dintr-o foaie de calcul — câte o creație pe rând, cu limbă și randare opționale pe rând, export de stare și o arhivă ZIP cu videoclipurile.