SIREN v7 — EIGHT-PARTIAL OPERATORS ================================= The 16-byte v6 core is retained inside a 32-byte operator: 0100 + operator * 20 (all addresses and offsets below hexadecimal). 00–01 Frequency / musical pitch (8000 = A4, 256 steps per semitone) 02–03 Pulse width in ordinary mode; stiffness in additive mode (word * 1e-7) 04 Existing gate / waveform / sync / test controls 05 Attack / decay 06 Sustain / release 07 Extra waveform / combination controls; in additive mode, bit i inverts the right channel of partial i (180°) 08 Modulation source (low nibble), method (bits 4–6) 09 Modulation depth 0A Self-feedback amount 0B Phase skew; noise color in ordinary noise mode 0C–0D Custom-envelope pointer 0E Existing pitch / noise / restart / envelope / retrigger flags 0F NOTE command, 0–127 starts a MIDI note, FF releases it 10 BANK: additive bit 7; extension bit 6; sum-feedback bit 5; preset bits 3–4; active partial count minus one in bits 0–2 11 Leader index for extensions (low nibble) 12 First partial number, zero interpreted as one 13 Weight response byte 14–17 Eight weight nibbles, low nibble first 18–1B Eight signed tuning nibbles: -8..7, four cents per step 1C–1F Eight stereo nibbles: 8 = center, 0 = left, 15 = near right BANK presets: 0 flat, 1 saw (1/n), 2 odd (1/n), 3 triangle (alternating odd 1/n^2). Weight 0 is off; 15 is unity, 14 is -3 dB, down to -42 dB. This is an absolute attenuation of the preset, not the earlier proposed unity-at-8 encoding. Signed triangle weights come from the preset. Frequencies: f_n = n*f_1*sqrt((1+B*n*n)/(1+B)), then residual cents offset. Each partial has its own phase. Above 22 kHz weights fade to zero at 24 kHz. Skew and feedback can create sidebands; this first prototype has no oversampling mode. Pure finite banks omit frequencies beyond Nyquist. Extensions attach DIRECTLY to a non-extension additive leader. They inherit pitch, stiffness, trigger and output envelope, keep their own weight response, residual tuning, and stereo positions, and consume no extra mixer slot. FIRST=9 extends bandwidth; FIRST=1 adds another detuned string layer. Response bits 7–6 select 00 spring, 01 linear, 10 rounded S, 11 exponential. The special byte 00 is immediate. q=low six bits; T=2^(q/5)/600 seconds. Linear/S modes arrive after T; exponential uses T90=T. Spring has fixed 0.69 damping ratio and preserves velocity through target changes. Targets latch at CONTROL_HZ, transitions advance at 48 kHz. A new target starts from the current value. Equal repeated targets do not restart motion. Feedback is fundamental-only when BANK bit 5 is clear; otherwise it uses the weighted combined bank, divided by max(1,sum(abs(weights))). Feedback is sample-delayed and taken before stereo. All extensions participate in the same leader evaluation, independent of their register index. AM on an additive operator affects only its first partial, allowing one of the ordinary noise operators to supply the hammer transient without a mixer slot. Other ordinary-wave controls retain v6 behavior. Mixer/effects mirror v6 at +0100. A stereo additive leader takes one slot. Pan attenuates the corresponding side; effects send receives the stereo average. Routing through a mono filter deliberately collapses stereo. SID-friendly 0040–005F accesses remain alternate paths to the same first three operators, not a separate synthesizer. PIANO GUEST TRIAL ---------------- The piano runs as an ordinary FANCO guest. It writes these registers at 600 Hz; the runtime uses the same SIREN implementation as other programs. The current trial assigns six mixer slots to additive string voices and two to ordinary noise operators through two native low-pass filters. Six extension banks supply upper string partials. Attack channels alternate and steal the older attack when both are occupied. Four delay lines supply reverb. The offline builder fits attack amplitude knots from the reference body sound and calibrates their gains against native filtered noise. The image contains register parameters and guest code. The previous multi-band body response and listening quality remain comparison targets. Build with bun v7/build-piano.ts . This writes the six-voice trial to var/piano/v7-piano.fan and an eight-string-voice comparison without the independent noise channels to var/piano/v7-piano-eight.fan. The local /v7/?program=siren page loads the six-voice image. The file player at /v7/?program=file can open either image.