01
Overview
Two independent stereo delay lines at 48 kHz, 24-sample blocks. Each line carries its own time, feedback, mix, engine character, diffuser, multitap, and damping. Delay time ranges from 1 ms to 16 seconds; feedback runs 0 to 110 percent. Every control parameter is slewed at audio rate (~20 ms one-pole) so movement stays zipper-free.
The continuum from delay to reverb is built in. Short times with high feedback give comb resonance; the middle range is stereo delay with selectable engine character (Digi, BBD, Tape, Vinyl); high Diffusion and Bloom turn each line into a plate- or hall-like tail.
Driven by six pots across three performance pages, three buttons, six CV inputs, and a Settings mode reached via a button chord.
02
Signal flow
Stereo input enters and is routed to two stereo delay lines, Line 1 and Line 2. Each stereo line is implemented as a pair of mono delays (Line1_L, Line1_R, Line2_L, Line2_R). The firmware holds four delay buffers arranged as two stereo lines.
Routing between the two lines is selected on the Settings Routing page:
Series stereo (default). Line 1's output feeds Line 2's input forward only. There is no cross-line feedback: each line's feedback path is strictly within its own line.
Parallel stereo. Each stereo line runs independently from the same input and the two sum at the output.
Isolated mono. The two lines split across the stereo field: one line takes one channel, the other takes the other.
Spectral stereo. A one-pole crossover splits input by frequency between the two lines. Crossover frequency is configurable from 100 Hz to 8 kHz (noon ≈ 894 Hz).
Inside each line, per sample: buffer read → multitap summing → diffuser (four-stage Schroeder all-pass) → engine post-read stages (HF loss, noise, de-emphasis) → damping (which sits inside the feedback path) → engine pre-buffer stages (pre-emphasis, soft saturation, compander compress, bandwidth LP) → glitch and crackle → write back into the buffer. Dry / wet mix happens at the line output.
03
The engines
Each line has its own engine character, set by the Engine pot on Page 2. The pot is a 4-way snap selector (Digi, BBD, Tape, Vinyl) with hard transitions between zones; no crossfading. With Engine Depth at zero, the engine is a bit-equivalent bypass regardless of which voicing is selected.
Digi. Clean digital delay with optional glitch insertion (sample stutter, bit drop, micro-mute) and a 12-bit crush at full Depth.
BBD. Bucket-brigade voicing with companding gain and a bandwidth limit around 1.5 kHz, post-driven 1.6×. Dark, smeared, lo-fi at depth.
Tape. Pre-drive 1.3×, post-drive 2.6×, 6 dB pre-emphasis. Wow at 0.55 Hz peak 110 ms; flutter at 9 Hz peak 10 ms. Bandwidth-variable tape hiss.
Vinyl. 33-1/3 rpm wow at 0.555 Hz peak 60 ms. Crackle layered as sizzle, ticks, and pops. −2 dB pre-emphasis. Surface noise and platter rumble.
04
Buttons
B1. Short press advances the performance page (Page 0 Time, Page 1 Space, Page 2 Engine). Hold B1 and nudge a pot at least three percent to record a parameter lock on that pot.
B2. Tap-tempo for Line 1. Hold B1 + press B2 to toggle freeze on Line 1.
B3. Tap-tempo for Line 2. Hold B1 + press B3 to toggle freeze on Line 2.
B2 + B3 held ≥ 2 s. Enters or exits Settings.
05
Performance pages
Pots follow one of two layouts, chosen by the Layout setting. The default standard layout pairs each row by parameter (Line 1 left, Line 2 right):
Page 0: Time. P1 Line 1 Time, P2 Line 2 Time, P3 Line 1 Feedback, P4 Line 2 Feedback, P5 Line 1 Mix, P6 Line 2 Mix.
Page 1: Space. P1 Line 1 Diffusion, P2 Line 2 Diffusion, P3 Line 1 Bloom, P4 Line 2 Bloom, P5 Line 1 Damping, P6 Line 2 Damping.
Page 2: Engine. P1 Line 1 Engine, P2 Line 2 Engine, P3 Line 1 Engine Depth, P4 Line 2 Engine Depth, P5 Line 1 Multitap, P6 Line 2 Multitap.
Alt layout groups by line instead: Page 0 holds every Line 1 control across all three families, Page 1 holds the same for Line 2, Page 2 is unchanged.
Mix has a soft unmute ramp at the bottom of its travel: below two percent the line is dead, two to five percent ramps up to five percent wet, then identity. Feedback snaps to exact unity over a small zone between 0.9000 and 0.9182.
Page changes re-arm pot-catch: each pot stays uncaught until the physical knob passes through its stored value (or lands within half a percent of it), so changing pages never jumps a parameter. A bright pip on the ring marks the stored value while uncaught. Parameter-lock recording draws a red pip at six o'clock during record; the same pip flips green during active playback.
06
Delay & feedback
Delay time ranges from 1 ms to 16 seconds in code. The user-facing maximum is selectable in Settings to one of 2, 4, 8, 12, or 16 seconds (default 4 s). The Time pot taper is exponential by default and switchable to linear in Settings.
Feedback runs 0 to 1.10 (110 percent). Past unity the line self-oscillates; a tanh soft-clip and the in-feedback damping low-pass prevent runaway. The 1.0 snap zone (0.9000–0.9182) makes unity easy to dial in.
Freeze is a per-line state that latches the feedback path into capture mode. Engage it with B1+B2 (Line 1) or B1+B3 (Line 2), or by routing any CV jack to the freeze-line-1 or freeze-line-2 destination and driving it high. Freeze CV destinations are gate-style and ignore per-jack attenuation.
07
Diffuser & reverb
Each line carries a four-stage Schroeder all-pass diffuser inside its feedback loop. Loop lengths per stage are bounded between [173, 269, 379, 521] samples (minimum) and [1901, 2953, 4153, 5749] samples (maximum). There is no global reverb; reverb-like behavior emerges from the per-line diffusers.
Diffusion. All-pass smearing depth inside the feedback loop. Low keeps distinct repeats; high dissolves taps into a wash.
Bloom. Loop-length and modulation depth across the four stages. Near zero the loops are short and fixed (LFOs bypass for zero CPU cost); near one the loops are long and modulated, giving plate/hall tails.
Damping. Bipolar tone shaper inside the feedback path. At noon it is transparent. Below noon a one-pole low-pass darkens each successive tail; above noon a complementary high-pass brightens it.
08
Multitap
Each line has a four-mode multitap stage selected on the Engine page:
Mode 0: Single. The main tap only.
Mode 1: Two-tap. One additional tap at 33.3 % of delay time, amplitude 0.6.
Mode 2: Rhythmic. Three additional taps at 25 %, 50 %, 75 % of delay time, amplitudes 0.5, 0.6, 0.7.
Mode 3: Golden ratio. Three additional taps at 23.6 %, 38.2 %, 61.8 % of delay time, amplitudes 0.4, 0.5, 0.6.
09
Parameter lock
Every pot, on every page, records a looping motion. The buffer is 256 frames advanced at the control frame rate (~60 Hz), giving about four seconds of loop. Engage by holding B1 and nudging the pot at least three percent of its travel. Playback is overlay: the recorded motion is added to the live pot position and any CV modulation; the physical pot is never overwritten. Locks loop on the fixed buffer regardless of tempo; there is no musical-bar quantization.
Locks are stored per (page, pot). The firmware reserves 54 lock-storage slots so the alt layout never overwrites the standard one. Locks persist with presets under a schema-hashed tag.
10
Presets
16 preset slots, wear-leveled in QSPI flash. Save and recall live on the Settings Routing page.
To save or load: hold B2+B3 for two seconds to enter Settings, turn the slot-select pot to pick a slot from 0 to 15, then turn the action pot hard counter-clockwise to save or hard clockwise to load. The action pot has a wide neutral zone (0.30 to 0.70). A flash on the rings confirms the commit.
A preset captures all pots, all parameter-lock buffers, the per-line engine selections, and the Settings choices bound to the preset. The 16-slot indicator encodes the active slot on the slot-select pot's ring as a four-color group with one to four arc segments.
11
Clock & tap
Tap-tempo is always live on B2 (Line 1) and B3 (Line 2). The averager keeps the last four intervals, accepts taps 50 ms to 4000 ms apart, and rejects holds longer than about 600 ms.
External clock is read at 24 PPQN. Schmitt thresholds are tightened to 0.60 / 0.70 so the input behaves cleanly with unipolar Eurorack clocks. The Clock mode setting on the Global page chooses free (tap only, ignore external clock) or div (external clock drives a PLL that snaps delay time to musical divisions).
In div mode, if the external clock disappears for 500 ms the line exits locked state and continues at the last resolved time, with no freeze and no jump.
12
CV routing
Six CV inputs. Each jack is routed to one destination from a 23-zone selector: five gate-style specials (tap both, tap Line 1, tap Line 2, freeze Line 1, freeze Line 2) plus 18 continuous destinations (three pages × six pots).
The six jacks geometrically pair with the six pots as a quarter-counter-clockwise rotation of the panel: P1↔J4, P2↔J3, P3↔J6, P4↔J5, P5↔J8, P6↔J7. The mapping is self-inverse.
Continuous-parameter CV sums on top of the pot and any active parameter lock. Each jack has its own bipolar attenuverter in Settings (range −1.0 to +1.0, default +1.0). Gate-style specials ignore attenuation.
13
Settings
Hold B2+B3 for two seconds to enter Settings. Four pages, navigated with B1.
Routing. Routing mode (Series / Parallel / Isolated / Spectral, default Series), spectral crossover (100 Hz to 8 kHz, noon ≈ 894 Hz), preset slot (0 to 15), preset save / load action pot, output gain Line 1 (default 0.6, ≈ −4.4 dB), output gain Line 2 (default 0.6).
Global. P1 brightness (default 0.20, range 0.05–0.35), P2 time taper (exponential / linear, default exponential), P3 layout (standard / alt), P4 clock mode (free / div), P5 max delay time (2 / 4 / 8 / 12 / 16 s, default 4 s), P6 LED palette (standard / colorblind-safe).
CV. Per-jack destination from the 23-zone selector.
Attenuation. Per-jack bipolar attenuverter for continuous destinations (−1.0 to +1.0, default +1.0).
14
Hardware
For panel anatomy, jack electrical specs, calibration, and bootloader, see the Alchemy Lab hardware manual.