Stoatworks Labs

Valve

Video through a valve amplifier, for Resolume

Betav0.1.0Plugin & ModuleC++ / GLSL
Valve — Video through a valve amplifier, for Resolume
No screenshot. This one's configuration inside another application.

What it does

An FFGL effect for Resolume Arena and Avenue. Nobody draws a valve's transfer curve. It's where the valve's plate-current law meets the circuit's load line. Valve puts the video level on the grid of a proper stage (a valve, a 100 k plate resistor on a 300 V supply, and the next grid's leak) and solves for the plate, using Norman Koren's published SPICE models with his constants for each valve type.

The stages chain the way a guitar amp's do: up to four common-cathode preamp triodes with a tone stack's loss between them, then a phase inverter and either one power valve into an output transformer or a push-pull pair on a centre-tapped one. Drive, Bias, Master and the power valves' idle dissipation are the knobs an amp has.

Here's what comes out without being drawn. A 12AX7 stage has a gain of 59 and clips at a volt, where a 12AU7 has 13 and stays clean. The curve fades softly into cutoff and breaks hard at a knee where the grid starts to conduct. Every stage inverts, so the soft and hard sides swap over down a chain. One valve makes even harmonics and a matched pair cancels them, and a pair biased cold draws a crossover step through the mid-tones.

There are three ways to feed it. RGB gives each channel its own amplifier, so overdrive pushes hues towards the primaries. Y/C sends the chroma as a subcarrier through its own chain, so its amplitude saturates and limits but the hue can't move. Composite sends both through one chain, so a colour's gain follows the brightness it's riding on. Show Curve draws what the valves are up to in a corner of the picture.

  • Eight valves from Norman Koren's models: 12AX7, 12AT7, 12AU7 and 6DJ8 preamp triodes; EL34, 6L6GC, KT88 and 300B power valves
  • Up to four preamp stages, then single-ended or push-pull power, solved on real load lines
  • Asymmetric clipping: a soft fade into cutoff and a hard knee where the grid conducts
  • Crossover distortion from a cold-biased push-pull pair; mismatched valves bring the even harmonics back
  • RGB, Y/C (chroma as a subcarrier, hue kept) or Composite (differential gain)
  • Rest Level for dark footage, Fit, Unity or Plate output, and a Show Curve overlay
  • Universal macOS bundle and Windows x64 DLL

Where it stands

v0.1.0, and early days. It hasn't been loaded into Resolume on macOS yet. On Windows it has: a build loads, registers and renders in Resolume Arena 7.27.1 on software rendering (no GPU), with every parameter as declared, every control moving the picture, and all 9 of the fleet's checks passed. Everything else is measured by an offline harness driving the real plugin and reading each claim back out of the picture it made: each valve's gain at the operating point matches theory to four or five figures (a 12AX7 stage 58.900 against 58.901, an EL34 pair 8.7404 against 8.7405); the knee where the grid starts to conduct is at the right column and as sharp as the grid resistance predicts; one valve's second harmonic matches Taylor's prediction and a matched pair's all but vanishes; a cold pair's crossover notch is as deep as the model says; Y/C keeps every hue to float precision while RGB turns hue by half a radian; and Composite's chroma gain follows the curve's slope. It catches eight models broken on purpose and one-character changes to its own code, and all 24 controls change the picture. The valves are Koren's fits, good to a few per cent, and the model is instantaneous, so the Miller smear, coupling-capacitor blocking and supply sag of a real stage aren't in it. The macOS build is signed and notarised. There's a user guide, but no presets, no OpenFX port and no browser demo. Try it in your own rig before you trust it in a show.

Watch it running

Valve video thumbnail

Nothing loads from YouTube until you press play.Watch it there instead