Synthesis oscillators and dynamics¶
Oscillator generates f64 sine, saw, square and triangle with phase-continuous
frequency changes and waveform switching. set_waveform retains phase and
frequency; changes are immediate without a crossfade. Rate is finite/positive and frequency is from zero to strictly
below Nyquist. Sine uses per-sample trig; saw/square correct edges with polyBLEP.
Triangle is a naive waveform and may alias. These profiles are not an alias-free
or deadline claim. Reset clears phase. Invalid retuning preserves frequency/phase.
EnvelopeFollower rectifies samples and applies one-pole attack/release time
constants (63.2% settling); times are 0..60 seconds and zero is instantaneous.
CompressorConfig prepares threshold -120..24 dB, ratio 1..100, knee 0..48 dB and
makeup -60..60 dB. Compressor uses an explicit sidechain and no lookahead. It
provides no hard brickwall limiting, linked channels or automatic makeup; it
uses log/pow per sample. Nonfinite audio can poison history until reset. Tests
compare independent exponential steps, static ratio/knee landmarks, sidechain
behavior, waveform phase/edge corrections and heap counts.