Schemas / Music
rig.music.clock
v0.31.0 · draft 8 fields 1 required
Fields
| Field | Type | Meaning | |
|---|---|---|---|
ticksPerQuarter |
int | required | Pulses per quarter (e.g. 96) |
phaseTicks |
float | optional | Optional. Running tick count; absent = 0 |
swingAmount |
float | optional | Optional. 0 = straight; absent = 0 |
swingSubdiv |
int | optional | Optional. Swing subdivision; absent = 2 |
externalSync |
bool | optional | Optional. External writer owns phase; absent = false |
syncBeat |
float | optional | External beat; required when externalSync |
syncPhase |
float | optional | External phase 0-1; required when externalSync |
syncPeriodBars |
float | optional | Optional. External sync period in bars |
Tick derivation from transport (or external sync). Format when present.
Does not own bpm - read rig.music.transport.
Product protocol names stay out of the schema id.
Fulfillments that own the beat/phase timeline (for example Ableton Link via a host pack) set externalSync and write syncBeat / syncPhase each Update. They do not invent a parallel tempo field - bpm stays on rig.music.transport.
JSON Schema
Resolves at https://rig.works/schemas/rig.music.clock.schema.json —
raw file.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://rig.works/schemas/rig.music.clock.schema.json",
"title": "rig.music.clock",
"type": "object",
"additionalProperties": false,
"properties": {
"ticksPerQuarter": {
"$ref": "./_defs.schema.json#/$defs/int"
},
"phaseTicks": {
"$ref": "./_defs.schema.json#/$defs/float"
},
"swingAmount": {
"$ref": "./_defs.schema.json#/$defs/float"
},
"swingSubdiv": {
"$ref": "./_defs.schema.json#/$defs/int"
},
"externalSync": {
"$ref": "./_defs.schema.json#/$defs/bool"
},
"syncBeat": {
"$ref": "./_defs.schema.json#/$defs/float"
},
"syncPhase": {
"$ref": "./_defs.schema.json#/$defs/float"
},
"syncPeriodBars": {
"$ref": "./_defs.schema.json#/$defs/float"
}
},
"required": [
"ticksPerQuarter"
]
}