objects.sync_line
sync_line
A timing origin with no musical content, and the instants on it.
Music in OMK has no origin: a position only ever means “how far from that other event” (graph.OmkGraph.relative_onset, paper/mathy.md §5.4). That is the right default for notated music, but some scores take their timing from somewhere outside the notation: a stopwatch, a film, a tape, a recorded performance being transcribed.
A SyncLine is that somewhere. It is a named origin in a declared temporal system, holding SyncPoints – single instants at a signed distance from it – that musical events pin to with ordinary SIMULTANEOUS edges (graph.OmkGraph.sync_event). Asserting “measure 10 beat 1 lands five seconds in” is then two facts the graph can hold and check, and fitting a tempo curve through them is a consumer’s job, not core’s: a SyncLine converts nothing and assumes no tempo.
What a sync line is not:
- It is not a line in the graph’s sense. Elsewhere a line is a chain of NEXT edges identified by its head (see
graph); aSyncLineis a single node, and its points are never joined to each other. “Line” is how the thing is pictured, not how it is built. - It is not musical content. A
SyncPointhas no tones, no duration and no notation. A reference line that does have content – a bell pattern, a colotomic structure, a drum loop – is an ordinary line that other lines pin to, and needs nothing from this module. - It is not a temporal conversion. A sync line in clock time and music in metrical time stay in their own systems; see
graph.OmkGraph.relative_onsetfor what that means for the timing walk.
Subclasses are expected to be media timelines (an audio file, a video reel, a MIDI file), which differ from the base only in which temporal system they declare and in what resource they point at. Nothing here is specific to clock time.
A second use is a bar grid: a sync line in the music’s own temporal system, with a point at the start of a score and one at every bar line, to which each part pins its head and its divisions. It records, once and symmetrically, that bar n is bar n in every part (what a MusicXML file asserts by its measures), and it gives score-wide instants (a rehearsal letter, a coda) a place to sit, without making measures structural: every line still carries its own divisions, or none, and the grid can be taken away (graph.OmkGraph.remove_sync_line) leaving the music as it was. A Score names its grid with graph.OmkGraph.add_sync_line_to_score.
Classes
| Name | Description |
|---|---|
| SyncLine | A timing origin that music can be measured against, with no content of its own. |
| SyncPoint | One instant on a SyncLine, at a signed distance from that line’s origin. |