# decorators defines partial-level augmentations such as detuning, sideband FM, or noise injections. forms also control how these effects are applied across the partial spectrum — randomly, periodically, or by region. ## partial decorator families * id 0: detuned twin * behaviour * adds a copy of the partial detuned by ±cents and mixed back in * parameters * a = detune amount in cents (0 = unison … 1 = 50 ¢) * b = level of twin relative to main (0 = mute … 1 = equal loudness) * id 1: sideband fm * behaviour * applies frequency-modulation to create upper + lower sidebands * parameters * a = modulation index (0 = none … 1 = strong) * b = modulator ratio (0 = 0.25 × carrier … 1 = 4 × carrier) * id 2: noise burst * behaviour * injects a short filtered-noise pulse at note onset for the partial * parameters * a = burst duration fraction of global attack (0 = skip … 1 = full attack span) * b = burst level (0 = silent … 1 = equal to partial peak) * id 3: lfo tremolo * behaviour * multiplies partial by a low-frequency oscillator to create amplitude tremolo * parameters * a = lfo rate hz (0 = 0.1 hz … 1 = 20 hz) * b = depth (0 = no tremolo … 1 = 100 % depth) ## decorator spread families * id 0: random subset * behaviour * each partial is decorated with probability `p` * parameters * a = probability `p` (0 = never … 1 = always) * b = rng seed or phase (continuous 0…1 to vary patterns) * id 1: periodic nth * behaviour decorate every k-th* partial, starting at offset `o` * parameters * a = period `k` mapped 1…16 (1 = all partials, 16 = every 16th) * b = phase offset `o` (0 = start at partial 1 … 1 = start at partial k) * id 2: band-based * behaviour * apply decorator only to partials whose frequency lies inside a band * parameters * a = lower normalised cutoff (0 = fundamental … 1 = nyquist) * b = upper normalised cutoff (must be ≥ a) ## usage pattern - choose one decorator family and set its `a,b` for how each affected partial will be processed - choose one spread family and set its `a,b` for which partials receive the decorator - optional: automate parameters over time or morph between several decorator+spread pairs because both layers are continuous, you can interpolate smoothly between no decoration and heavy processing, or fade decorations in and out across the spectrum without clicks or discontinuities. ## example presets * shimmer chorus * decorator = detuned twin (`a` = 0.15 ≈ 15 ¢, `b` = 0.5) * spread = periodic nth (`a` = 2 → every 2nd partial, `b` = 0) * metallic grit * decorator = sideband fm (`a` = 0.8, `b` = 0.5) * spread = band-based (`a` = 0.3, `b` = 1) - hits mids and highs only these presets illustrate how a single decorator family combined with a different spread family yields very different textural results while remaining within the fully additive, parameter-smooth framework.