Schemas / Music

rig.music.clock

v0.31.0 · draft 8 fields 1 required

Fields

FieldTypeMeaning
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.jsonraw 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"
  ]
}