Hermetic Modular

Alchemy Lab / Capicola / Manual / Verbose

Capicola
Full Text Manual

Capicola is a transient-locked time-stretcher and pitch-shifter firmware for the Alchemy Lab. This is the long-form firmware reference. For hardware (HP, power, jacks, calibration, bootloader) see the Alchemy Lab hardware manual.

01

Overview

Capicola listens constantly. Two independent channels, left and right, each run a transient detector over the input. Every detected transient, or a press of B2, or a rising edge on TRIG IN, splices the granular playback head onto fresh material. Pitch and time-stretch are fully decoupled, and the stretch grid re-anchors on every trigger, so stretched tails ring out underneath while the output stays locked to the incoming rhythm.

The wet path's latency is the OLA crossfade: 20 ms by default, adjustable 10 to 250 ms on the secondary page. The fade is also the retrigger floor, so splices cannot come faster than the fade length. Audio runs at 48 kHz, 24-bit stereo.

Driven by six pots across four pages in two groups, three buttons, six CV jacks, and a preset store.

02

The engine

The DSP is keyframe time stretching via extrema sampling, peer-reviewed for DAFx26. Incoming stereo is stretched, and in parallel its envelope and transients are extracted. When a transient passes the threshold, the lagging read head snaps to the current time with a short crossfade and stretches on from there. That is time stretching that stays true to the rhythm of the input.

Both detectors run on their own smoothed TKEO envelopes: the input side is the max of left and right, the output side runs on the post-mix sum. The output follower never triggers a slice; it is a signal source only.

03

Getting around

Four pages in two groups, each rotated by a single press of its own button. Each group remembers where it was left: pressing the other group's button jumps straight to that group's remembered page, and the next press of the same button advances within the group.

B1 group. Primary (orange) to Depth (pink). The six knobs you play, and their bipolar modulation depths.

B3 group. Routing (blue) to Secondary (teal). Per-knob modulation source, and the deeper voicing controls.

Every page stores its own value per knob. After boot or a page switch a knob is decoupled until the physical pot sweeps through the stored value, shown as a muted pip on the ring. Then it catches and tracks; nothing ever jumps. On the routing page the catch is zone-granular: entering the stored zone is enough.

04

Primary page (B1, orange)

The six performance knobs.

P1 Pitch, ±12 semitones. Grain pitch, decoupled from time. Unity at noon, with a small detent that snaps to true 0.

P2 Stretch, realtime to frozen. Playback rate of the keyframe grid. CCW is realtime; noon is roughly 6 times slow; full CW is a true freeze where the grid stops rather than crawling. Triggers still re-anchor it while frozen.

P3 Threshold, self-calibrating. Events are kept at a running average of the detector's own envelope, so it is a ratio, not an absolute level: no gain-staging, and it survives level changes. The very top of the knob mutes auto-triggering; only B2 or TRIG IN slices from there.

P4 Grain size, 32 to 4096 keyframes. How much keyframe material a grain covers before the head is sliced on.

P5 Quality. The analyzer keyframe threshold. CW is full fidelity; CCW drops keyframes for a sparse, crunchy reconstruction. Lower quality means a longer buffer.

P6 Feedback, 0 to 1.5. Loop gain. The wet output runs through a sinc saturator and a bandpass, then back into the recorder where it is re-sliced and re-pitched. Above unity is deliberately unstable. The tap sits before the mix blend, so pulling mix down never starves it.

The pip at six o'clock on P3 through P6 mirrors the four CV outputs: Trig 1, Trig 2, Env 1, Env 2. Env 1 turns red when the input clips.

05

Depth page (B1, pink)

Each pot is the bipolar modulation depth for the same-numbered performance knob: noon is off, clockwise is positive, counter-clockwise is negative. A faint page-hued glow marks a centered, inactive depth. Applied to the knob's position, so a modulated knob keeps its own taper and endpoints. Hold B1 and B3 to zero the whole page.

06

Routing page (B3, blue)

Each pot picks the modulation source for the same-numbered performance knob, CCW to CW: input follower, output follower, CV IN. The ring shows all three zones dim with the selected one lit, so it doubles as the position map.

The default is the input follower, so the module self-patches out of the box: every performance control is normalized to the envelope followers, and the dynamics of the signal modulate them in real time. The output follower is the wilder option: it hears what the module is already doing, so depth alone closes a loop. The CV IN jack is the only bipolar source of the three.

07

Secondary page (B3, teal)

Deeper voicing controls, saved with everything else in the preset store.

P1 Smoothing. Cutoff of the follower both envelopes run through. Low-pass filters the signal before detection.

P2 Fade, 10 to 250 ms. Real-time latency, and button-triggered slice duration. Longer times mean more latency with longer crossfades on button press. This is also the retrigger floor.

P3 Drive. Gain into the keyframe shaper, applied to the keyframes themselves to reduce aliasing.

P4 Character. A morph from a tape-like dropout saturation curve, to clean, to a wobbly boost saturator. The tape saturator reduces the volume of low-amplitude signals; the boost saturator boosts them.

P5 Mix. Dry/wet. The wet path lags the dry by the fade, so mid-mix settings comb against sustained material. Full wet is the classic Capicola behavior.

P6 FB Tone. Bandpass centre inside the feedback loop. Affects the tonality of the feedback.

08

Buttons

B1, Pager. Click steps Primary to Depth, or returns to where the group was left. Held with B3 for half a second, resets the visible page to factory defaults.

B2, Slice and save. Press fires a slice, jumping the read head to the current time, even at threshold mute. Held a second and a half, saves all four pages as the boot state. The press still slices on the way down.

B3, Pager. Click steps Routing to Secondary, or returns to where the group was left.

All three buttons wear the visible page's hue and are never off, so activity reads as a dark flash: B2 blinks off on a slice, and all three blink three times to confirm a save or a reset.

09

Jacks

A bottom 2 by 5 grid: the left column is inputs, the right column is outputs. Detection and slicing run per channel.

IN L / IN R. Left and right inputs. The two channels are detected and sliced independently.

TRIG IN. External slice trigger. Rising edge, always accepted, even at threshold mute.

CV IN. External modulation source, routable to any Primary knob from the Routing page. The only bipolar source of the three.

TRIG 1 / TRIG 2. Trig 1 fires a slice, the same as pressing the slice button. Trig 2 is a gate on the output follower's transients.

ENV 1 / ENV 2. The input and output follower envelopes, mirrored on the P5 and P6 pips.

Output is the mix; there is no dry normalling in hardware.

10

Presets and boot state

Sixteen preset slots store the complete state of the module: every page, every setting marked as preset material, and everything else the firmware manages. Slot 0 is the boot slot; it loads automatically at power-up.

Hold B2 for a second and a half to write the current state to slot 0, confirmed by the triple dark blink. Presets are also saved and named from the web programmer. Slots written by a different firmware version are flagged in the programmer.