app.atloop.project

atloop.app

Documentation

An ATLoop loop: the editable shape and line data for one belt project.

main record

An ATLoop loop: the editable shape and line data for one belt project.

Record Key tid Timestamp-based ID

Properties

beltRate ref #beltRate Optional

No description available.

bpm integer Required

No description available.

minimum: 40maximum: 240
catalogue 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 bytes
Known values: core-audio-v1
formatVersion integer Required

No description available.

minimum: 1maximum: 1000
generator string Optional

Random generator that produced the loop, if any.

maxLength: 64 bytes
Known values: groove-v1
lines array of ref #line Optional

No description available.

maxLength: 256 items
loopSteps integer Required

No description available.

minimum: 4maximum: 128
percussion array of ref #percussion Optional

No description available.

maxLength: 1024 items
previewAudio blob Optional

No description available.

maxSize: 5.0 MB
previewImage blob Optional

No description available.

maxSize: 1.0 MB
scale ref #scale Required

No description available.

soundPack string Required

No description available.

maxLength: 64 bytes
Known values: core-v1
title string Required

No description available.

maxLength: 640 bytesmaxGraphemes: 64 graphemes
updatedAt 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"
}
beltRate object

Speed each belt holds, in hundredths of normal. Negative runs the belt backwards.

Properties

line integer Required

No description available.

minimum: -400maximum: 400
rhythm integer Required

No description available.

minimum: -400maximum: 400
View raw schema
{
  "description": "Speed each belt holds, in hundredths of normal. Negative runs the belt backwards.",
  "properties": {
    "line": {
      "maximum": 400,
      "minimum": -400,
      "type": "integer"
    },
    "rhythm": {
      "maximum": 400,
      "minimum": -400,
      "type": "integer"
    }
  },
  "required": [
    "line",
    "rhythm"
  ],
  "type": "object"
}
line object

No description available.

Properties

color integer Optional

No description available.

minimum: 0maximum: 16777215
gain integer Optional

No description available.

minimum: 0maximum: 1000
id string Required

No description available.

maxLength: 64 bytes
instrument string Optional

No description available.

maxLength: 32 bytes
Known values: sine, triangle, piano, square, saw, glass, bass, sub, bsaw, bpluck, growl, pulse
points array of ref#point Required

No description available.

maxLength: 512 itemsminLength: 1 items
role string Required

No description available.

Known values: melody, bass
width integer Optional

No description available.

minimum: 0maximum: 1000
View raw schema
{
  "properties": {
    "color": {
      "maximum": 16777215,
      "minimum": 0,
      "type": "integer"
    },
    "gain": {
      "maximum": 1000,
      "minimum": 0,
      "type": "integer"
    },
    "id": {
      "maxLength": 64,
      "type": "string"
    },
    "instrument": {
      "knownValues": [
        "sine",
        "triangle",
        "piano",
        "square",
        "saw",
        "glass",
        "bass",
        "sub",
        "bsaw",
        "bpluck",
        "growl",
        "pulse"
      ],
      "maxLength": 32,
      "type": "string"
    },
    "points": {
      "items": {
        "ref": "#point",
        "type": "ref"
      },
      "maxLength": 512,
      "minLength": 1,
      "type": "array"
    },
    "role": {
      "knownValues": [
        "melody",
        "bass"
      ],
      "type": "string"
    },
    "width": {
      "maximum": 1000,
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "id",
    "role",
    "points"
  ],
  "type": "object"
}
percussion object

No description available.

Properties

color integer Optional

No description available.

minimum: 0maximum: 16777215
id string Required

No description available.

maxLength: 64 bytes
shape string Required

No description available.

Known values: circle, square, triangle, star
size integer Optional

No description available.

minimum: 0maximum: 1000
tick integer Required

No description available.

minimum: 0maximum: 65535
voice string Optional

No description available.

maxLength: 32 bytes
Known values: kick, tom, conga, boom, snare, clap, rim, block, closed-hat, open-hat, shaker, cowbell, crash, ride, zap, sweep
View raw schema
{
  "properties": {
    "color": {
      "maximum": 16777215,
      "minimum": 0,
      "type": "integer"
    },
    "id": {
      "maxLength": 64,
      "type": "string"
    },
    "shape": {
      "knownValues": [
        "circle",
        "square",
        "triangle",
        "star"
      ],
      "type": "string"
    },
    "size": {
      "maximum": 1000,
      "minimum": 0,
      "type": "integer"
    },
    "tick": {
      "maximum": 65535,
      "minimum": 0,
      "type": "integer"
    },
    "voice": {
      "knownValues": [
        "kick",
        "tom",
        "conga",
        "boom",
        "snare",
        "clap",
        "rim",
        "block",
        "closed-hat",
        "open-hat",
        "shaker",
        "cowbell",
        "crash",
        "ride",
        "zap",
        "sweep"
      ],
      "maxLength": 32,
      "type": "string"
    }
  },
  "required": [
    "id",
    "tick",
    "shape"
  ],
  "type": "object"
}
point object

No description available.

Properties

pitch integer Required

MIDI note number times 100, so it is device independent.

minimum: 0maximum: 12700
tick integer Required

Normalised position in the loop; one loop is 65536 ticks. May exceed 65535 for a line that crosses the loop seam.

minimum: 0maximum: 131071
View raw schema
{
  "properties": {
    "pitch": {
      "description": "MIDI note number times 100, so it is device independent.",
      "maximum": 12700,
      "minimum": 0,
      "type": "integer"
    },
    "tick": {
      "description": "Normalised position in the loop; one loop is 65536 ticks. May exceed 65535 for a line that crosses the loop seam.",
      "maximum": 131071,
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "tick",
    "pitch"
  ],
  "type": "object"
}
scale object

No description available.

Properties

mode string Required

No description available.

maxLength: 32 bytes
Known values: major-pentatonic, minor-pentatonic, major, minor
root integer Required

Pitch class of the tonic, 0 = C.

minimum: 0maximum: 11
View raw schema
{
  "properties": {
    "mode": {
      "knownValues": [
        "major-pentatonic",
        "minor-pentatonic",
        "major",
        "minor"
      ],
      "maxLength": 32,
      "type": "string"
    },
    "root": {
      "description": "Pitch class of the tonic, 0 = C.",
      "maximum": 11,
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "root",
    "mode"
  ],
  "type": "object"
}

Lexicon Garden

@