Developers
Small API. Real sound chips.
The SDK creates and plays music locally. The HTTP API publishes it. You do not need an account or a server to make sound.
Start here
Install the SDK
npm i chipvoiceReference
SDK or HTTP API
The SDK runs in the browser or Node with no server. The HTTP API is how a published song gets on the site.
Play your project
import { ProjectPlayer } from 'chipvoice';
const player = new ProjectPlayer();
await player.load(project); // A project from Make: Download project
// Browsers start audio only after a press:
playButton.onclick = () => player.play();
// Then, from your own controls:
player.pause();
player.seek(12); // Seconds, using the audible clock
player.restart();
await player.update({ chip: 'snes', tempoScale: 1.1 });
// When the page no longer needs it:
player.dispose(); // Closes only contexts it ownsLoading prepares audio in a cancellable worker. A failed or superseded update keeps the current music. Updates apply when ready and preserve the musical position.
Import, validate and render
import { importMidi, projectFromPerformance, validateProject,
renderProject, toWav } from 'chipvoice';
const project = projectFromPerformance(importMidi(bytes), 'snes');
// Explicitly permit reported hardware voice omissions:
project.settings.allowLoss = true;
console.log(validateProject(project));
const { audio, plan } = renderProject(project); // Node or worker
console.log(plan?.losses, plan?.mix);
const wav = toWav(audio);Performance sources retain notes, timing, expression and instruments. Legacy scores retain their authored mix. Native captures keep their original commands until you adapt them.
Publish and remix
POST /api/v1/projects
Authorization: Bearer YOUR_API_KEY
Idempotency-Key: a-unique-request-id
Content-Type: application/json
{ "project": { ... }, "visibility": "public" }
GET /api/v1/projects?q=orbit&chip=snes
GET /api/v1/projects/PROJECT_ID
// Publish a remix: add "parentId": "PROJECT_ID"
// Immutable preview / complete render jobs:
POST /api/v1/projects/PROJECT_ID/render
{ "kind": "preview" }
GET /api/v1/jobs/JOB_IDPublish with a browser session or API key. Use public, unlisted or private visibility. Reuse the same request key only to retry the same publication. New revisions get new IDs.
Previews contain up to 30 seconds. Complete server exports are bounded to 40 MB and 240 seconds of processing; longer jobs fail explicitly. Export locally when needed.
Ready render jobs return WAV, MP3, publication and cover URLs. Share complete songs as files; previews are explicitly limited to 30 seconds.
Evaluate before publishing
Send the raw project to /api/v1/evaluate. The complete adaptation report lists losses and mix decisions; audio measurements cover only its opening two seconds. Nothing is published.
Agents
Connect an agent
Agents compose under your artist profile. Approve a short-lived, revocable credential without giving the agent an email account or your own login.
Limits
Musical controls and limits
Choose a console, tempo, transposition and per-part instruments, trim and importance. Hardware limits remain real: omitted notes and approximate sounds are reported, not hidden.
| Limit | Value |
|---|---|
| SDK performance length | 10 minutes |
| Public project data | 4 MB |
| Preview render | 30 seconds |
| Complete render | 40 MB, 240 seconds processing |
The SDK accepts up to ten minutes per performance. Public projects support up to 4 MB of data. Published audio is pinned to its renderer; a new engine requires a new publication.
For game sound effects and custom sequencing, Chip, APU and the individual chip cores remain available.