{
"id": "net.anisota.lab.synth",
"defs": {
"main": {
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"name",
"tempo",
"steps",
"tracks",
"createdAt"
],
"properties": {
"fx": {
"type": "object",
"properties": {
"echo": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"reso": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"drive": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"cutoff": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"master": {
"type": "integer",
"maximum": 100,
"minimum": 0
}
},
"description": "The shared rack the composition was shaped with, each 0..100"
},
"name": {
"type": "string",
"maxLength": 800,
"description": "Display name for the composition",
"maxGraphemes": 100
},
"root": {
"type": "integer",
"maximum": 127,
"minimum": 0,
"description": "Root note of the scale as a MIDI note number"
},
"scale": {
"enum": [
"pentatonic",
"minor",
"major",
"dorian"
],
"type": "string",
"description": "Scale the tone tracks' degrees are drawn from"
},
"steps": {
"type": "integer",
"maximum": 64,
"minimum": 4,
"description": "Number of sixteenth-note steps in the loop"
},
"tempo": {
"type": "integer",
"maximum": 240,
"minimum": 40,
"description": "Loop tempo in beats per minute"
},
"tracks": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"cells"
],
"properties": {
"gain": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Track level, 0..100"
},
"kind": {
"enum": [
"tone",
"drum"
],
"type": "string",
"description": "A pitched voice or a percussion lane"
},
"wave": {
"enum": [
"triangle",
"sine",
"sawtooth",
"square"
],
"type": "string",
"description": "Oscillator shape for a tone track"
},
"cells": {
"type": "array",
"items": {
"type": "integer"
},
"maxLength": 8192,
"description": "Interleaved note data: [step, degree-or-piece, ...]"
},
"muted": {
"type": "boolean",
"description": "Whether the track is silenced in the mix"
}
}
},
"maxLength": 32,
"description": "The overlapping tracks, played together on the loop"
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "When the composition was saved"
}
}
},
"description": "A multitrack composition made in the Anisota Lab's Synth studio and saved to the owner's library. The piece is stored as compact musical event data (not audio), so it can be reloaded into the synth, replayed and edited. The shared loop has a tempo and step length; each track is either a 'tone' voice (a waveform playing degrees of the composition's scale) or a 'drum' lane (the studio's synthesized kit). A track's notes are stored in 'cells' as interleaved integers — for a tone track [step, degree, step, degree, ...] where degree indexes the scale ladder; for a drum track [step, piece, ...] where piece is 0..4 (kick, snare, hat, clap, tom). 'fx' captures the rack the piece was shaped with."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}