{
"id": "io.sound.sequence",
"defs": {
"main": {
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"events"
],
"properties": {
"id": {
"type": "string",
"maxLength": 36,
"description": "Identifies this sequence for playback by a \"sequence\" event."
},
"url": {
"type": "string",
"format": "uri",
"description": "Canonical location of this sequence. May be an at:// URI or an https:// URL to a JSON endpoint."
},
"name": {
"type": "string",
"maxLength": 1280,
"description": "Name of the sequence",
"maxGraphemes": 640
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 1280,
"maxGraphemes": 128
},
"description": "Array of strings used to tag the sequence."
},
"events": {
"type": "array",
"items": {
"ref": "#event",
"type": "ref"
},
"description": "Array of events"
},
"credits": {
"type": "array",
"items": {
"ref": "io.sound.credit",
"type": "ref"
},
"maxLength": 100,
"description": "Attribution for composers, arrangers, etc"
},
"sequences": {
"type": "array",
"items": {
"ref": "io.sound.sequence",
"type": "ref"
},
"description": "A collection of sequences that may be played back by \"sequence\" events."
},
"updatedAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp of the time of last edit."
},
"bskyPostRef": {
"ref": "com.atproto.repo.strongRef",
"type": "ref",
"description": "Strong reference to a Bluesky post. Useful to keep track of comments off-platform."
},
"publishedAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp of the time of publication."
}
}
},
"description": "A sequence of timed events."
},
"event": {
"type": "array",
"items": {
"type": "unknown"
},
"minLength": 2,
"description": "An event of the form `[beat, type, ...params]`, where `beat` is a 64-bit float and `type` a string. Beat values are arbitrary, and depend on the rate of playback of a sequence. A sequence playing back at a rate of 1 runs at 1 beat per second, and is following absolute time. Known specified types are \"chord\", \"clef\", \"key\", \"meter\", \"note\", \"param\", \"rate\", \"sequence\", \"start\", \"stop\" and \"text\". Additional parameters depend on `type`. Types are not limited to those specified and consumers are expected to ignore event types they do not support."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"description": "Full documentation at https://github.com/soundio/sequence/"
}