Control Voltage
Control voltage is how modular synths move knobs without hands. A signal — an envelope, an LFO, a clock, a random walk — travels down a cable and becomes an input parameter for some other part of the pedalboard. pi-Stomp ships MOD's full CV toolkit, so you can build modulation that no single plugin offers: gain that sags after a hard attack, a filter that opens on the third beat of every bar, a delay that ducks itself.
The CV here is entirely internal, as pi-Stomp has no CV jacks on the enclosure.
How it works
CV routing is two separate steps, and this trips people up.
| Step | Where | What it does |
|---|---|---|
| Patch | Pedalboard canvas | Drag a cable from one plugin's CV output to another's CV input. Orange cables, same as audio cables otherwise. |
| Address | Plugin control | Point a control knob at a CV port, so the voltage drives the knob. |
The second step needs the CV port registered first. Click Manage CV Ports in the top bar of the pedalboard constructor — a checkbox appears next to every CV output jack on the canvas. Tick the one you want and give it a name. That name now shows up in the addressing dialog.
To address a control: click the plugin's knob, choose Control Voltage as the addressing type, pick your named CV port, and save. Under Advanced, the Range min/max sets how far the knob travels.
Voltage ranges
MOD's CV ports declare a −5 V to +5 V range. The addressing dialog offers three operational modes, and picking the wrong one wastes most of your travel:
| Mode | Range | Use when |
|---|---|---|
| − Unipolar | −10 to 0 V | Your source only goes negative |
| Bipolar | −5 to +5 V | Raw LFOs, raw audio, anything centred on zero |
| + Unipolar | 0 to +10 V | Rectified envelopes, gates, clocks |
What's on the device
Every one of these ships in the image. They're all a few arithmetic operations per sample — you can stack a dozen without touching the audio budget.
| Plugin | Role |
|---|---|
| Audio to CV | Audio in, CV out. Scales by Level, adds Offset. Passes the raw waveform — it is not an envelope follower. |
| CV ABS | Rectifies. fabs() on every sample. This is what turns a waveform into something envelope-shaped. |
| Slew Rate Limiter | One-pole smoothing with independent RiseTime and FallTime, 0.1–1000 ms each. This is your envelope's attack and decay. |
| Attenuverter Booster | Multiply (−10 to +10, so it inverts) and offset. Exponential mode squares the multiplier. |
| CV Parameter Modulation | Base value plus signed depth (−200 to +200), as an alternative to addressing with a min/max range. |
| CV Range Divider | Splits an incoming range across two outputs. |
| CV Round | Quantises to steps. |
| CV Gate, CV Clock | Threshold gate and tempo pulse. |
| Random Generator | Sample-and-hold randomness. |
| CV Switchbox 1-2, 1-3, 2-1, 3-1 | Route one source to several destinations, or pick between sources. |
| CV meter | Look at what your voltage is actually doing. Use this while patching. |
| Logic Operators | Boolean combination of two CV inputs. |
| Control to CV | Turn a static knob value into a voltage. |
| MIDI to CV mono/poly | Note pitch as 1/12 V per semitone, plus gate. |
| AudioToCV Pitch | Pitch tracking to CV. |
| AMS Envelope, AMS LFO2, AMS VCA, AMS VCF, AMS VCO3 | AlsaModularSynth modules — a full synth voice if you want one. |
Patch CV meter in parallel with anything you're building. Voltage that looks right on paper is often two orders of magnitude off in practice, and the meter turns twenty minutes of guessing into ten seconds of looking.
Building an envelope
There is no envelope follower plugin. You build one, and it takes three blocks:
audio ─► Audio to CV ─► CV ABS ─► Slew Rate Limiter ─► (envelope)
Audio to CV hands you the waveform at CV rate. CV ABS folds the negative half up. The Slew Rate Limiter does the actual envelope work: RiseTime sets how fast the envelope chases an attack, FallTime sets how long it hangs on afterwards. Short rise and long fall gives you a classic follower — a few milliseconds up, a few hundred down.
Skipping CV ABS is the common mistake. Slew-limiting a bipolar waveform gives you a smeared waveform, not an envelope.
Worked example: bias collapse
A starved or misbiased fuzz sags when you hit it hard. The transistor's operating point drops, the gain falls out from under the note, and the decay splutters and gates. No plugin on the device models this, but the envelope can fake it convincingly.
The trick is that the gain has to move opposite to the envelope, and recover slowly.
Six blocks on the canvas. The input splits: one audio cable carries the sound, the other feeds the sensing chain.
AUDIO INPUT ┌───────────────────────────┐ AUDIO OUTPUT
┌───────────┐ │ GxSupersonic │ ┌────────────┐
│ │ │ │ │ │
│ capture_1 ○────┬───►○ in out ○─┼───────►○ playback_1 │
│ │ │ │ │ │ │
└───────────┘ │ │ VOL BASS TREBLE GAIN │ └────────────┘
│ └───────────────────────╥───┘
│ ║
┌─────────────┘ ║
│ ║══════════════════════════════
▼ ║
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ ║
│ Audio to CV │ │ CV ABS │ │ Slew Rate │ │ Attenuverter │ ║
│ │ │ │ │ Limiter │ │ Booster │ ║
│ ○ AudioIn │ │ ○ CVin │ │ ○ CVIn │ │ ○ CVin │ ║
│ │ │ │ │ │ │ │ ║
│ CVout ○─┼─►┼─ CVout1 ○────┼─►┼─ CVout ○─────┼─►┼─ CVout1 ○ ═══════════╝
│ │ │ │ │ │ │ ☑ Bias │
│ Level 2.0 │ │ │ │ Rise 5 ms │ │ Mult −2.0 │
│ Offset 0.0 │ │ │ │ Fall 400 ms │ │ Offset +10.0 │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────────┘
───► audio cable ─► CV cable ═══ addressing (no cable)
The Attenuverter's CVout1 is the one you tick under Manage CV Ports; the diagram names it "Bias". Nothing plugs into GxSupersonic — the last hop is an addressing, which is why the drive has no CV input jack and doesn't need one.
| Plugin | Control | Value | Why |
|---|---|---|---|
| Audio to CV | Level | 2.0 | Enough swing to work with; check on the meter |
| Slew Rate Limiter | RiseTime | 5 ms | Envelope catches the pick attack |
| Slew Rate Limiter | FallTime | 400 ms | Gain stays collapsed through the decay |
| Attenuverter Booster | Multiplier | −2.0 | Inverts: loud in, low voltage out |
| Attenuverter Booster | Offset | +10.0 | Puts the resting voltage at the top of the range |
Address GxSupersonic's GAIN to the "Bias" port, + Unipolar, with the Advanced range set to 0.30–0.70. Silence leaves the Attenuverter at +10 V, which is the top of the range and GAIN 0.70. A hard attack drives it toward 0 V and GAIN 0.30. Hit a chord and the drive ducks, then crawls back as the note dies — the note eats its own gain.
FallTime is the control that matters. Under 200 ms it reads as a compressor. Past 600 ms it stops recovering between notes and just sounds quiet. The splutter lives in between.
One writer principle
You cannot control a parameter both with CV and with an analog controller. Decide which you want to drive directly, and which you want driven by control voltage.