# pattern defines reusable rhythmic motifs mapped onto a stream of triggers. patterns impose local structure and phrasing atop incoming onset lists, regardless of whether they are generated by `grid` (metrical) or `field` (non-metrical) domains. ## families * id 0 fixed pattern * description: plays the same on/off or velocity sequence every cycle * real-world analogy: drum machine step sequence * notes: * a: pattern index or morph position in a preset bank * b: density trim (0 = mute, 1 = full pattern) * input: accepts any trigger stream, field or grid * id 1 rotating shift * description: circularly shifts the pattern each repetition * real-world analogy: rotating clave, staggered motif * notes: * a: shift length (scaled to trigger stream length) * b: shift direction (0 = left, 1 = right) * produces variation while preserving content * id 2 transforming * description: modifies the pattern using operations like reverse, invert, or retrograde * real-world analogy: classical variation technique * notes: * a: transformation type (from ops list) * b: transformation depth or mix * enables evolving phrasing from static seeds ## why these were chosen * fixed: base unit of repetition and memory * rotating shift: variation through offset * transforming: generative expansion from single motifs together they cover static repetition, controlled change, and structural transformation — applicable to any sequence of trigger times, metrical or not. ## what’s not included * fully procedural pattern generation (handled by `density` or `generative` domains) * concatenation or chaining of patterns (handled at the `structure` layer) * pattern-reactive feedback (disallowed by the system’s static design) ## conclusion `pattern` brings modular phrasing to any onset stream — whether locked to a grid or distributed by a natural field. these three forms offer a minimal and powerful basis for local temporal structure, without violating the system's deterministic and parametric constraints.