66 stretchcore

ClassicWildsamplerloopertimestretchweb-serial

stretchcore plays uploaded mono sample loops with internal or external tempo control, granular timestretch, position jumps, sample selection, and two independent slow random CV outputs. Its Web Serial sample manager can preview, crop, read back, and replace the sample bank without reflashing the firmware.

WatchDemo video

Panel

Workshop Computer panelTimestretchInternal TempoJump PositionTimestretch ModPosition OffsetExternal Tempo ClockJump TriggerLoop Output 1Loop Output 2Random CV 1Random CV 2Jump PulseSelect Pulse

Controls

Main knob

Timestretch
Sets the timestretch amount; CV In 1 adds bipolar modulation when patched

X knob

Internal Tempo
Sets playback tempo from 100 to 200 BPM when no external clock is active

Y knob

Jump Position
Sets the position used by the next switch-down or Pulse In 2 jump

Switch

Select Sample: Selects a sample according to the Y knob position and fires Pulse Out 2

Loop Playback: Normal playback; Main controls timestretch, X controls internal tempo, and Y sets the next jump position

Jump Position: Jumps playback to the position selected by Y and fires Pulse Out 1

Inputs & Outputs

Inputs

Outputs

Inputs

CV 1

Timestretch Mod
Adds bipolar modulation to the Main knob's timestretch amount when patched

CV 2

Position Offset
Adds a bipolar offset to the Y position when Pulse In 2 triggers a jump

Pulse 1

External Tempo Clock
Two-pulses-per-quarter-note tempo clock; overrides the X knob while active

Pulse 2

Jump Trigger
Jumps playback to the Y position, offset by CV In 2 when patched

Outputs

Audio 1

Loop Output 1
Mono playback of the selected sample loop

Audio 2

Loop Output 2
Duplicate mono playback of the selected sample loop

CV 1

Random CV 1
Smooth slow bipolar random modulation output

CV 2

Random CV 2
Independent smooth slow bipolar random modulation output

Pulse 1

Jump Pulse
20 ms trigger emitted when the switch is moved down to jump playback

Pulse 2

Select Pulse
20 ms trigger emitted when the switch is moved up to select a sample

LEDs

LED 1

Playhead / Clock Edge
First playhead segment in free-run mode; remains lit as the left edge marker with external clock

LED 2

Playhead Segment 2
Playhead segment in free-run mode; first inner position segment with external clock

LED 3

Playhead Segment 3
Playhead segment in free-run mode; second inner position segment with external clock

LED 4

Playhead Segment 4
Playhead segment in free-run mode; third inner position segment with external clock

LED 5

Playhead Segment 5
Playhead segment in free-run mode; fourth inner position segment with external clock

LED 6

Playhead / Clock Edge
Final playhead segment in free-run mode; remains lit as the right edge marker with external clock

README

stretchcore

stretchcore is a Workshop Computer card for playing uploaded mono sample loops with tempo control, timestretch, position jumps, and browser-based audio loading.

Quickstart

Get UF2 + instructions + sample manager at https://infinitedigits.co/stretchcore/

stretchcore module image

Demo

22 minutes of pure stretchcore: https://www.youtube.com/watch?v=w-iyoTLxIP8

Audio Loading

Audio is loaded from the web app in web/ over Web Serial (public instance at infinitedigits.co/stretchcore/). The firmware only needs to be flashed once with loader support; after that, sample banks can be replaced from the browser without reflashing firmware.

Samples are stored in flash as 48 kHz mono signed 8-bit PCM. The loader can read the device bank back, detect device flash capacity, show transfer progress with ETA, preview samples, crop waveforms, and upload banks with up to 64 samples.

Controls

Control Function
Main knob Timestretch amount
X knob Tempo when not externally clocked
Y knob Position knob for jumps; sample selector when using Toggle Up
Toggle Down Jump playback to the Y knob position; fire Pulse Out 1
Toggle Up Select sample from the Y knob position; fire Pulse Out 2
CV In 1 Adds bipolar modulation to Main knob timestretch when plugged in
CV In 2 Bipolar offset for Pulse In 2 jumps
Pulse In 1 External clock / BPM input
Pulse In 2 Jump trigger: jumps to Y knob position plus CV In 2, or Y knob position if CV In 2 is unplugged
CV Out 1 Smooth random slow bipolar LFO
CV Out 2 Smooth random slow bipolar LFO
Pulse Out 1 20 ms trigger from Toggle Down
Pulse Out 2 20 ms trigger from Toggle Up

Build

make build
make web-build

The firmware artifact is build/stretchcore.uf2.

Acknowledgements

Thanks for Tom Whitwell for this incredible tool which I find myself constantly referring to as a design of pure genius. Thanks to Chris Johnson for paving the way for the framework and huge thanks to Dune for continually pushing the boundaries and making incredibly inspirational music from such a small device. Also for letting me steal the 15_MLRws Sample Manager code!

Verify your download

Confirm the file you downloaded really is that new firmware.

macOS / Linux (Terminal)

shasum -a 256 firmware.uf2

Linux also has sha256sum firmware.uf2.

Windows (PowerShell)

Get-FileHash firmware.uf2 -Algorithm SHA256

Compare the result to the SHA256 on the website — it should match exactly.