feedback

feedback · effects · schema v1

Analog-video-style feedback loop, the on-screen equivalent of pointing a camera at its own monitor. Each frame it re-samples its OWN previous output from a ping-pong framebuffer through a small affine warp — rotate and scale the UV about the canvas center, plus a tiny XY offset — multiplies that warped tap by Decay, then adds the fresh input (weighted by 1 minus the clamped decay) to form a recursive accumulator. That accumulator is cross-faded against the dry input by Wet and clamped to [0,1] so destructive Decay over 1.0 saturates white instead of NaN-ing. With Zoom slightly above 1 and a touch of Rotate you get the classic infinite spiraling "tunnel"; the prior frame is sampled black outside the canvas (no edge smear) so trails decay into darkness rather than melting along the borders. Patch a camera or any video source into IN, feed OUT back to a monitor, and modulate the warp via the CV inputs for evolving, self-oscillating imagery.

Analog-video-style feedback loop, the on-screen equivalent of pointing a camera at its own monitor. Each frame it re-samples its OWN previous output from a ping-pong framebuffer through a small affine warp — rotate and scale the UV about the canvas center, plus a tiny XY offset — multiplies that warped tap by Decay, then adds the fresh input (weighted by 1 minus the clamped decay) to form a recursive accumulator. That accumulator is cross-faded against the dry input by Wet and clamped to [0,1] so destructive Decay over 1.0 saturates white instead of NaN-ing. With Zoom slightly above 1 and a touch of Rotate you get the classic infinite spiraling "tunnel"; the prior frame is sampled black outside the canvas (no edge smear) so trails decay into darkness rather than melting along the borders. Patch a camera or any video source into IN, feed OUT back to a monitor, and modulate the warp via the CV inputs for evolving, self-oscillating imagery.

the faceplate

feedbackinvideowetcvdecaycvzoomcvrotatecvoffsetXcvoffsetYcvoutvideoaudiocvgatepitch
7 inputs · 1 outputs · 6 params

inputs

idcablewhat it does
invideoVideo input — the source frame fed into the feedback ring each render. When unpatched the loop runs dry (uHasInput=0, input ignored) and only the recirculating prior frame contributes, so it can self-oscillate from whatever residue is already in the buffer.
RGB video stream
wetcvCV that modulates the Wet control (wet/dry mix between the raw input and the recursive accumulator).
control voltage (CV); modulates wet (additive offset — ±1 CV sweeps the full range, centered on the knob)
decaycvCV that modulates the Decay control (the per-frame gain on the previous-frame tap, i.e. how long trails persist).
control voltage (CV); modulates decay (additive offset — ±1 CV sweeps the full range, centered on the knob)
zoomcvCV that modulates the Zoom control (per-frame scale of the feedback tap about center — the tunnel push/pull).
control voltage (CV); modulates zoom (additive offset — ±1 CV sweeps the full range, centered on the knob)
rotatecvCV that modulates the Rotate control (per-frame rotation of the feedback tap about the canvas center).
control voltage (CV); modulates rotate (additive offset — ±1 CV sweeps the full range, centered on the knob)
offsetXcvCV that modulates the OffsX control (horizontal drift of the feedback tap each frame).
control voltage (CV); modulates offsetX (additive offset — ±1 CV sweeps the full range, centered on the knob)
offsetYcvCV that modulates the OffsY control (vertical drift of the feedback tap each frame).
control voltage (CV); modulates offsetY (additive offset — ±1 CV sweeps the full range, centered on the knob)

outputs

idcablewhat it does
outvideoVideo output — the wet/dry feedback render (recursive accumulator mixed with the input by Wet), clamped to [0,1]. This is also the just-written ping-pong frame that becomes next frame's feedback source.
RGB video stream

params

idlabelrangedefaultcurve
wetWet0..1linear
decayDecay0..2linear
zoomZoom0.9..1.1linear
rotateRotate-3.14159..3.14159linear
offsetXOffsX-1..1linear
offsetYOffsY-1..1linear

controls

controlwhat it does
DecayDecay — per-frame multiplier on the previous-frame tap, 0 to 2. Below 1 trails fade out; near 1 they persist for a long tunnel; above 1 the loop is destructive and saturates toward clipped white (output is clamped so it can't blow up). Default 0.95.
OffsXOffsX — horizontal translation of the feedback tap per frame, -1 to 1 (scaled to a small ±0.05 UV shift), drifting the recirculating image sideways. Default 0.
OffsYOffsY — vertical translation of the feedback tap per frame, -1 to 1 (scaled to a small ±0.05 UV shift), drifting the recirculating image up or down. Default 0.
RotateRotate — per-frame rotation of the feedback tap about center, -π to π radians (≈ -3.14159 to 3.14159). Small values spin trails into spirals; large values whip the tunnel hard each frame. Default 0.05.
WetWet — wet/dry mix from 0 to 1. At 0 the output is the pure input passthrough; at 1 it is the pure recursive feedback accumulator. Default 0.5.
ZoomZoom — per-frame scale of the feedback tap about the canvas center, 0.9 to 1.1. The shader divides the sample UV by Zoom, so above 1 the recirculating image magnifies and content flows outward toward the edges (the classic infinite zoom-in tunnel); below 1 it shrinks toward center; 1.0 holds size. Default 1.02.

source

feedback.ts on GitHub.

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