Manual · Firmware 1.12.0 · Oct 18, 2026
Capicola Manual
Firmware 1.12.0 (ceb2ceb) · SDK 0.12.0·Transient-locked keyframe time stretcher
This manual simulates having the module plugged in and accessed via the web programmer. You can view manual information in line with the controls, seeing everything in context. If you are developing for the SDK, use the manual hooks to embed this information in your firmware.
For live control, connect the module via its front USB port in the web programmer.
Module Introduction
Incoming stereo is stretched while its envelope and transients are tracked in parallel. When a transient passes the threshold, the lagging read head snaps to the current moment with a short crossfade and stretches on from there: time stretching that stays locked to the rhythm of the input. Pitch and time are fully decoupled, and can run forwards or backwards independently. The engine is Keyframe Time Stretching via Extrema Sampling (DAFx26).
Play
Settings
Control
Manual
Performance Page
Primary
The six main controls. A modulation attenuverter and source selection for each lives on the Depth and Routing pages, respectively.
Modulation is animated on each knob's ring: the arc follows the modulated position, not just the pot.
Grain playback speed and direction. It is decoupled from time: the stretch clock keeps its own rate. CW of noon the grains play forward, CCW they play backward, up to 2× either way. Noon stops the head; near noon is just very slow.
- Noon: Stop
- Unity: At ¼ and ¾, held by a ±0.03× detent
Playback rate of the keyframe grid. At noon the grid stops instead of crawling. CW runs it forward up to realtime, CCW runs it backward up to realtime reverse.
Running out of buffer
The recorder writes sparse keyframes into a ring buffer of fixed size: 2^21 keyframes per channel, about 44 seconds of full-rate stereo audio. Only extrema are kept, so in practice it holds minutes, and longer at low Quality. If a freeze or a reverse leaves the grid behind the oldest keyframe, it jumps back to now with a full crossfade rather than a click.
- Noon: True freeze
- Taper: |u|^2.5 each side; ¾ ≈ 5.7× slower
How readily a transient triggers a slice. Lower is more sensitive and slices more often; higher slices less. At the very top, auto-slicing is off, and only B2 or a jack assigned to Slice slices.
- CCW: Most sensitive: the most slices
- CW: Fewer slices
- Top: Auto-slicing off
- Pip: Mirrors Slice trigger
How long a grain plays before the head is spliced on: the summed duration of the next N keyframes, where N is the grain size. It counts keyframes, not time, so dense material gives short grains and sparse material long ones, and lower Quality stretches them further.
An extremum is only stored as a keyframe if its value differs enough from the previous keyframe. Quality sets how much is enough. CW keeps nearly every extremum; CCW keeps fewer, making the representation sparser and, in turn, crunchier and more lo-fi.
Fewer keyframes also means a longer buffer and longer freeze times.
- Pip: Mirrors Input envelope; red on input clip
The output is fed back into the input, through a saturator and a tunable state-variable bandpass on the way.
Feedback only bites near now: right after a slice, while the read head is close to the live input. The further a head lags behind now, the less influence the feedback has. The tap sits before the mix, so turning Mix down doesn't starve the loop.
- Unity: At ⅔ of the sweep
- Pip: Mirrors Output envelope
Left input. The two channels are detected and sliced independently.
Right input.
An incoming trigger starts a new slice.
Incoming voltage modulates pitch.
Incoming voltage modulates stretch.
Incoming voltage modulates feedback.
Sends a trigger whenever a slice starts.
Sends the input envelope from this jack.
Left output, after the dry/wet mix. There is no dry normalling in hardware.
Right output, after the dry/wet mix.
Presets
Save Slots
1Boot
Init
EditErase
2
Empty
3
Empty
4
Empty
5
Empty
6
Empty
7
Empty
8
Empty
9
Empty
10
Empty
11
Empty
12
Empty
13
Empty
14
Empty
15
Empty
16
Empty
The slots are a save history. Slot 1 is always your latest save, and slots 2–16 keep the fifteen before it; once they're full, each new save replaces the oldest. Panel saves name themselves Save 1, Save 2 and so on, so the programmer shows their order; a name you give a save in the programmer is kept. Recall an older one from the web programmer: load it onto the module, then save from the panel to make it your latest.