backdraft

backdraft · effects · schema v1

BACKDRAFT is a video feedback generator. It builds a "source" image by crossfading two video inputs (IN A / IN B) with MIX, then composites that against a processed copy of its OWN previous output, read from an internal ring of past frames so there is no live GL feedback loop (downstream sees frame N while the tap reads N-1..N-30). The fed-back frame is delayed (DELAY, 0-500ms or a clock pulse), colour-processed (per-channel R/G/B gain, then LUMA brightness, then CHROMA saturation), scaled per-pixel by two key masks (KEY+ lightens / KEY- darkens the effect), and geometrically warped a little each pass (ZOOM/ROTATE/OFF X/OFF Y) so the transform COMPOUNDS into tunnels, spirals, and directional trails. Two MIRROR buttons fold the whole composited frame into a kaleidoscope. A SHAPE button cuts the frame to a geometric mask (square = full frame, then circle / pentagon / triangle / octagon), and a PURE GEO button picks the masking SPACE: ON masks the FINAL OUTPUT in screen space (a fixed shape that cuts everything outside it at all zooms), OFF masks the SOURCE in the zoomed feedback space so the shape scales with ZOOM and its content spills out through the feedback tunnel (zoom-in pushes it toward the corners, zoom-out shrinks it). As FEEDBACK approaches its max (and a spatial transform is active) the additive trail-accumulator ramps into a pure recursive hall of mirrors. Usage: patch a camera or generator into IN A, raise FEEDBACK toward ~1 and nudge ZOOM off 1.0 (with a little ROTATE) for the classic infinite-tunnel look; add OFF X/Y for smear, PIXELATE for blocky lo-fi, a SHAPE for a geometric vignette, and clock DELAY CLK for rhythmic echo. Output is the OUT video jack. The card shows a large live video preview on the left that is resizable via the bottom-right corner-drag handle (width/height persist, snapped to rack tiles); right-click the preview for Full Frame / Full Screen / Present-on-another-display.

BACKDRAFT is a video feedback generator. It builds a "source" image by crossfading two video inputs (IN A / IN B) with MIX, then composites that against a processed copy of its OWN previous output, read from an internal ring of past frames so there is no live GL feedback loop (downstream sees frame N while the tap reads N-1..N-30). The fed-back frame is delayed (DELAY, 0-500ms or a clock pulse), colour-processed (per-channel R/G/B gain, then LUMA brightness, then CHROMA saturation), scaled per-pixel by two key masks (KEY+ lightens / KEY- darkens the effect), and geometrically warped a little each pass (ZOOM/ROTATE/OFF X/OFF Y) so the transform COMPOUNDS into tunnels, spirals, and directional trails. Two MIRROR buttons fold the whole composited frame into a kaleidoscope. A SHAPE button cuts the frame to a geometric mask (square = full frame, then circle / pentagon / triangle / octagon), and a PURE GEO button picks the masking SPACE: ON masks the FINAL OUTPUT in screen space (a fixed shape that cuts everything outside it at all zooms), OFF masks the SOURCE in the zoomed feedback space so the shape scales with ZOOM and its content spills out through the feedback tunnel (zoom-in pushes it toward the corners, zoom-out shrinks it). As FEEDBACK approaches its max (and a spatial transform is active) the additive trail-accumulator ramps into a pure recursive hall of mirrors. Usage: patch a camera or generator into IN A, raise FEEDBACK toward ~1 and nudge ZOOM off 1.0 (with a little ROTATE) for the classic infinite-tunnel look; add OFF X/Y for smear, PIXELATE for blocky lo-fi, a SHAPE for a geometric vignette, and clock DELAY CLK for rhythmic echo. Output is the OUT video jack. The card shows a large live video preview on the left that is resizable via the bottom-right corner-drag handle (width/height persist, snapped to rack tiles); right-click the preview for Full Frame / Full Screen / Present-on-another-display.

the faceplate

backdraftin_avideoin_bvideolightenvideodarkenvideomixcvfeedbackcvdelaycvdelay_clockcvlumacvchromacvrcvgcvbcvlighten_cvcvdarken_cvcvpixelatecvzoomcvrotatecvoffsetxcvoffsetycvmirror_x_gatecvmirror_y_gatecvshape_gatecvpure_geo_gatecvoutvideoaudiocvgatepitch
24 inputs · 1 outputs · 25 params

inputs

idcablewhat it does
in_avideoVideo source A. Crossfaded against IN B by MIX to form the live 'source' image that is re-injected each frame; unpatched it reads black.
RGB video stream
in_bvideoVideo source B. The other end of the MIX crossfade (MIX=1 selects this input fully); unpatched it reads black.
RGB video stream
lightenvideoVideo KEY+ mask. Read as luma per pixel; where bright it scales the feedback effect UP (paired with the Lighten control). Unpatched = neutral (no boost).
RGB video stream
darkenvideoVideo KEY- mask. Read as luma per pixel; where bright it scales the feedback effect DOWN (paired with the Darken control). Unpatched = neutral (no cut).
RGB video stream
mixcvCV (linear) that modulates the Mix crossfade between IN A (0) and IN B (1).
control voltage (CV); modulates mix (additive offset — ±1 CV sweeps the full range, centered on the knob)
feedbackcvCV (linear) that modulates the FB (feedback) amount, the per-frame persistence ratio of the fed-back frame.
control voltage (CV); modulates feedback (additive offset — ±1 CV sweeps the full range, centered on the knob)
delaycvCV (linear) that modulates the Delay control, the feedback tap delay in milliseconds (0-500ms).
control voltage (CV); modulates delay (additive offset — ±1 CV sweeps the full range, centered on the knob)
delay_clockcvGate/clock input (raw passthrough, edge-detected). Each rising edge times a pulse; once two edges land, the feedback delay locks to one clock-pulse duration (capped at 500ms = one beat at 120 BPM) and OVERRIDES the Delay control.
control voltage (CV); modulates delayClock (summed directly (the destination DSP scales it))
lumacvCV (linear) that modulates the Luma control, the feedback's overall brightness gain about black.
control voltage (CV); modulates luma (additive offset — ±1 CV sweeps the full range, centered on the knob)
chromacvCV (linear) that modulates the Chr (chroma/saturation) control of the fed-back frame.
control voltage (CV); modulates chroma (additive offset — ±1 CV sweeps the full range, centered on the knob)
rcvCV (linear, bipolar) that modulates the R per-channel red gain of the feedback (range -1..+2).
control voltage (CV); modulates r (additive offset — ±1 CV sweeps the full range, centered on the knob)
gcvCV (linear, bipolar) that modulates the G per-channel green gain of the feedback (range -1..+2).
control voltage (CV); modulates g (additive offset — ±1 CV sweeps the full range, centered on the knob)
bcvCV (linear, bipolar) that modulates the B per-channel blue gain of the feedback (range -1..+2).
control voltage (CV); modulates b (additive offset — ±1 CV sweeps the full range, centered on the knob)
lighten_cvcvCV (linear) that modulates the Lgt (Lighten) control, the amount the KEY+ mask boosts the feedback effect.
control voltage (CV); modulates lighten (additive offset — ±1 CV sweeps the full range, centered on the knob)
darken_cvcvCV (linear) that modulates the Drk (Darken) control, the amount the KEY- mask reduces the feedback effect.
control voltage (CV); modulates darken (additive offset — ±1 CV sweeps the full range, centered on the knob)
pixelatecvCV (linear) that modulates the Pix (Pixelate) control, reducing the source's effective resolution (0 = identity, 1 = a single cell).
control voltage (CV); modulates pixelate (additive offset — ±1 CV sweeps the full range, centered on the knob)
zoomcvCV (linear) that modulates the Zoom control, the per-pass scale of the feedback tap about centre that builds the tunnel.
control voltage (CV); modulates zoom (additive offset — ±1 CV sweeps the full range, centered on the knob)
rotatecvCV (linear, bipolar) that modulates the Rot (Rotate) control, the per-pass rotation in degrees that turns the feedback into a spiral.
control voltage (CV); modulates rotate (additive offset — ±1 CV sweeps the full range, centered on the knob)
offsetxcvCV (linear, bipolar) that modulates the OffX (Off X) control, the per-pass horizontal translation of the feedback tap (directional trail).
control voltage (CV); modulates offsetX (additive offset — ±1 CV sweeps the full range, centered on the knob)
offsetycvCV (linear, bipolar) that modulates the OffY (Off Y) control, the per-pass vertical translation of the feedback tap (directional trail).
control voltage (CV); modulates offsetY (additive offset — ±1 CV sweeps the full range, centered on the knob)
mirror_x_gatecvGate/clock input (raw passthrough, edge-detected). A RISING edge TOGGLES (flips) the Mirror X kaleidoscope fold, so a clock can flip it rhythmically. Edge-triggered, not a held level.
control voltage (CV); modulates mirrorXGate (summed directly (the destination DSP scales it))
mirror_y_gatecvGate/clock input (raw passthrough, edge-detected). A RISING edge TOGGLES (flips) the Mirror Y kaleidoscope fold. Edge-triggered, not a held level.
control voltage (CV); modulates mirrorYGate (summed directly (the destination DSP scales it))
shape_gatecvGate/clock input (raw passthrough, edge-detected). A RISING edge CYCLES the Shape mask to the next geometry (square → circle → pentagon → triangle → octagon → square). Edge-triggered, not a held level.
control voltage (CV); modulates shapeGate (summed directly (the destination DSP scales it))
pure_geo_gatecvGate/clock input (raw passthrough, edge-detected). A RISING edge TOGGLES the Pure Geo masking space (screen-space crop ↔ zoomed-source crop). Edge-triggered, not a held level.
control voltage (CV); modulates pureGeoGate (summed directly (the destination DSP scales it))

outputs

idcablewhat it does
outvideoThe feedback-rendered video output: the crossfaded source composited with the processed, delayed, spatially-warped, mask-scaled copy of the previous output.
RGB video stream

params

idlabelrangedefaultcurve
mixMix0..1linear
feedbackFeedback0..?linear
delayDelay0..?linear
lumaLuma-1..2linear
chromaChroma-1..2linear
rR-1..2linear
gG-1..2linear
bB-1..2linear
lightenLighten0..1linear
darkenDarken0..1linear
pixelatePixelate0..1linear
zoomZoom?..?linear
rotateRotate?..?linear
offsetXOff X?..?linear
offsetYOff Y?..?linear
delayClockDelay Clk0..1linear
mirrorXMirror X0..1linear
mirrorYMirror Y0..1linear
mirrorXGateMir X Gate0..1linear
mirrorYGateMir Y Gate0..1linear
shapeShape0..?discrete
pureGeoPure Geo0..1linear
shapeGateShape Gate0..1linear
pureGeoGatePureGeo Gate0..1linear
freezeFreeze0..1linear

controls

controlwhat it does
BB (-1..+2, default 1.0): per-channel blue gain on the feedback. 1 = neutral.
ChromaChr / Chroma (-1..+2, default 1.0): saturation gain about the pixel's own luma. 1 = neutral, 0 = greyscale, 2 = double saturation, negative = hue-inverted.
DarkenDrk / Darken (0..1, default 1.0): how much the KEY- mask reduces the feedback effect where the mask is bright.
DelayDelay (0..500 ms, default 16): feedback tap delay, snapped to the nearest whole frame (~1 frame at default). Overridden + shown as 'Dly·CLK' with a CLK badge while DELAY CLK is patched.
Delay ClkDelay Clk (0..1, default 0): hidden synthetic param the DELAY CLK CV bridge writes (raw gate swing). No card knob; the module edge-detects it to measure the pulse period that overrides the Delay control.
FeedbackFB / Feedback (0..2.0, default 0.85): per-frame feedback persistence. Above 1.0 gives runaway trails; near max (with a spatial transform active) it ramps into a pure recursive hall of mirrors. Each frame is clamped to [0,1] so it cannot blow out.
FreezeFreeze (0/1, default 0): hidden determinism toggle. At ≥0.5 draw() is a no-op so the ring + output hold their last frame for deterministic VRT capture. No card control.
GG (-1..+2, default 1.0): per-channel green gain on the feedback. 1 = neutral.
LightenLgt / Lighten (0..1, default 1.0): how much the KEY+ mask boosts the feedback effect where the mask is bright.
LumaLuma (-1..+2, default 1.0): brightness gain of the fed-back frame about black. 1 = neutral, >1 brightens, <1 darkens, negative inverts.
Mirror XMirror X (0/1, default 0): kaleidoscope toggle that folds the left half of the composited output over the right. Set by the MIRROR X button or flipped by a rising edge on mirror_x_gate.
Mir X GateMir X Gate (0..1, default 0): hidden synthetic param the mirror_x_gate CV bridge writes (raw gate swing). No card knob; a rising edge flips Mirror X.
Mirror YMirror Y (0/1, default 0): kaleidoscope toggle that folds the top half of the output over the bottom (both on = a 4-way quadrant fold). Set by the MIRROR Y button or flipped by mirror_y_gate.
Mir Y GateMir Y Gate (0..1, default 0): hidden synthetic param the mirror_y_gate CV bridge writes (raw gate swing). No card knob; a rising edge flips Mirror Y.
MixMix (0..1, default 0.5): crossfade between IN A (0) and IN B (1) to form the live source image.
Off XOffX / Off X (-0.1..+0.1, default 0): per-pass horizontal translation (UV units) of the feedback tap, making a directional trail/smear; 0 = none.
Off YOffY / Off Y (-0.1..+0.1, default 0): per-pass vertical translation (UV units) of the feedback tap, making a directional trail/smear; 0 = none.
PixelatePix / Pixelate (0..1, default 0): reduces the SOURCE resolution. 0 = identity (bit-exact), rising = blockier, 1 = the whole frame collapses to one representative colour.
Pure GeoPure Geo (0/1, default 0 = off): the SHAPE masking SPACE. ON masks the FINAL OUTPUT in screen space (a fixed shape that cuts content outside it at all zooms); OFF masks the SOURCE in the zoomed feedback space, so the shape scales with Zoom and its content spills out through the feedback tunnel. The PURE GEO button toggles it; pure_geo_gate toggles it on a rising edge.
PureGeo GatePureGeo Gate (0..1, default 0): hidden synthetic param the pure_geo_gate CV bridge writes (raw gate swing). No card knob; a rising edge toggles Pure Geo.
RR (-1..+2, default 1.0): per-channel red gain on the feedback. 1 = neutral.
RotateRot / Rotate (-30..+30 °, default 0): per-pass rotation of the feedback tap about centre. Combined with Zoom≠1 the echoes twist into a spiral; 0 = no spiral.
ShapeShape (discrete 0..4, default 0 = square): the geometric mask cut over the frame — square (full frame, no crop), circle, pentagon, triangle, octagon. The SHAPE button cycles it; shape_gate cycles it on a rising edge.
Shape GateShape Gate (0..1, default 0): hidden synthetic param the shape_gate CV bridge writes (raw gate swing). No card knob; a rising edge cycles Shape.
ZoomZoom (0.4..1.6, default 1.0): per-pass scale of the feedback tap about centre. <1 makes echoes recede (expanding tunnel), >1 magnifies them (zoom-in tunnel); 1 = no tunnel.

source

backdraft.ts on GitHub.

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