An ATLoop loop: the editable shape and line data for one belt project.
tid
Timestamp-based ID
Properties
beltRate
ref
#beltRate
Optional
No description available.
bpm
integer
Required
No description available.
minimum: 40maximum: 240catalogue
string
uri
Optional
A fixed address shared by every published loop. Nothing lists a collection in atproto, but links are indexed network-wide, so a common link is what makes loops discoverable.
createdAt
string
datetime
Required
An RFC 3339 formatted timestamp.
engineVersion
string
Required
Audio engine the loop was authored against. Open-ended: unknown values must not be rejected.
maxLength: 64 bytescore-audio-v1formatVersion
integer
Required
No description available.
minimum: 1maximum: 1000generator
string
Optional
Random generator that produced the loop, if any.
maxLength: 64 bytesgroove-v1lines
array
of
ref
#line
Optional
No description available.
maxLength: 256 itemsloopSteps
integer
Required
No description available.
minimum: 4maximum: 128percussion
array
of
ref
#percussion
Optional
No description available.
maxLength: 1024 itemspreviewAudio
blob
Optional
No description available.
maxSize: 5.0 MBpreviewImage
blob
Optional
No description available.
maxSize: 1.0 MBscale
ref
#scale
Required
No description available.
soundPack
string
Required
No description available.
maxLength: 64 bytescore-v1title
string
Required
No description available.
maxLength: 640 bytesmaxGraphemes: 64 graphemesupdatedAt
string
datetime
Optional
An RFC 3339 formatted timestamp.
View raw schema
{
"description": "An ATLoop loop: the editable shape and line data for one belt project.",
"key": "tid",
"record": {
"properties": {
"beltRate": {
"ref": "#beltRate",
"type": "ref"
},
"bpm": {
"maximum": 240,
"minimum": 40,
"type": "integer"
},
"catalogue": {
"description": "A fixed address shared by every published loop. Nothing lists a collection in atproto, but links are indexed network-wide, so a common link is what makes loops discoverable.",
"format": "uri",
"type": "string"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"engineVersion": {
"description": "Audio engine the loop was authored against. Open-ended: unknown values must not be rejected.",
"knownValues": [
"core-audio-v1"
],
"maxLength": 64,
"type": "string"
},
"formatVersion": {
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"generator": {
"description": "Random generator that produced the loop, if any.",
"knownValues": [
"groove-v1"
],
"maxLength": 64,
"type": "string"
},
"lines": {
"items": {
"ref": "#line",
"type": "ref"
},
"maxLength": 256,
"type": "array"
},
"loopSteps": {
"maximum": 128,
"minimum": 4,
"type": "integer"
},
"percussion": {
"items": {
"ref": "#percussion",
"type": "ref"
},
"maxLength": 1024,
"type": "array"
},
"previewAudio": {
"accept": [
"audio/mp4",
"audio/mpeg",
"audio/ogg"
],
"maxSize": 5000000,
"type": "blob"
},
"previewImage": {
"accept": [
"image/webp",
"image/png",
"image/jpeg"
],
"maxSize": 1000000,
"type": "blob"
},
"scale": {
"ref": "#scale",
"type": "ref"
},
"soundPack": {
"knownValues": [
"core-v1"
],
"maxLength": 64,
"type": "string"
},
"title": {
"maxGraphemes": 64,
"maxLength": 640,
"type": "string"
},
"updatedAt": {
"format": "datetime",
"type": "string"
}
},
"required": [
"formatVersion",
"title",
"createdAt",
"bpm",
"loopSteps",
"engineVersion",
"soundPack",
"scale"
],
"type": "object"
},
"type": "record"
}