chowkick

chowkick · sources · schema v1

Punchy synth-kick voice — hand-port of ChowKick by Jatin Chowdhury / chowdsp (github.com/Chowdhury-DSP/ChowKick, BSD-3-Clause). Gate-triggered single-voice kick: a tight pulse shaper (Width / Amp / Decay / Sustain) plus a gated transient-click noise burst (Amount / Decay / Cutoff + 4 noise types: Uniform / Gaussian / Pink / Velvet) PINGS a true 2-pole resonant BODY that rings a bipolar decaying sine at Freq (+ 1V/oct pitch CV). The body's pole RADIUS is set by Damping (the ring-time control: low = long boom, high = short thud), the pole ANGLE by Freq; Q sharpens the resonance; Tight adds symmetric tanh drive (fatter, odd harmonics) and Bounce an asymmetric skew (even harmonics). A per-trigger downward PITCH ENVELOPE (Pitch Amount / Pitch Decay — sweeps the body from ~3.5× Freq down to Freq on each gate) gives the kick its punch; a Drive stage adds weight + small-speaker translation; an internal 25 Hz DC blocker keeps the output bipolar. A first-order Tone LPF (50..2000 Hz) and dB Level (-60..0) form the output stage; Portamento (0..100 ms) smooths Freq under V/oct sweeps; LINK couples Q + Damping (midpoint blend) for a single "tightness" macro. Defaults ship punchy out of the box (short 0.5 ms pulse, ringing body @ damp 0.4, click @ N Amt 0.2, pitch sweep 0.6, drive 0.3, tone 2 kHz). All 20 knobs/toggles are CV-able with per-port cvScale hints (log/linear/discrete) per ADR-004. The card mirrors the source plugin's two-band UI (Pulse Shape + Resonant Filter, with a third PUNCH fader row) and live canvas previews of the envelope shape + body response. Mono audio_out. (NOTE: the earlier port shipped a coefficient bug — an inverted peaking-EQ that NOTCHED the body — so it emitted a pitchless unipolar DC blob; PR feat/chowkick-oomph replaced it with the ringing resonator + punch chain.)

A physical-modeling synth-kick voice, ported from Chowdhury DSP's ChowKick. Instead of a simple sine + envelope, it strikes a tuned 2-pole resonant filter with a shaped pulse plus a noise burst — the filter rings like a struck drum body, so the character comes from how you excite and tune that resonator. The signal path is two bands you tune separately: a PULSE SHAPE band (the click/transient and its noise) feeds a RESONANT FILTER band (the pitched body), then a pitch-sweep 'punch', drive saturation, and tone/level on the way out. The card draws a live preview of the pulse envelope and the filter's resonant peak so you can see the kick you're sculpting. Trigger it from a gate; tune the body with the Freq knob or a 1V/oct CV. Every knob also has a CV input for animated, per-hit kicks.

the faceplate

chowkickgate_ingatepitch_cvcvwidth_cvcvamplitude_cvcvdecay_cvcvsustain_cvcvnoise_amount_cvcvnoise_decay_cvcvnoise_cutoff_cvcvfreq_cvcvq_cvcvdamping_cvcvtight_cvcvbounce_cvcvtone_cvcvportamento_cvcvlevel_cvcvpitch_amount_cvcvpitch_decay_cvcvdrive_cvcvaudio_outaudioaudiocvgatepitch
20 inputs · 1 outputs · 20 params

inputs

idcablewhat it does
gate_ingateThe trigger: a rising edge strikes the resonator (fires the pulse + noise burst that excite the body). Each edge is one kick; the hit's length comes from the decay/damping controls, not how long the gate stays high.
gate / trigger
pitch_cvcvA 1V/oct pitch input applied as a multiplier on the body Freq (the worklet does freq × 2^pitch_cv), so it tracks pitch correctly across octaves — patch a sequencer here to tune kicks melodically. This is separate from the freq_cv summing input.
control voltage (CV)
width_cvcvCV that scales the pulse Width (log).
control voltage (CV); modulates width (multiplicative ≈ octaves — ±1 CV spans the param’s log range)
amplitude_cvcvCV that adds to the pulse Amp (the excitation strength).
control voltage (CV); modulates amplitude (additive offset — ±1 CV sweeps the full range, centered on the knob)
decay_cvcvCV that adds to the pulse Decay.
control voltage (CV); modulates decay (additive offset — ±1 CV sweeps the full range, centered on the knob)
sustain_cvcvCV that adds to the pulse Sustain floor.
control voltage (CV); modulates sustain (additive offset — ±1 CV sweeps the full range, centered on the knob)
noise_amount_cvcvCV that adds to the Noise Amount (how much transient noise is mixed into the strike).
control voltage (CV); modulates noise_amount (additive offset — ±1 CV sweeps the full range, centered on the knob)
noise_decay_cvcvCV that adds to the Noise Decay.
control voltage (CV); modulates noise_decay (additive offset — ±1 CV sweeps the full range, centered on the knob)
noise_cutoff_cvcvCV that scales the Noise Cutoff (log) — the brightness of the click.
control voltage (CV); modulates noise_cutoff (multiplicative ≈ octaves — ±1 CV spans the param’s log range)
freq_cvcvCV that scales the body Freq (log, summed) — for filter/pitch sweeps that aren't 1V/oct-tracked (use pitch_cv for true octave tracking).
control voltage (CV); modulates freq (multiplicative ≈ octaves — ±1 CV spans the param’s log range)
q_cvcvCV that scales the resonator Q (log) — the sharpness/ring of the body.
control voltage (CV); modulates q (multiplicative ≈ octaves — ±1 CV spans the param’s log range)
damping_cvcvCV that adds to Damping (the ring time: long boom vs short thud).
control voltage (CV); modulates damping (additive offset — ±1 CV sweeps the full range, centered on the knob)
tight_cvcvCV that adds to Tight (the tightness macro affecting the body's snap).
control voltage (CV); modulates tight (additive offset — ±1 CV sweeps the full range, centered on the knob)
bounce_cvcvCV that adds to Bounce (extra resonant feedback/saturation character).
control voltage (CV); modulates bounce (additive offset — ±1 CV sweeps the full range, centered on the knob)
tone_cvcvCV that scales the output Tone low-pass cutoff (log).
control voltage (CV); modulates tone (multiplicative ≈ octaves — ±1 CV spans the param’s log range)
portamento_cvcvCV that scales the Portamento glide time (log).
control voltage (CV); modulates portamento (multiplicative ≈ octaves — ±1 CV spans the param’s log range)
level_cvcvCV that adds to the output Level (dB).
control voltage (CV); modulates level (additive offset — ±1 CV sweeps the full range, centered on the knob)
pitch_amount_cvcvCV that adds to the Pitch Amount (depth of the per-hit downward pitch sweep — the 'punch').
control voltage (CV); modulates pitch_amount (additive offset — ±1 CV sweeps the full range, centered on the knob)
pitch_decay_cvcvCV that adds to the Pitch Decay (how fast that sweep settles).
control voltage (CV); modulates pitch_decay (additive offset — ±1 CV sweeps the full range, centered on the knob)
drive_cvcvCV that adds to Drive (the body saturation/overdrive).
control voltage (CV); modulates drive (additive offset — ±1 CV sweeps the full range, centered on the knob)

outputs

idcablewhat it does
audio_outaudioThe mono kick voice — the excited resonant body, pitch-swept, driven, and tone/level-shaped. Patch to a mixer or bus.
audio signal

params

idlabelrangedefaultcurve
widthWidth0.1..50ms0.5log
amplitudeAmp0..21linear
decayDecay0..10.3linear
sustainSustain0..10linear
noise_amountN Amt0..10.5linear
noise_decayN Dec0..10.07linear
noise_cutoffN Cut20..8000Hz5500log
noise_typeN Type0..30discrete
freqFreq20..500Hz80log
qQ0.1..101.6log
dampingDamp0..10.4linear
tightTight0..10.6linear
bounceBounce0..10linear
toneTone50..4000Hz3200log
portamentoPorta0..100ms0.5log
levelLevel-60..0dB0linear
linkLink0..10discrete
pitch_amountP Amt0..10.9linear
pitch_decayP Dec0..10.28linear
driveDrive0..10.5linear

controls

controlwhat it does
AmpPULSE SHAPE: strength of the excitation pulse (0..2) — how hard the body is struck.
BounceRESONANT FILTER: extra resonant feedback/saturation character on the body (0..1) for a livelier, springier ring.
DampRESONANT FILTER: the ring time / pole radius (0..1) — low = a long boom, high = a short thud.
DecayPULSE SHAPE: how quickly the pulse falls after its hold (0..1).
DrivePUNCH: body saturation/overdrive (0..1) — adds harmonics and loudness/heat to the kick.
FreqRESONANT FILTER: the body's tuned frequency (20–500 Hz, log) — the kick's pitch; the resonant peak is shown in the filter preview. The pitch_cv input tracks this in 1V/oct.
LevelOutput level in dB (-60 to 0).
LinkTightness LINK toggle (0 = off, 1 = on): when on, Q and Damping move together as one 'tightness' macro, the upstream plugin's coupled behavior.
N AmtPULSE SHAPE: how much filtered noise is added to the strike (0..1) — adds click/snap and grit to the attack.
N CutPULSE SHAPE: low-pass cutoff of the noise (20–8000 Hz, log) — the brightness/color of the click.
N DecPULSE SHAPE: decay time of the noise burst (0..1).
N TypePULSE SHAPE: the noise color (discrete: Uniform, Gaussian, Pink, Velvet) — different textures for the strike's noise.
P AmtPUNCH: depth of the fast downward pitch sweep at the start of each hit (0..1) — the chirp that gives the kick its punch.
P DecPUNCH: how fast that pitch sweep settles to the body Freq (0..1) — short for a sharp click, longer for a deeper drop.
PortaPitch glide time between consecutive notes (0–100 ms, log) — for sliding kick tunings.
QRESONANT FILTER: resonance sharpness (0.1–10, log) — higher Q rings longer and more tonally.
SustainPULSE SHAPE: the floor the pulse decays toward (0..1) — raise it to sustain the strike rather than let it die fully.
TightRESONANT FILTER: the tightness macro (0..1) tightening the body's snap; when LINK is on it moves together with Q and Damping.
ToneOutput low-pass tone (50–4000 Hz, log) — rolls off the top end of the whole kick.
WidthPULSE SHAPE: width of the excitation pulse (0.1–50 ms, log) — how long the strike pushes the body before it decays; shown in the envelope preview.

source

chowkick.ts on GitHub.

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