chroma-rot

VFPGA chroma-rot · runs in vfpga-runner

Model

A composite-era circuit-bent VFPGA that corrupts the colour subsystem — the chroma demodulator and colour-burst phase. It separates the picture into luma + a YIQ chroma vector then mis-phases the chroma: a burst-phase offset spins the hue globally (rainbowing), a chroma-gain overdrive bleeds oversaturation, an I/Q swap mangles the colour axes, and a dot-crawl term shimmers chroma per scanline (comb-filter defeat). Because composite splits Y from C, it doubles as an S-video Y/C tool: patch a CHROMA SOURCE to IIN2 and p5 (cxfer) transplants that clip’s colours onto IIN1’s luma (clip A’s shapes in clip B’s colours) — cxfer=0 or an unpatched IIN2 leaves the original single-source bend untouched. vout2 outputs the separated luma (Y) plane. CIN1 adds a continuous hue spin onto the burst phase; CIN2 adds onto the transplant; GIN1 is a HELD gate that toggles the I/Q swap.

I/O

  • Video in: 2 (vin1…vin2)
  • Video out: 2 (vout1 + vout2)

Controls (param knobs)

SlotKnobRangeDefaultWhat it does
p1phase0 … 10.15Burst-phase offset → rotates chroma (global hue spin, 0..1 wheel).
p2gain0 … 31.6Chroma amplitude (>1 = oversaturation bleed overdrive).
p3i/q-mix0 … 10Static I/Q swap amount (the GIN1 gate adds a held swap on top).
p4dot-crawl0 … 10.4Per-line/time chroma shimmer (comb-filter defeat).
p5cxfer0 … 10Y/C transplant — blend IIN2’s chroma onto IIN1’s luma (0 = own chroma).

CV roles

InputRoleWhat it modulates
cv1SPINAdds a continuous hue spin onto the burst phase (patch an LFO/ramp).
cv2CXFERAdds onto the Y/C transplant amount (modulate how much of IIN2’s chroma lands on the luma).

Each CV input has a bipolar SCALE attenuverter + OFFSET on the card, and an always-on scope.

Gate roles

InputRoleWhat it triggers
g1I/QA HELD gate: while high, the I/Q chroma axes are swapped.

Gate inputs raw-pass into the host's synthetic gN_evt params; the factory hysteresis edge-detects rising edges (rise > 0.6 / fall < 0.4).

Usage

Add a vfpga-runner, pick chroma-rot from the card's load preset… menu, and patch the active outputs into OUTPUT / a video mixer / a downstream effect.

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