# position static placement: center, stereo spread, frequency-dependent bias, or randomized positions. ## introduction The position domain sits in the spatial layer and assigns each source a fixed location in the stereo or multichannel field. All placements are precomputed and deterministic-no time-varying panning or movement (handled by `motion`), nor spreading beyond point-size (handled by `diffusion`). Given two parameters `a, b ∈ [0,1]`, each form maps voices or partials to spatial coordinates once and for all. ## overview ### 0. `stereo_pan` - Behavior: places the source at a fixed point along the left–right axis, with optional stereo width - Analogy: setting the balance knob on a mixing console - Parameters: - `a`: pan position (−1.0 full left → 0 center → +1.0 full right) - `b`: stereo spread (0 = strict mono → 1 = full dual-channel width) ### 1. `multi_point` - Behavior: distributes voices or partials evenly among n discrete pan anchors around the listening field - Analogy: seating musicians at equally spaced positions on a semicircle - Parameters: - `a`: number of anchors (2…8) - `b`: starting-anchor rotation (0…1 wraps to 0…n–1 offset) ### 2. `frequency_bias` - Behavior: pans low vs. high frequencies toward opposite sides of the field, with controllable cutoff and slope - Analogy: EQ-driven stereo tilt where bass sits left and treble sits right (or vice versa) - Parameters: - `a`: cutoff frequency (0 → 20 Hz … 1 → 20 kHz) - `b`: bias slope (−1 = all lows left/highs left → 0 = neutral → +1 = lows left/highs right) ### 3. `random_spread` - Behavior: assigns each voice or partial a pseudorandom static pan position within a specified range - Analogy: dropping pebbles randomly across a tabletop - Parameters: - `a`: random seed (normalized 0…1, determining the pseudorandom mapping) - `b`: maximum spread (0 = all at center → 1 = full stereo width) ## parameter behavior summary - stereo\_pan - `a`: pan location on the L–R axis - `b`: width of stereo image - multi\_point - `a`: how many fixed pan points to use - `b`: rotates the anchor set's starting point - frequency\_bias - `a`: spectral cutoff dividing low vs. high - `b`: strength and direction of pan bias - random\_spread - `a`: seed for deterministic randomization - `b`: size of the allowed panning range ## why these were chosen - Core static placements: covers single-point panning, multi-anchor arrays, spectral biasing, and pseudo-random layouts. - Orthogonal mechanisms: no form duplicates another's behavior without additional data or parameters. - Two-parameter clarity: one control typically selects topology (position count, cutoff) and the other shapes extent or offset. - Fully precomputed: ensures each voice's location is known before playback, preserving deterministic synthesis. ## what is not included - Time-varying movement: handled by the `motion` domain. - Spatial spread or blur: managed by `diffusion`. - Dynamic repositioning on events: onset-based changes belong in structural or onset layers. - User interface concerns (labels, listener orientation): out of scope for pure spatial logic. ## conclusion The position domain offers a concise, two-parameter toolkit for placing sound sources in space. Its forms provide static, deterministic layouts-from simple pan to complex anchor arrays-laying the groundwork for motion and diffusion to sculpt dynamic and enveloping spatial experiences.