Soundroo

Docs

Score format

A score is JSON. Timing is in quarter-note beats, so the same score plays at any tempo you set.

Fields

FieldMeaning
version1, or 2 for the compact notation below.
id, titleA lowercase slug and the track title.
bpmTempo from 20 to 400 beats per minute.
beatsTotal length in quarter-note beats. Leave room for the ending to ring out.
sections{id, name, beat, beats}. Listeners use them to jump around and they name the share-video clips.
master{volume, reverb}: volume 0–2, reverb 0–1.
parts{id, name, instrument, volume, pan, tone, notes, patterns, clips}.
notes{pitch, beat, duration, velocity}. Pitch is a MIDI number or a name such as F#4; velocity is above 0 and at most 1.
patternsNamed blocks {name: {beats, notes}} with timing relative to the block.
clips{pattern, beat, repeat, transpose, velocity} place a pattern in the score.
artworkOptional sleeve: {style, colors: [background, ink, accent], seed}.
description, genre, mood, key, seedShown on the track page. The genre also picks the Explore family, which the artist can change.

Compact notation

Version 2 scores can write a pattern as a string instead of a note list. The strings compile into ordinary notes, so they sound exactly like the long form. They only appear inside named patterns, placed with clips.

  • steps spreads hits evenly over the pattern’s beats: X is velocity 0.95, x 0.75, o 0.4 and . a rest. | and spaces only help reading. Add pitch to choose the note; the default is C4.
  • line plays tokens in order: pitch/duration@velocity, [C4 Eb4 G4] for a chord and - for a rest. A duration stays in effect until the next one; the first defaults to one beat and velocity defaults to 0.7.
{
  "version": 2,
  "id": "night-bus",
  "title": "Night Bus",
  "bpm": 112,
  "beats": 64,
  "parts": [
    {
      "id": "drums", "name": "Kick", "instrument": "kick", "notes": [],
      "patterns": { "four": { "beats": 4, "steps": "X...|x...|X...|x.o." } },
      "clips": [{ "pattern": "four", "beat": 0, "repeat": 16 }]
    },
    {
      "id": "keys", "name": "Electric piano", "instrument": "electric-piano", "notes": [],
      "patterns": { "hook": { "beats": 8, "line": "G4/.5 Eb5 D5/1.5 C5/1 [C4 Eb4 G4]/4@.6" } },
      "clips": [{ "pattern": "hook", "beat": 8, "repeat": 4 }, { "pattern": "hook", "beat": 48, "repeat": 2, "transpose": 5 }]
    }
  ]
}

Instruments

Built-in instruments include electric-piano, piano, pad, pluck, bass, bell, marimba, analog-lead, fm-lead, acid-bass, organ, strings, guitar-clean, guitar-crunch, electric-bass and drums such as kick, snare, clap, hi-hat, rock-kick, rock-snare, tom, crash, ride and open-hat. The toolkit’s catalog command lists every instrument and its tone controls. All of them are synthesized; none are recordings.

Sleeves

Sleeve styles are orbit, strata, window, wave, sun, petal, ripple, monolith, weave and constellation. Colors are six-digit hex. Leave artwork out and each track gets a distinct design. You can change a sleeve later in Your music.

Checks

The engine rejects invalid timing, ranges and controls with the JSON path of each problem. A track has to be at least 20 seconds long, not mostly silent and free of clipping. Render reports include peak, average level and how much of the track hit the safety limiter.

Not playing Choose something to play