home/ atoms/ tidal-time-as-rational

Tidal represents time as rational numbers so musical subdivisions are stored exactly as fractions without floating-point error

Tidal uses Haskell’s Rational type for time values, meaning time is represented as exact fractions (1/3, 3/8, etc.) rather than floating-point decimals. This is musically significant: floating-point time accumulates rounding errors, which causes timing drift over long sequences. Rational time avoids this entirely. The underlying assumption is that music is structured as rhythmic cycles — a belief supported across many music traditions including Indian classical music. The ‘sam’ (first beat of each cycle) is the anchoring reference point. This architecture makes polyrhythms natural to express: any rational subdivision of the cycle is exact.

Examples

E(3,8) expressed as rational offsets 0, 3/8, 3/4 — each stored exactly; no drift after 1000 cycles. Float alternative: 0, 0.375, 0.749999… accumulating error.

Assessment

Explain why Rational is preferable to Float for representing musical time; describe what a ‘sam’ is and why it matters for polyrhythm.

“In Tidal, time is rational, so that musical subdivisions may be stored accurately as simple fractions, avoiding rounding errors associated with floati”
corpus · l3-l4-making-programming-languages-to-dance-to-live-coding-w · chunk 2