# at.atmosynth.arrangement

> Published by [atmosynth.at](https://lexicon.garden/identity/did:plc:fzjkahpwapmoqxybwdjb6ysf)

✓ This is the authoritative definition for this NSID.

## Description

An arrangement: tracks of clips over one timeline, mixed through busses into a master, with the tempo, the meter and the key it is counted in. Its instruments and effects are patches held inside it whole, and what it took from other people's records it holds as copies that remember where they came from. Parts that other people wrote for it in their own repositories are included by address.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:fzjkahpwapmoqxybwdjb6ysf/at.atmosynth.arrangement)
- [Documentation](https://lexicon.garden/lexicon/did:plc:fzjkahpwapmoqxybwdjb6ysf/at.atmosynth.arrangement/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:fzjkahpwapmoqxybwdjb6ysf/at.atmosynth.arrangement/examples)

## Definitions

### `at.atmosynth.arrangement#includedPart`

**Type**: `object`

One part this arrangement includes, and how its creator mixes it.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `mix` | `array` | No | The arrangement's creator's mix of the part's tracks, which stands in place of the part's own strips and destinations wherever it names a track. A track it does not name is heard as the part writes it. |
| `part` | `ref` → `com.atproto.repo.strongRef` | Yes | The part, and the version of it that was included. The part is heard as it is now; the version says what the arrangement's creator agreed to, so a change since can be shown to them. |

### `at.atmosynth.arrangement#loopRange`

**Type**: `object`

A range of the timeline, in ticks, played over and over while the loop is on.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `end` | `integer` | Yes | Where the range ends, in ticks: after `start`. |
| `on` | `boolean` | No | Whether the loop is on. Optional: absent is off, and only `true` is written. |
| `start` | `integer` | Yes | Where the range starts, in ticks. |

### `at.atmosynth.arrangement`

**Type**: `record`

An arrangement, held in its creator's own repository.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `createdAt` | `string` (datetime) | Yes |  |
| `description` | `string` | No |  |
| `keys` | `array` | No | The key map: the first point at 0, each later than the one before. Optional: absent says no key, which is an arrangement's to leave unsaid. |
| `length` | `integer` | No | Where the arrangement ends, in ticks. Optional: absent ends it with its last clip. |
| `license` | `ref` → `at.atmosynth.defs#license` | No |  |
| `lineage` | `array` | No | Where the arrangement came from: the arrangement it was forked from, the patch it was made of, and every record anything in it was imported from, so its credits are complete without reading anything else. |
| `loop` | `ref` → `#loopRange` | No | The range its creator loops over while working on it. Optional: absent is no loop range. A reader that does not loop, such as a renderer, ignores it: an arrangement played through is played once, from start to end. |
| `markers` | `array` | No | Named moments, in order of `at`. |
| `meter` | `array` | No | The meter map: the first point at 0, each later one on a bar line of the meter before it. Optional: absent is 4/4 throughout. |
| `name` | `string` | Yes |  |
| `openToParts` | `boolean` | No | Whether parts offered to this arrangement and not yet included are shown to everybody, rather than to its creator alone. Anybody may write a part naming any arrangement in their own repository; this only decides what the arrangement's own page lists. Optional: absent is its creator alone, and only `true` is written. |
| `parts` | `array` | No | Parts other people wrote for this arrangement, in their own repositories, which its creator has included. An included part is heard as it is now; a part its writer has since deleted is no longer heard. |
| `tags` | `array` | No | Freely created tags, lower-cased on write. |
| `tempo` | `array` | Yes | The tempo map: the first point at 0, each later than the one before. One point is an arrangement at one tempo. A player that is a host with a clock of its own, a DAW, plays at its tempo instead. |
| `tracks` | `array` | Yes | The tracks, in the order they are shown. One of them is the bus `master`, which every track reaches in the end and which alone goes to the speakers. |

### `at.atmosynth.arrangement#partMix`

**Type**: `object`

The arrangement creator's mix of one track of an included part.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `strip` | `ref` → `at.atmosynth.defs#strip` | No |  |
| `to` | `string` | No | The id of the bus in this arrangement the track goes to, in place of the part's own `to`. |
| `track` | `string` | Yes | The id of the track in the part. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "includedPart": {
      "description": "One part this arrangement includes, and how its creator mixes it.",
      "properties": {
        "mix": {
          "description": "The arrangement's creator's mix of the part's tracks, which stands in place of the part's own strips and destinations wherever it names a track. A track it does not name is heard as the part writes it.",
          "items": {
            "ref": "#partMix",
            "type": "ref"
          },
          "maxLength": 32,
          "type": "array"
        },
        "part": {
          "description": "The part, and the version of it that was included. The part is heard as it is now; the version says what the arrangement's creator agreed to, so a change since can be shown to them.",
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        }
      },
      "required": [
        "part"
      ],
      "type": "object"
    },
    "loopRange": {
      "description": "A range of the timeline, in ticks, played over and over while the loop is on.",
      "properties": {
        "end": {
          "description": "Where the range ends, in ticks: after `start`.",
          "minimum": 1,
          "type": "integer"
        },
        "on": {
          "description": "Whether the loop is on. Optional: absent is off, and only `true` is written.",
          "type": "boolean"
        },
        "start": {
          "description": "Where the range starts, in ticks.",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "start",
        "end"
      ],
      "type": "object"
    },
    "main": {
      "description": "An arrangement, held in its creator's own repository.",
      "key": "tid",
      "record": {
        "properties": {
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "maxLength": 3000,
            "type": "string"
          },
          "keys": {
            "description": "The key map: the first point at 0, each later than the one before. Optional: absent says no key, which is an arrangement's to leave unsaid.",
            "items": {
              "ref": "at.atmosynth.defs#keyPoint",
              "type": "ref"
            },
            "maxLength": 1024,
            "type": "array"
          },
          "length": {
            "description": "Where the arrangement ends, in ticks. Optional: absent ends it with its last clip.",
            "minimum": 1,
            "type": "integer"
          },
          "license": {
            "ref": "at.atmosynth.defs#license",
            "type": "ref"
          },
          "lineage": {
            "description": "Where the arrangement came from: the arrangement it was forked from, the patch it was made of, and every record anything in it was imported from, so its credits are complete without reading anything else.",
            "items": {
              "ref": "at.atmosynth.defs#lineage",
              "type": "ref"
            },
            "maxLength": 64,
            "type": "array"
          },
          "loop": {
            "description": "The range its creator loops over while working on it. Optional: absent is no loop range. A reader that does not loop, such as a renderer, ignores it: an arrangement played through is played once, from start to end.",
            "ref": "#loopRange",
            "type": "ref"
          },
          "markers": {
            "description": "Named moments, in order of `at`.",
            "items": {
              "ref": "at.atmosynth.defs#marker",
              "type": "ref"
            },
            "maxLength": 1024,
            "type": "array"
          },
          "meter": {
            "description": "The meter map: the first point at 0, each later one on a bar line of the meter before it. Optional: absent is 4/4 throughout.",
            "items": {
              "ref": "at.atmosynth.defs#meterPoint",
              "type": "ref"
            },
            "maxLength": 1024,
            "type": "array"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "openToParts": {
            "description": "Whether parts offered to this arrangement and not yet included are shown to everybody, rather than to its creator alone. Anybody may write a part naming any arrangement in their own repository; this only decides what the arrangement's own page lists. Optional: absent is its creator alone, and only `true` is written.",
            "type": "boolean"
          },
          "parts": {
            "description": "Parts other people wrote for this arrangement, in their own repositories, which its creator has included. An included part is heard as it is now; a part its writer has since deleted is no longer heard.",
            "items": {
              "ref": "#includedPart",
              "type": "ref"
            },
            "maxLength": 64,
            "type": "array"
          },
          "tags": {
            "description": "Freely created tags, lower-cased on write.",
            "items": {
              "maxLength": 128,
              "type": "string"
            },
            "maxLength": 32,
            "type": "array"
          },
          "tempo": {
            "description": "The tempo map: the first point at 0, each later than the one before. One point is an arrangement at one tempo. A player that is a host with a clock of its own, a DAW, plays at its tempo instead.",
            "items": {
              "ref": "at.atmosynth.defs#tempoPoint",
              "type": "ref"
            },
            "maxLength": 1024,
            "minLength": 1,
            "type": "array"
          },
          "tracks": {
            "description": "The tracks, in the order they are shown. One of them is the bus `master`, which every track reaches in the end and which alone goes to the speakers.",
            "items": {
              "ref": "at.atmosynth.defs#track",
              "type": "ref"
            },
            "maxLength": 256,
            "minLength": 1,
            "type": "array"
          }
        },
        "required": [
          "name",
          "tempo",
          "tracks",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "partMix": {
      "description": "The arrangement creator's mix of one track of an included part.",
      "properties": {
        "strip": {
          "ref": "at.atmosynth.defs#strip",
          "type": "ref"
        },
        "to": {
          "description": "The id of the bus in this arrangement the track goes to, in place of the part's own `to`.",
          "maxLength": 64,
          "type": "string"
        },
        "track": {
          "description": "The id of the track in the part.",
          "maxLength": 64,
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "track"
      ],
      "type": "object"
    }
  },
  "description": "An arrangement: tracks of clips over one timeline, mixed through busses into a master, with the tempo, the meter and the key it is counted in. Its instruments and effects are patches held inside it whole, and what it took from other people's records it holds as copies that remember where they came from. Parts that other people wrote for it in their own repositories are included by address.",
  "id": "at.atmosynth.arrangement",
  "lexicon": 1
}
```
