b3ntb0x

b3ntb0x · output · schema v1

A circuit-level NTSC/composite video destroyer. Where the original BENTBOX does one symbolic RGB/YIQ pass, B3NTB0X runs a real four-stage analog pipeline: it ENCODES the incoming picture into a per-column composite VOLTAGE on a 3.58 MHz subcarrier (with sync tip, blanking, colour burst, and active video), runs that voltage through an analog BEND CIRCUIT (AC/DC coupling, gain, bias, soft-clip + diode clamp, plus four circuit-bend taps), DECODES it back to RGB with a quadrature demodulator and recovered sync, then renders it on a curved CRT (beam blur, phosphor grille, scanlines/interlace, bloom, persistence, overscan, barrel). Sync crush, dot-crawl, rainbow swim and rolling all EMERGE from the signal path — they are not cosmetic filters. Patch a video source into IN and it is the chainable, CRT-rendered OUT. Crank Sync Crush + Bias to tear and roll the picture, starve the Burst to kill colour and bring on herringbone, push Drift for swimming rainbow, and use Bend A–D for wavefold/comb/crush/bleed mangling. The preview is a resizable CRT screen (drag the bottom-right handle; default 540x540, min 360x540) that letterboxes at the live engine aspect with the 4:3 active area, overscan and barrel applied inside the shader; right-click for fullscreen / full-frame / present-on-second-display, and a "reduced precision" badge appears if the GPU cannot allocate the float buffers the composite voltage needs.

A circuit-level NTSC/composite video destroyer. Where the original BENTBOX does one symbolic RGB/YIQ pass, B3NTB0X runs a real four-stage analog pipeline: it ENCODES the incoming picture into a per-column composite VOLTAGE on a 3.58 MHz subcarrier (with sync tip, blanking, colour burst, and active video), runs that voltage through an analog BEND CIRCUIT (AC/DC coupling, gain, bias, soft-clip + diode clamp, plus four circuit-bend taps), DECODES it back to RGB with a quadrature demodulator and recovered sync, then renders it on a curved CRT (beam blur, phosphor grille, scanlines/interlace, bloom, persistence, overscan, barrel). Sync crush, dot-crawl, rainbow swim and rolling all EMERGE from the signal path — they are not cosmetic filters. Patch a video source into IN and it is the chainable, CRT-rendered OUT. Crank Sync Crush + Bias to tear and roll the picture, starve the Burst to kill colour and bring on herringbone, push Drift for swimming rainbow, and use Bend A–D for wavefold/comb/crush/bleed mangling. The preview is a resizable CRT screen (drag the bottom-right handle; default 540x540, min 360x540) that letterboxes at the live engine aspect with the 4:3 active area, overscan and barrel applied inside the shader; right-click for fullscreen / full-frame / present-on-second-display, and a "reduced precision" badge appears if the GPU cannot allocate the float buffers the composite voltage needs.

the faceplate

b3ntb0xinvideoenhance_cvcvbias_cvcvac_dc_cvcvsync_crush_cvcvburst_starve_cvcvchroma_leak_cvcvluma_peak_cvcvbend_a_cvcvbend_b_cvcvbend_c_cvcvbend_d_cvcvfeedback_cvcvtbc_cvcvtube_bloom_cvcvoverscan_cvcvbarrel_cvcvmirror_x_gatecvmirror_y_gatecvoutvideoaudiocvgatepitch
19 inputs · 1 outputs · 22 params

inputs

idcablewhat it does
invideoVideo input — the upstream RGB picture that becomes the active-video region of the synthesized NTSC line. With nothing patched the encoder feeds black (a clean blanked raster you can still bend).
RGB video stream
enhance_cvcvModulates Enhance (HF peaking / edge over-ring in the bend circuit).
control voltage (CV); modulates enhance (additive offset — ±1 CV sweeps the full range, centered on the knob)
bias_cvcvModulates Bias (the DC offset added before the soft-clip/diode-clamp; drives sync crush and tearing).
control voltage (CV); modulates bias (additive offset — ±1 CV sweeps the full range, centered on the knob)
ac_dc_cvcvModulates AC/DC (input-coupling blend, DC passthrough to leaky AC-coupled so flat areas droop toward grey).
control voltage (CV); modulates ac_dc (additive offset — ±1 CV sweeps the full range, centered on the knob)
sync_crush_cvcvModulates Sync Crush (master transistor gain into the clip; high gain drags the sync tip through the clamp so the decoder loses lock).
control voltage (CV); modulates sync_crush (additive offset — ±1 CV sweeps the full range, centered on the knob)
burst_starve_cvcvModulates Burst Starve (attenuates the colour-burst reference: desaturation toward mono plus subcarrier dot-crawl into luma).
control voltage (CV); modulates burst_starve (additive offset — ±1 CV sweeps the full range, centered on the knob)
chroma_leak_cvcvModulates Chroma Leak (how much chroma energy bleeds into luma in the decoder, i.e. dot-crawl amount).
control voltage (CV); modulates chroma_leak (additive offset — ±1 CV sweeps the full range, centered on the knob)
luma_peak_cvcvModulates Luma Peak (decode-side unsharp sharpening on the recovered luma).
control voltage (CV); modulates luma_peak (additive offset — ±1 CV sweeps the full range, centered on the knob)
bend_a_cvcvModulates Bend A (WAVEFOLD — reflect the composite voltage past a shrinking threshold for solarised creases).
control voltage (CV); modulates bend_a (additive offset — ±1 CV sweeps the full range, centered on the knob)
bend_b_cvcvModulates Bend B (COMB RIPPLE — mix a horizontally-delayed copy back in for ringing/ghost edges).
control voltage (CV); modulates bend_b (additive offset — ±1 CV sweeps the full range, centered on the knob)
bend_c_cvcvModulates Bend C (CRUSH — quantise/posterise the picture into hard contour bands).
control voltage (CV); modulates bend_c (additive offset — ±1 CV sweeps the full range, centered on the knob)
bend_d_cvcvModulates Bend D (CHROMA→SYNC BLEED — cross-couple HF ripple onto the DC path for luma buzz/rolling).
control voltage (CV); modulates bend_d (additive offset — ±1 CV sweeps the full range, centered on the knob)
feedback_cvcvModulates Feedback (CRT phosphor persistence / motion-trail amount).
control voltage (CV); modulates feedback (additive offset — ±1 CV sweeps the full range, centered on the knob)
tbc_cvcvModulates TBC/Lock (time-base correction; 1 is rock-steady, 0 lets sync offset + timebase wobble shimmy the lines).
control voltage (CV); modulates tbc (additive offset — ±1 CV sweeps the full range, centered on the knob)
tube_bloom_cvcvModulates Tube Bloom (highlight halation/glow spilling into neighbours).
control voltage (CV); modulates tube_bloom (additive offset — ±1 CV sweeps the full range, centered on the knob)
overscan_cvcvModulates Overscan (how far the image is pushed past the visible CRT edge).
control voltage (CV); modulates overscan (additive offset — ±1 CV sweeps the full range, centered on the knob)
barrel_cvcvModulates Barrel (CRT glass bulge / barrel distortion and corner vignette).
control voltage (CV); modulates barrel (additive offset — ±1 CV sweeps the full range, centered on the knob)
mirror_x_gatecvGate input on the CV cable (edge-detected): a RISING edge TOGGLES the Mirror X kaleidoscope fold — it fires on the rising edge, not on the held level. Feeds the mirrorXGate param.
control voltage (CV); modulates mirrorXGate (summed directly (the destination DSP scales it))
mirror_y_gatecvGate input on the CV cable (edge-detected): a RISING edge TOGGLES the Mirror Y kaleidoscope fold — it fires on the rising edge, not on the held level. Feeds the mirrorYGate param.
control voltage (CV); modulates mirrorYGate (summed directly (the destination DSP scales it))

outputs

idcablewhat it does
outvideoVideo output — the final CRT-rendered frame (decoded RGB after the full encode→bend→decode→CRT chain, with overscan, barrel, scanlines, phosphor and persistence baked in). Chainable into any video input.
RGB video stream

params

idlabelrangedefaultcurve
enhanceEnhance0..1linear
biasBias-1..1linear
ac_dcAC/DC0..1linear
sync_crushSync Crush0..2linear
burst_starveBurst Starve0..1linear
chroma_leakChroma Leak0..1linear
luma_peakLuma Peak0..1linear
bend_aBend A-1..1linear
bend_bBend B-1..1linear
bend_cBend C-1..1linear
bend_dBend D-1..1linear
feedbackFeedback0..1linear
tbcTBC/Lock0..1linear
tube_bloomTube Bloom0..1linear
overscanOverscan0..1linear
barrelBarrel0..1linear
hueHue-1..1linear
sub_driftDrift0..1linear
mirrorXMirror X0..1linear
mirrorYMirror Y0..1linear
mirrorXGateMir X Gate0..1linear
mirrorYGateMir Y Gate0..1linear

controls

controlwhat it does
AC/DCAC/DC (0–1): input-coupling blend. 0 = DC passthrough; 1 = leaky AC coupling that loses the DC pedestal so big flat bright/dark areas droop back toward mid-grey.
BarrelBarrel (0–1, default 0.25): CRT glass barrel distortion (outward bulge about center) plus the matching corner vignette.
Bend ABend A — Wavefold (-1–1): reflects the composite voltage back on itself past a shrinking threshold for solarised banding/creases. Identity at 0; sign picks fold polarity.
Bend BBend B — Comb Ripple (-1–1): mixes a horizontally-delayed copy of the voltage back in (one-tap comb) for ringing, ghost edges and colour beating. Identity at 0.
Bend CBend C — Crush (-1–1): quantises/posterises the picture into a few hard steps (bit-crush banding); the visible crush is applied on the recovered RGB, stepping from ~256 levels down toward 3 as magnitude approaches 1. Identity at 0.
Bend DBend D — Chroma→Sync Bleed (-1–1): cross-couples the HF/chroma ripple onto the DC/baseline path, so the picture modulates the baseline as luma buzz / rolling contamination. Identity at 0.
BiasBias (-1–1): DC offset added before the nonlinear clip. Pushes the signal asymmetrically into the soft-clip/diode-clamp; with Sync Crush it drags the sync tip up and crushes it (tearing/rolling).
Burst StarveBurst Starve (0–1): starves the colour-burst phase reference. Desaturates the picture toward monochrome (colour killer) AND leaks raw subcarrier energy into luma as dot-crawl/herringbone.
Chroma LeakChroma Leak (0–1, default 0.15): amount of under-filtered chroma energy that bleeds into the recovered luma in the decoder — visible dot-crawl on the picture.
EnhanceEnhance (0–1): high-frequency peaking on the composite voltage; sharpens edges and adds over-ringing. 0 is flat.
FeedbackFeedback (0–1): CRT phosphor persistence; blends a decayed copy of the previous frame for motion trails. 0 is no trails.
HueHue (-1–1): receiver TINT — rotates the synchronous-demodulator reference axis (the recovered I/Q chroma vector) up to ±0.9π. Shifts colour angle while preserving saturation. 0 is no shift.
Luma PeakLuma Peak (0–1): decode-side unsharp masking on the recovered luma; sharpens detail using the bent neighbours. 0 is off.
Mirror XMirror X (0/1): kaleidoscope toggle that folds the left half over the right. Driven by the card's MIRROR X button and by a rising edge on the Mir X Gate input.
Mir X GateMir X Gate (0–1): the synthetic gate level fed by the mirror_x_gate input; a rising edge on it toggles Mirror X. Read for edge detection, not as a continuous control.
Mirror YMirror Y (0/1): kaleidoscope toggle that folds the top half over the bottom. Driven by the card's MIRROR Y button and by a rising edge on the Mir Y Gate input.
Mir Y GateMir Y Gate (0–1): the synthetic gate level fed by the mirror_y_gate input; a rising edge on it toggles Mirror Y. Read for edge detection, not as a continuous control.
OverscanOverscan (0–1, default 0.2): scales the image slightly past the visible CRT edge so borders fall outside the active area, like a real TV.
DriftDrift (0–1): subcarrier instability. Injects an uncorrected carrier phase error that grows across each line and wanders in time, so chroma swims as a rainbow over the picture. 0 is stable.
Sync CrushSync Crush (0–2, default 1): master transistor gain into the clip. At 1 it is unity; above 1 it overdrives and can crush the sync tip so the decoder fails to lock; below 1 it underdrives.
TBC/LockTBC/Lock (0–1, default 1): time-base correction. 1 corrects the recovered sync offset and analog timebase wobble to rock-steady; 0 lets both through so lines shimmy left/right and the picture breathes.
Tube BloomTube Bloom (0–1, default 0.35): highlight halation — bright phosphors spill warm glow into neighbours and blow out toward white. 0 is off.

source

b3ntb0x.ts on GitHub.

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