unityscalemathematik

unityscalemathematik · utilities

Bipolar CV-shaping utility with three independent channels: a UNITY scaler (input * atten) plus two attenuvert sections (A, B) whose curve knob morphs the response from linear (k=1) to steep exponential (k=3) via y = sign(x) * |x|^k * atten. Sign is preserved across the curve morph so the transform stays bipolar. CV inputs on every atten/curve knob — useful for envelope shaping, LFO sculpting, or driving any modulation through a tunable response curve.

A bipolar CV-shaping utility with three independent channels. UNITY is a plain attenuverter — out = in · atten, with atten swinging -1..+1 so it can scale, attenuate, OR invert a signal. A and B are the same attenuverter PLUS a curve morph: each adds a knob that bends the response from linear toward exponential. The shaping math preserves the sign of the input and raises its magnitude to a power: y = sign(x)·|x|^k·atten where k = 1 + 2·curve runs from 1 (linear) to 3 (steep expo). A steep curve PIVOTS the response about a magnitude of 1: below it small signals are pushed further down (0.5 in leaves at 0.125 at full curve, 0.25 in at 0.0156), and ABOVE it the same curve EXPANDS — a ±2 input leaves at ±8, a ±3 at ±27. So it tames a hot LFO whose peaks sit at or under 1, and it is a gain stage for anything hotter; the crossover is exactly |1|, and unity is the only magnitude the curve leaves alone. The map is continuous through the bipolar zero crossing (no kink). Each atten and each curve also has its own CV input. There is a DSP worklet for the per-sample math.

the faceplate

unityscalemathematiku_incvu_atten_cvcva_incva_atten_cvcva_curve_cvcvb_incvb_atten_cvcvb_curve_cvcvu_outcva_outcvb_outcvaudiocvgatepitch
8 inputs · 3 outputs · 5 params

inputs

idcablewhat it does
u_incvUNITY-section signal input. Passed through the linear attenuverter: u_out = u_in · unityAtten.
control voltage (CV)
u_atten_cvcvCV that sums into the UNITY attenuverter amount (linear), modulating how much the UNITY section scales/inverts its input.
control voltage (CV); modulates unityAtten (additive offset — ±1 CV sweeps the full range, centered on the knob)
a_incvA-section signal input. Passed through the curve-morphed attenuverter: a_out = sign·|a_in|^k·aAtten.
control voltage (CV)
a_atten_cvcvCV that sums into the A attenuverter amount (linear) — voltage control over A's scale/invert.
control voltage (CV); modulates aAtten (additive offset — ±1 CV sweeps the full range, centered on the knob)
a_curve_cvcvCV that sums into the A curve amount (linear), sliding A's response between linear and exponential under modulation.
control voltage (CV); modulates aCurve (additive offset — ±1 CV sweeps the full range, centered on the knob)
b_incvB-section signal input. Same curve-morphed attenuverter shape as A: b_out = sign·|b_in|^k·bAtten.
control voltage (CV)
b_atten_cvcvCV that sums into the B attenuverter amount (linear).
control voltage (CV); modulates bAtten (additive offset — ±1 CV sweeps the full range, centered on the knob)
b_curve_cvcvCV that sums into the B curve amount (linear), modulating B's linear↔exponential bend.
control voltage (CV); modulates bCurve (additive offset — ±1 CV sweeps the full range, centered on the knob)

outputs

idcablewhat it does
u_outcvUNITY-section output, u_in · unityAtten — the plainly attenuverted (scaled, possibly inverted) signal.
control voltage (CV)
a_outcvA-section output, sign(a_in)·|a_in|^k·aAtten with k from the A curve — the sign-preserving curve-shaped attenuvert.
control voltage (CV)
b_outcvB-section output, the same sign-preserving curve-shaped attenuvert as A driven by B's own atten + curve.
control voltage (CV)

params

idlabelrangedefaultcurve
unityAttenUnity-1..11linear
aAttenA Att-1..11linear
aCurveA Crv0..10linear
bAttenB Att-1..11linear
bCurveB Crv0..10linear

controls

controlwhat it does
A AttA-section attenuverter, linear -1..+1 (default +1). Scales A's curve-shaped output; negative values invert it.
A CrvA-section curve, linear 0..1 (default 0 = linear). 0 is a straight attenuvert; turning it up bends the response toward exponential (exponent k goes 1→3). It PIVOTS about an input magnitude of 1, which is the only magnitude it leaves alone: below 1 it pushes signals further down (0.5 in leaves at 0.125 at full curve), above 1 it lifts them (2 in leaves at 8). Sign is always kept.
B AttB-section attenuverter, linear -1..+1 (default +1). Scales B's curve-shaped output; negative inverts.
B CrvB-section curve, linear 0..1 (default 0 = linear), bending B's response from linear toward steep exponential exactly like A's curve — same pivot at an input magnitude of 1, same expansion above it.
UnityUNITY attenuverter, linear -1..+1 (default +1 = unity passthrough). +1 passes the input as-is, 0 mutes, -1 inverts; in between it attenuates (and flips below 0).

source

unityscalemathematik.ts on GitHub.

Generated from packages/web/src/lib/{audio,video}/module-registry.ts · repo