starver

Quantizable "starving" distortion The incoming signal will be quantized into stages and at each stage the signal's amplitude gets "starved" and dives back towards zero. Dive-rate can be controlled "mod" sets the size of the stages, fully clockwise would be 1 stage only->no change. Lowering the control will make the stages smaller and smaller, adding more and more stages and overtones. At each quantize-crossing the signal will be starved, like a saw returning to zero. The rate of this change can be controlled using both "damp" and "rate". Rate controls a clipper that clips the linear change of the signal. This module is a variation on the dipper module as it AM modulates the incoming signal instead of subtracting a value. Damp controls the cutoff of a filter that then damps the linearly clipped signal before subtracting it from the original signal before sending it to the output.
Author: Remco van der Most
License: BSD
Github: sss/dist/starver.axo

Inlets

frac32buffer in

Outlets

frac32buffer out

Parameters

frac32.s.map mod1

frac32.s.map.pitch damp

frac32.u.map rate

Declaration
int32_t O1;
int32_t prev;
int32_t cap1;
int32_t cap2;
Init
SINE2TINTERP(1 << 30, O1)
Control Rate
int32_t damp;
MTOF(param_damp, damp)
Audio Rate
int32_t in = inlet_in;
int32_t comp;
int32_t offs;
comp = in > prev ? (1 << 27) : -param_mod1;

int32_t rate = (comp - cap1) << 1;
rate = rate > param_rate ? param_rate : rate;
rate = rate < -param_rate ? -param_rate : rate;
cap1 = ___SMMLA(rate, damp, cap1);

outlet_out = ___SMMUL(in << 2, cap1 << 3);
prev = inlet_in;

Privacy

© 2024 Zrna Research