4plexvid

4plexvid · utilities · schema v1

4PLEXVID is a 4-in / 4-out video router — the video sibling of the audio 4Plexer. It is NOT a blend or mixer: each of the four outputs carries exactly ONE of the four video inputs, a discrete cross-point switch. Every output has its own selector (sel1..sel4 picking IN1..IN4) and its own gate CV input that advances that selector by one on each rising edge (IN1→IN2→IN3→IN4→IN1, wrapping). The fragment shader is a pure passthrough copy of the selected input texture (it writes the input's RGB straight through, or solid black when that input is unpatched), so there is no color processing — pixels pass straight through. All four outputs render their own FBO every frame regardless of patch state, so downstream modules always sample a fresh texture; OUT1 is also exposed as the canonical single-texture surface. Use it to fan one set of sources out to four destinations, to swap which feed reaches a screen, or to drive rhythmic cuts by clocking the gate inputs from an LFO or sequencer.

4PLEXVID is a 4-in / 4-out video router — the video sibling of the audio 4Plexer. It is NOT a blend or mixer: each of the four outputs carries exactly ONE of the four video inputs, a discrete cross-point switch. Every output has its own selector (sel1..sel4 picking IN1..IN4) and its own gate CV input that advances that selector by one on each rising edge (IN1→IN2→IN3→IN4→IN1, wrapping). The fragment shader is a pure passthrough copy of the selected input texture (it writes the input's RGB straight through, or solid black when that input is unpatched), so there is no color processing — pixels pass straight through. All four outputs render their own FBO every frame regardless of patch state, so downstream modules always sample a fresh texture; OUT1 is also exposed as the canonical single-texture surface. Use it to fan one set of sources out to four destinations, to swap which feed reaches a screen, or to drive rhythmic cuts by clocking the gate inputs from an LFO or sequencer.

the faceplate

4plexvidin1videoin2videoin3videoin4videogate1cvgate2cvgate3cvgate4cvout1videoout2videoout3videoout4videoaudiocvgatepitch
8 inputs · 4 outputs · 8 params

inputs

idcablewhat it does
in1videoVideo input 1. A source you can route to any output by setting that output's selector (sel1..sel4) to IN1.
RGB video stream
in2videoVideo input 2. A source you can route to any output by setting that output's selector to IN2.
RGB video stream
in3videoVideo input 3. A source you can route to any output by setting that output's selector to IN3.
RGB video stream
in4videoVideo input 4. A source you can route to any output by setting that output's selector to IN4.
RGB video stream
gate1cvGate CV for output 1, edge-triggered (paramTarget gate1). On each rising edge it advances the sel1 selector to the next input, wrapping IN1→IN2→IN3→IN4→IN1. Held-high advances exactly once; hysteresis (rise>0.6, fall<0.4) absorbs LFO/ADSR dead-band chatter.
control voltage (CV); modulates gate1 (summed directly (the destination DSP scales it))
gate2cvGate CV for output 2, edge-triggered (paramTarget gate2). Each rising edge rotates the sel2 selector to the next input, wrapping; held-high fires once via the same hysteresis edge detector.
control voltage (CV); modulates gate2 (summed directly (the destination DSP scales it))
gate3cvGate CV for output 3, edge-triggered (paramTarget gate3). Each rising edge rotates the sel3 selector to the next input, wrapping; held-high fires once via the same hysteresis edge detector.
control voltage (CV); modulates gate3 (summed directly (the destination DSP scales it))
gate4cvGate CV for output 4, edge-triggered (paramTarget gate4). Each rising edge rotates the sel4 selector to the next input, wrapping; held-high fires once via the same hysteresis edge detector.
control voltage (CV); modulates gate4 (summed directly (the destination DSP scales it))

outputs

idcablewhat it does
out1videoVideo output 1 — a discrete tap carrying exactly the input chosen by the sel1 selector (black if that input is unpatched). Also the canonical single-texture surface and the card's live OUT 1 preview.
RGB video stream
out2videoVideo output 2 — a discrete tap carrying exactly the input chosen by the sel2 selector (black if that input is unpatched).
RGB video stream
out3videoVideo output 3 — a discrete tap carrying exactly the input chosen by the sel3 selector (black if that input is unpatched).
RGB video stream
out4videoVideo output 4 — a discrete tap carrying exactly the input chosen by the sel4 selector (black if that input is unpatched).
RGB video stream

params

idlabelrangedefaultcurve
sel1OUT 10..?discrete
sel2OUT 20..?discrete
sel3OUT 30..?discrete
sel4OUT 40..?discrete
gate1G10..1linear
gate2G20..1linear
gate3G30..1linear
gate4G40..1linear

controls

controlwhat it does
G1Hidden synthetic param (linear 0..1) caching the gate1 CV level for output 1's rising-edge detector; driven by the gate1 jack via the CV bridge, not a knob on the card.
G2Hidden synthetic param (linear 0..1) caching the gate2 CV level for output 2's rising-edge detector; driven by the gate2 jack via the CV bridge, not a knob on the card.
G3Hidden synthetic param (linear 0..1) caching the gate3 CV level for output 3's rising-edge detector; driven by the gate3 jack via the CV bridge, not a knob on the card.
G4Hidden synthetic param (linear 0..1) caching the gate4 CV level for output 4's rising-edge detector; driven by the gate4 jack via the CV bridge, not a knob on the card.
OUT 1OUT 1 selector — a discrete fader choosing which input (IN1..IN4, raw index 0..3) output 1 carries. Snaps to integer indices and displays as IN1..IN4; gate1 rotates it on each rising edge.
OUT 2OUT 2 selector — a discrete fader choosing which input (IN1..IN4, raw index 0..3) output 2 carries. Snaps to integer indices and displays as IN1..IN4; gate2 rotates it on each rising edge.
OUT 3OUT 3 selector — a discrete fader choosing which input (IN1..IN4, raw index 0..3) output 3 carries. Snaps to integer indices and displays as IN1..IN4; gate3 rotates it on each rising edge.
OUT 4OUT 4 selector — a discrete fader choosing which input (IN1..IN4, raw index 0..3) output 4 carries. Snaps to integer indices and displays as IN1..IN4; gate4 rotates it on each rising edge.

source

4plexvid.ts on GitHub.

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