# ordering determines the sequence in which segments are played - linear, deterministic "random," palindromic, or looped - defining macro-temporal navigation over a pre-segmented timeline. ## introduction the `ordering` domain sits in the structure layer, immediately after segmentation and before hierarchy or interpolation.\ given a fixed list of segments (from `segmentation`), it outputs a precomputed sequence of segment indices.\ no runtime decision-making or external randomness: every order is fully determined by two normalized parameters `a` and `b`. ## overview each form yields an infinite or bounded sequence of segment references: ### 0. `linear` - behavior: walks through segments in numeric order, optionally reversed - analogy: reading pages front-to-back or back-to-front - parameters: - `a`: start-index offset (0 → first segment, 1 → last segment) - `b`: direction flag (0 → forward, 1 → backward) ### 1. `random_shuffle` - behavior: deterministically permutes the segment list using a seed derived from `a`; interpolation by `b` blends between identity and full shuffle - analogy: shuffling a deck with a tunable "riffle strength" - parameters: - `a`: shuffle seed (0 → seed 0, 1 → max seed) - `b`: shuffle intensity (0 → no change, 1 → full random permutation) ### 2. `palindrome` - behavior: plays segments forward then in reverse, back-and-forth without re-repeating endpoints (unless toggled) - analogy: a ping-pong ball bouncing between walls - parameters: - `a`: endpoint repetition (0 → do not repeat first/last, 1 → repeat) - `b`: phase offset within the palindromic cycle (0 → cycle start, 1 → just before repeating) ### 3. `windowed_loop` - behavior: isolates a contiguous sub-range of segments and repeats that window indefinitely - analogy: looping a favorite four-bar phrase on a sampler - parameters: - `a`: window start position (fractional 0 → first segment, 1 → last) - `b`: window size (fraction of total segments, mapping 0→1 to 1 segment→all segments) ## parameter behavior summary - `linear` - `a`: selects which segment to begin playback - `b`: chooses play direction - `random_shuffle` - `a`: picks a deterministic seed for permutation - `b`: controls blend from original order (0) to fully shuffled (1) - `palindrome` - `a`: toggles whether cycle endpoints repeat - `b`: shifts starting point within the forward-reverse cycle - `windowed_loop` - `a`: sets the fractional start of the loop window - `b`: determines window length as a fraction of total segment count ## why these were chosen - core navigational modes: linear, shuffled, mirrored, and loop-focused orders cover the main styles of macro-temporal arrangement - orthogonality: each form provides a distinct ordering mechanism irreducible to the others without extra parameters or data - two-parameter purity: both `a` and `b` drive meaningful, musically relevant variations in sequence structure - deterministic repeatability: all permutations and cycles are fully determined by `a`, `b`, and the known segment list ## what is not included - real-time randomness or live reseeding: all "random" behavior is baked in at design time - nested or hierarchical reordering: segment nesting belongs to `hierarchy` - time-based transitions or crossfades between orders: out of scope for macro navigation - content-aware ordering (e.g. based on segment loudness): purely structural, not data-driven ## conclusion the `ordering` domain codifies four essential, deterministic strategies for sequencing pre-segmented material - linear, shuffled, palindromic, and looped - each navigable with just two parameters, preserving the system's ethos of parametric purity and full precomputation.