xyz
ruttetra · outputAn authentic forward-scatter Rutt/Etra scan-processor. A 320x180 grid of sample points walks the Z source; for each point it reads the source luma, places it along an internally-generated H/V ramp, then displaces that position by (luma - 0.5) so bright pixels push their scanline outward and dark pixels recede - building a 3D heightmap relief out of the picture. Adjacent grid points within each row are joined into horizontal LINE segments, and the whole raster is drawn with additive (phosphor) blending over a black field, exactly like a CRT scope. With everything at default the ramp is a linear 1:1 mapping and Y Disp = -0.3, so the source is read upright and bright areas raise the terrain - the classic Rutt/Etra "raised landscape" look. Patch any video, image, or keyer into Z; sweep Y Disp (and X Disp) for relief depth, raise Intensity for a brighter glow, morph the X/Y Shape ramps toward triangle/soft/radial for warped scan geometry, and modulate the params with CV for animated topography. Z left unpatched binds a mid-grey sentinel (luma 0.5 = zero displacement), so the card shows flat scanlines rather than a black void. There is a live preview screen with the picture, and two switches beside it that do opposite things: SCREEN turns the preview off to reclaim its space (the module goes on rendering either way), and MONITOR hides the control bands so the picture has the whole plate to itself - drag the bottom-right corner to size it, and click MONITOR again to bring the controls back. Either way it is a viewport only; neither changes the output resolution.
the faceplate
inputs
| id | cable | what it does |
|---|---|---|
z | video | Z (video) - the source frame. Its per-pixel luma (0.299R+0.587G+0.114B) is sampled at each of the 320x180 grid points and drives that point's outward displacement; the source RGB is also carried through as the scanline color. Accepts video, mono-video, image, or keys (upcast by the engine). Unpatched, a mid-grey 1x1 texture is bound so luma is 0.5 everywhere and the scanlines draw flat instead of going black. RGB video stream |
xShape | cv | X Shape (cv) - modulates the X Shape control, morphing the horizontal ramp shape (linear -> triangle -> soft-fold -> radial) that positions each scanline across the frame. control voltage (CV); modulates xShape (additive offset — ±1 CV sweeps the full range, centered on the knob) |
yShape | cv | Y Shape (cv) - modulates the Y Shape control, morphing the vertical ramp shape (linear -> triangle -> soft-fold -> radial) that stacks the scanlines down the frame. control voltage (CV); modulates yShape (additive offset — ±1 CV sweeps the full range, centered on the knob) |
xDisp | cv | X Disp (cv) - modulates the X Disp control, scaling how far each point is pushed left/right by its luma (bipolar around mid-grey). control voltage (CV); modulates xDisp (additive offset — ±1 CV sweeps the full range, centered on the knob) |
yDisp | cv | Y Disp (cv) - modulates the Y Disp control, scaling how far each point is pushed up/down by its luma; this is the main relief/height knob of the heightmap. control voltage (CV); modulates yDisp (additive offset — ±1 CV sweeps the full range, centered on the knob) |
intensity | cv | Intensity (cv) - modulates the Intensity control, scaling the brightness of the additively-blended scanlines. control voltage (CV); modulates intensity (additive offset — ±1 CV sweeps the full range, centered on the knob) |
xFreq | cv | X Freq (cv) - modulates the X Freq control, setting how many horizontal ramp cycles span the frame (0.25..8); higher values repeat the scan pattern across X. control voltage (CV); modulates xFreq (additive offset — ±1 CV sweeps the full range, centered on the knob) |
yFreq | cv | Y Freq (cv) - modulates the Y Freq control, setting how many vertical ramp cycles span the frame (0.25..8); higher values repeat the scan pattern down Y. control voltage (CV); modulates yFreq (additive offset — ±1 CV sweeps the full range, centered on the knob) |
outputs
| id | cable | what it does |
|---|---|---|
out | video | out (video) - the rendered Rutt/Etra raster: additive horizontal scanlines, luma-displaced into a heightmap, over a black phosphor field. Chainable into any video input and also feeds the on-card preview screen. RGB video stream |
params
| id | label | range | default | curve |
|---|---|---|---|---|
xShape | X Shape | 0..1 | — | linear |
yShape | Y Shape | 0..1 | — | linear |
xDisp | X Disp | -1..1 | — | linear |
yDisp | Y Disp | -1..1 | — | linear |
intensity | Intensity | 0..2 | — | linear |
tintR | R | 0..1 | — | linear |
tintG | G | 0..1 | — | linear |
tintB | B | 0..1 | — | linear |
xFreq | X Freq | 0.25..8 | — | linear |
yFreq | Y Freq | 0.25..8 | — | linear |
xPhase | X Phase | 0..1 | — | linear |
yPhase | Y Phase | 0..1 | — | linear |
controls
| control | what it does |
|---|---|
| Intensity | Intensity (0..2, default 1.5) - multiplies the scanline color before the additive blend; raises or dims the overall glow of the raster (default 1.5 keeps the additive lines from looking too faint). It affects brightness only, not relief depth. |
| B | B (0..1, default 1) - blue multiplier applied to every scanline's color. Combine R/G/B to push the whole raster toward a monochrome CRT hue. No CV input (panel control only). |
| G | G (0..1, default 1) - green multiplier applied to every scanline's color. Lower it to drain green from the phosphor tint. No CV input (panel control only). |
| R | R (0..1, default 1) - red multiplier applied to every scanline's color. Lower it to drain red from the phosphor tint. No CV input (panel control only). |
| X Disp | X Disp (-1..1, default 0) - bipolar amount that luma pushes each point horizontally. (luma - 0.5) * X Disp, so mid-grey never moves; negative and positive deflect bright pixels to opposite sides. |
| X Freq | X Freq (0.25..8, default 1) - horizontal ramp frequency: how many shape-ramp cycles span the frame in X. 1 = one pass; higher values repeat/fold the scan pattern across the width. BELOW 1 the ramp never completes, so the picture is COMPRESSED into that fraction of the width and the rest of the frame stays black - at 0.25 the whole raster occupies the left quarter. On the faceplate it sits on the SCAN page beside X Phase; the legacy card keeps it under the ADVANCED disclosure. |
| X Phase | X Phase (0..1, default 0) - phase offset added to the horizontal ramp after the frequency multiply and before shaping, sliding the X scan pattern sideways. Panel control only (no CV input); on the SCAN page of the faceplate, under ADVANCED on the legacy card. |
| X Shape | X Shape (0..1, default 0) - morphs the horizontal ramp shape that lays the source across each scanline. 0 = linear (1:1, the unwarped raster), ~0.33 = triangle, ~0.66 = soft-fold (raised cosine), 1 = radial (distance from center). The dial is marked at those four anchors and names the nearest one as you sweep it (linear / triangle / soft / radial); the legacy card prints the crossfades between them as well. |
| Y Disp | Y Disp (-1..1, default -0.3) - bipolar amount that luma pushes each point vertically; this builds the 3D relief. The default -0.3 makes bright pixels rise (the classic raised-terrain look). |
| Y Freq | Y Freq (0.25..8, default 1) - vertical ramp frequency: how many shape-ramp cycles span the frame in Y. 1 = one pass; higher values repeat/fold the scanlines down the height. BELOW 1 the scanlines are compressed into that fraction of the height - at 0.25 the whole raster occupies the top quarter. On the faceplate it sits on the SCAN page; the legacy card keeps it under ADVANCED. |
| Y Phase | Y Phase (0..1, default 0) - phase offset added to the vertical ramp after the frequency multiply and before shaping, sliding the Y scan pattern up/down. Panel control only (no CV input); on the SCAN page of the faceplate, under ADVANCED on the legacy card. |
| Y Shape | Y Shape (0..1, default 0) - morphs the vertical ramp shape that stacks the scanlines down the frame, through the same linear -> triangle -> soft-fold -> radial sequence as X Shape, marked and named at the same four anchors. |
source
ruttetra.ts on GitHub.