quadralogical
quadralogical · utilities · schema v1QUADRALOGICAL is a four-input video mixer driven by a single XY joystick. The pad's position (pos_x, pos_y) is mapped over the unit square to four CORNER weights — one per input: in1 top-left, in2 top-right, in3 bottom-left, in4 bottom-right. A bilinear base gives every corner (one input solo) and every edge (a 2-input blend) for free; outside the central yellow DIAMOND the weights are power-sharpened toward a crisp 2-input region, while inside the diamond all four inputs stay balanced (the all-4 composite zone). The model is "logical" because each of the FOUR edges of the joystick cycle (1-2, 2-3, 3-4, 4-1) carries its OWN independently-selectable blend effect (DISSOLVE / ADD / MULTIPLY / WIPE / CHROMA / LUMA / DIFF / IRIS) run on that edge's two adjacent inputs, and the four edge-blends are layered weighted by how active each pair is. Unpatched inputs normal down the chain Eurorack-style (in4 falls to in3 to in2 to in1), so a single source never blends against black. Usage: patch one to four video sources into in1-in4, drag the joystick to a corner for a clean cut to one input, to an edge to crossfade/wipe two of them with that edge's effect, or into the diamond for a four-way composite; set each edge's effect with its FX selector and CV-modulate the joystick or per-edge controls for animated transitions.
the faceplate
inputs
| id | cable | what it does |
|---|---|---|
in1 | video | Video input 1, mapped to the top-left corner of the joystick pad. If unpatched it falls through to the standalone black sentinel (it is the bottom of the normal chain). RGB video stream |
in2 | video | Video input 2, mapped to the top-right corner. If unpatched it normals down to the nearest lower patched input (in1). RGB video stream |
in3 | video | Video input 3, mapped to the bottom-left corner. If unpatched it normals down to the nearest lower patched input (in2 then in1). RGB video stream |
in4 | video | Video input 4, mapped to the bottom-right corner. If unpatched it normals down to the nearest lower patched input (in3, in2, then in1). RGB video stream |
pos_x | cv | CV that modulates X (horizontal joystick position, -1 to +1): -1 favors the left inputs (in1/in3), +1 favors the right inputs (in2/in4). control voltage (CV); modulates pos_x (additive offset — ±1 CV sweeps the full range, centered on the knob) |
pos_y | cv | CV that modulates Y (vertical joystick position, -1 to +1): +1 favors the top inputs (in1/in2), -1 favors the bottom inputs (in3/in4). control voltage (CV); modulates pos_y (additive offset — ±1 CV sweeps the full range, centered on the knob) |
diamond_margin | cv | CV that modulates Diamond (0 to 1): the size of the central all-four-blend zone, i.e. how far you can push the stick before it locks into a 2-input edge blend. control voltage (CV); modulates diamond_margin (additive offset — ±1 CV sweeps the full range, centered on the knob) |
blend_sharp | cv | CV that modulates Sharp (0 to 8): how aggressively the weights snap to a clean 2-input region once the stick leaves the diamond; higher is a harder transition. control voltage (CV); modulates blend_sharp (additive offset — ±1 CV sweeps the full range, centered on the knob) |
edge1_amount | cv | CV that modulates the 1-2 edge's primary control (Amt/Angle/Thr/Radius depending on that edge's selected effect). control voltage (CV); modulates edge1_amount (additive offset — ±1 CV sweeps the full range, centered on the knob) |
edge1_param | cv | CV that modulates the 1-2 edge's secondary control (wipe/iris/key softness or feather; unused for DISSOLVE/ADD/MULTIPLY/DIFF). control voltage (CV); modulates edge1_param (additive offset — ±1 CV sweeps the full range, centered on the knob) |
edge2_amount | cv | CV that modulates the 2-3 edge's primary control (Amt/Angle/Thr/Radius depending on that edge's selected effect). control voltage (CV); modulates edge2_amount (additive offset — ±1 CV sweeps the full range, centered on the knob) |
edge2_param | cv | CV that modulates the 2-3 edge's secondary control (softness/feather; only used by WIPE / CHROMA / LUMA / IRIS). control voltage (CV); modulates edge2_param (additive offset — ±1 CV sweeps the full range, centered on the knob) |
edge3_amount | cv | CV that modulates the 3-4 edge's primary control (Amt/Angle/Thr/Radius depending on that edge's selected effect). control voltage (CV); modulates edge3_amount (additive offset — ±1 CV sweeps the full range, centered on the knob) |
edge3_param | cv | CV that modulates the 3-4 edge's secondary control (softness/feather; only used by WIPE / CHROMA / LUMA / IRIS). control voltage (CV); modulates edge3_param (additive offset — ±1 CV sweeps the full range, centered on the knob) |
edge4_amount | cv | CV that modulates the 4-1 edge's primary control (Amt/Angle/Thr/Radius depending on that edge's selected effect). control voltage (CV); modulates edge4_amount (additive offset — ±1 CV sweeps the full range, centered on the knob) |
edge4_param | cv | CV that modulates the 4-1 edge's secondary control (softness/feather; only used by WIPE / CHROMA / LUMA / IRIS). control voltage (CV); modulates edge4_param (additive offset — ±1 CV sweeps the full range, centered on the knob) |
keyR | cv | CV that modulates Key R, the red channel of the shared chroma-key colour used by any edge set to the CHROMA effect. control voltage (CV); modulates keyR (additive offset — ±1 CV sweeps the full range, centered on the knob) |
keyG | cv | CV that modulates Key G, the green channel of the shared chroma-key colour (defaults to 1, i.e. green-screen). control voltage (CV); modulates keyG (additive offset — ±1 CV sweeps the full range, centered on the knob) |
keyB | cv | CV that modulates Key B, the blue channel of the shared chroma-key colour used by CHROMA edges. control voltage (CV); modulates keyB (additive offset — ±1 CV sweeps the full range, centered on the knob) |
outputs
| id | cable | what it does |
|---|---|---|
out | video | The MIX composite: the joystick-weighted, per-edge-effect blend of the four inputs. This is the canonical surface and what the on-card preview shows. RGB video stream |
preview | video | A 2x2 monitor tile of the four RAW inputs (in1 top-left, in2 top-right, in3 bottom-left, in4 bottom-right) with thin separator lines, for cueing sources independent of the mix. RGB video stream |
params
| id | label | range | default | curve |
|---|---|---|---|---|
pos_x | X | -1..1 | — | linear |
pos_y | Y | -1..1 | — | linear |
diamond_margin | Diamond | 0..1 | — | linear |
blend_sharp | Sharp | 0..8 | — | linear |
edge1_fx | 1–2 FX | 0..7 | — | discrete |
edge1_amount | 1–2 Amt | 0..1 | — | linear |
edge1_param | 1–2 Prm | 0..1 | — | linear |
edge2_fx | 2–3 FX | 0..7 | — | discrete |
edge2_amount | 2–3 Amt | 0..1 | — | linear |
edge2_param | 2–3 Prm | 0..1 | — | linear |
edge3_fx | 3–4 FX | 0..7 | — | discrete |
edge3_amount | 3–4 Amt | 0..1 | — | linear |
edge3_param | 3–4 Prm | 0..1 | — | linear |
edge4_fx | 4–1 FX | 0..7 | — | discrete |
edge4_amount | 4–1 Amt | 0..1 | — | linear |
edge4_param | 4–1 Prm | 0..1 | — | linear |
keyR | Key R | 0..1 | — | linear |
keyG | Key G | 0..1 | — | linear |
keyB | Key B | 0..1 | — | linear |
invert | Inv | 0..1 | — | linear |
freeze | Freeze | 0..1 | — | linear |
controls
| control | what it does |
|---|---|
| Sharp | Sharp (0 to 8, default 3): power-sharpening strength applied to the weights outside the diamond; higher gives a crisper switch toward a single edge pair. |
| Diamond | Diamond (0 to 1, default 0.5): radius of the central all-four-input composite zone; outside it the stick resolves to a 2-input edge blend. |
| 1–2 Amt | 1-2 Amt (0 to 1): the 1-2 edge effect's primary control — add/multiply/diff mix amount, WIPE angle, CHROMA/LUMA key threshold, or IRIS radius. |
| 1–2 FX | 1-2 FX (discrete 0 to 7): the blend effect for the in1-in2 edge — DISSOLVE, ADD, MULTIPLY, WIPE, CHROMA, LUMA, DIFF, or IRIS. |
| 1–2 Prm | 1-2 Prm (0 to 1): the 1-2 edge effect's secondary control — WIPE/IRIS softness/feather or CHROMA/LUMA key softness (hidden for DISSOLVE/ADD/MULTIPLY/DIFF). |
| 2–3 Amt | 2-3 Amt (0 to 1): the 2-3 edge effect's primary control (mix amount, WIPE angle, key threshold, or IRIS radius depending on the effect). |
| 2–3 FX | 2-3 FX (discrete 0 to 7): the blend effect for the in2-in3 edge — DISSOLVE, ADD, MULTIPLY, WIPE, CHROMA, LUMA, DIFF, or IRIS. |
| 2–3 Prm | 2-3 Prm (0 to 1): the 2-3 edge effect's secondary softness/feather control (only used by WIPE / CHROMA / LUMA / IRIS). |
| 3–4 Amt | 3-4 Amt (0 to 1): the 3-4 edge effect's primary control (mix amount, WIPE angle, key threshold, or IRIS radius depending on the effect). |
| 3–4 FX | 3-4 FX (discrete 0 to 7): the blend effect for the in3-in4 edge — DISSOLVE, ADD, MULTIPLY, WIPE, CHROMA, LUMA, DIFF, or IRIS. |
| 3–4 Prm | 3-4 Prm (0 to 1): the 3-4 edge effect's secondary softness/feather control (only used by WIPE / CHROMA / LUMA / IRIS). |
| 4–1 Amt | 4-1 Amt (0 to 1): the 4-1 edge effect's primary control (mix amount, WIPE angle, key threshold, or IRIS radius depending on the effect). |
| 4–1 FX | 4-1 FX (discrete 0 to 7): the blend effect for the in4-in1 edge — DISSOLVE, ADD, MULTIPLY, WIPE, CHROMA, LUMA, DIFF, or IRIS. |
| 4–1 Prm | 4-1 Prm (0 to 1): the 4-1 edge effect's secondary softness/feather control (only used by WIPE / CHROMA / LUMA / IRIS). |
| Freeze | Freeze (0 to 1, hidden): a determinism toggle for deterministic capture — at >=0.5 the renderer holds the last frame and stops drawing; no card control. |
| Inv | Inv (0 to 1): global key inversion — flips which side of the CHROMA/LUMA key threshold is kept versus revealed. |
| Key B | Key B (0 to 1): blue channel of the shared chroma-key colour matched by CHROMA edges. |
| Key G | Key G (0 to 1, default 1): green channel of the shared chroma-key colour; the default green-screen key. |
| Key R | Key R (0 to 1): red channel of the shared chroma-key colour matched by any edge running the CHROMA effect. |
| X | X joystick position (-1 to +1): horizontal balance between the left inputs (in1/in3) and the right inputs (in2/in4). |
| Y | Y joystick position (-1 to +1): vertical balance between the top inputs (in1/in2) and the bottom inputs (in3/in4). |
source
quadralogical.ts on GitHub.