AUDIO
Source snapshot · 12 October 2026

Prepared signal processing

FIR convolution

FirConvolver copies 1..=65,536 finite impulse taps and allocates a history ring during construction. Its f64 direct convolution has zero algorithmic block latency and an impulse-length-minus-one tail. Processing cost is O(taps) per sample: this is suitable for short responses and does not establish a deadline for the maximum size. Response replacement requires re-preparation; no live crossfade is supplied. Tests compare an independent finite convolution sum and verify reset/partition continuity.

PartitionedConvolver supplies a separate uniform overlap-add FFT engine for 1..=262,144 finite f64 taps. A power-of-two partition of 16..=4,096 samples sets the exact algorithmic latency; caller block sizes can vary freely. Each boundary transforms the new input, sums delayed input spectra against response partitions, and combines inverse-transform output with the previous overlap. Feed zeros to flush the declared tail of latency plus taps minus one. Reset clears every history buffer while retaining the prepared response. Preparation owns the response spectra, input spectrum ring and scratch; processing/reset allocate nothing. Work is concentrated at partition boundaries, with no deadline claim, zero-latency head, nonuniform partitioning, crossfade or automatic worker setup. Tests compare against independent direct sums, exercise arbitrary caller blocks, maximum-length delayed impulses, reset and heap instrumentation. See decision 0031.