Sampler

4ms Company 12HP
fw 1.0.x

Stereo WAV recorder/player from microSD. 60 banks × 10 samples, CV over pitch (1V/oct ±9oct), sample select, start, length, bank. Length knob sweeps loop → percussive envelope → grains.

Patch Ideas · 10

Melodic sample playback from sequencer
Set Length to ~40% so each trigger plays a percussive slice · sequencer gate → Play/Rec · sequencer pitch → Pitch · same sample replays at sequencer pitch per step · add second CV output to Sample jack for multi-timbral sequencing across 10 slots
Show diagram
Patch diagramPatch diagram with 3 modules and 5 connections. Modules: Sampler, Sequencer, Output. Signals: 2 audio, 1 cv, 1 pitch, 1 trigger.SamplerSequencerOutputLength: ~40%Start Pos: 0Play/RectrigIn Pitch1v/octIn SamplecvLeft OUTaudioRight OUTaudioGatetrigPitch1v/octCV 2cvLaudioRaudioaudiocvpitchtrigger
Self-clocked sample chain
End Out → sequencer clock · set sequencer to external clock · tap Play once to start · each sample end advances the sequencer which fires Play again via its gate → variable-tempo chain where Length per step controls the beat · patch sequencer CV to Sample jack for multi-slot medleys
Show diagram
Patch diagramPatch diagram with 3 modules and 4 connections. Modules: Sampler, Sequencer, Output. Signals: 1 audio, 1 cv, 1 trigger, 1 clock.SamplerSequencerOutputLength: ~60%Clock: externalPlay/RectrigIn SamplecvEnd OutclkLeft OUTaudioClockclkGatetrigCV 1cvLaudioaudiocvtriggerclock
Granular scrubbing with LFO sweep
Length knob <1% so output is a grain · hold Play to loop · slow ramp LFO (0–5V, period several seconds) → Start Pos. · grain window sweeps through file at LFO speed · time-stretch without pitch change · attenuate LFO for partial-file scrubbing · pitch stays independent on Pitch knob
Show diagram
Patch diagramPatch diagram with 3 modules and 3 connections. Modules: Sampler, Slow LFO, Output. Signals: 2 audio, 1 cv.SamplerSlow LFOOutputLength: <1% (grain)Start Pos: 0Play: looping (hold 0.5s)Wave: ramp up 0-5VPeriod: several secondsIn Start Pos.cvLeft OUTaudioRight OUTaudioOutcvLaudioRaudioaudiocv
Random grains (time + pitch independence)
Length <1% · random source (S&H of noise) → Start Pos · attenuated random/LFO → Length CV · grains play in random order · Pitch knob independently sets grain pitch · separately animate Pitch with slow LFO for cloud texture
Show diagram
Patch diagramPatch diagram with 6 modules and 5 connections. Modules: Sampler, S&H, Noise, Clock, LFO, Output. Signals: 1 audio, 3 cv, 1 clock.SamplerS&HNoiseClockLFOOutputLength: <1%Play: loopingAttenuated: In Start Pos.cvIn LengthcvLeft OUTaudioIncvTrigclkOutcvOutcvOutclkOutcvLaudio11. attenuate heavilyaudiocvclock
Ping-pong loop
Find rhythmic sample · hold Play to loop · Length 50–90% for shorter loop · patch End Out → Reverse · each loop end flips direction: forward, backward, forward, backward · clock-divide End Out to reverse every N loops for asymmetric patterns
Show diagram
Patch diagramPatch diagram with 2 modules and 3 connections. Modules: Sampler, Output. Signals: 2 audio, 1 trigger.SamplerOutputLength: 50-90%Play: loopingReversetrigEnd OuttrigLeft OUTaudioRight OUTaudioLaudioRaudioaudiotrigger
Shifting ping-pong loop
Loop rhythmic sample · very slow LFO (period many bars) → Start Pos. · Start Pos. jumps to new position only at the moment the loop restarts — cache refreshes per restart · End Out → Reverse for alternating direction · slowly-drifting window across the file without tempo change
Show diagram
Patch diagramPatch diagram with 3 modules and 4 connections. Modules: Sampler, Slow LFO, Output. Signals: 2 audio, 1 cv, 1 trigger.SamplerSlow LFOOutputLength: ~70%Play: loopingPeriod: many barsIn Start Pos.cvReversetrigEnd OuttrigLeft OUTaudioRight OUTaudioOutcvLaudioRaudioaudiocvtrigger
Clock-synced loop
Master clock → Play/Rec · hold Play first to enable loop · Length <100% so loop period is shorter than clock interval · sample restarts on every clock tick, resetting any drift · change Pitch freely above 50% Length — loop tempo stays locked to clock
Show diagram
Patch diagramPatch diagram with 3 modules and 3 connections. Modules: Sampler, Clock, Output. Signals: 2 audio, 1 clock.SamplerClockOutputLength: 60-90%Play: looping (preset)Play/RecclkLeft OUTaudioRight OUTaudioOutclkLaudioRaudioaudioclock
Drum machine from one bank
Load 10 drum hits into one color bank · Length ~30% for percussive envelope · trigger sequencer gates → Play/Rec · CV per step → Sample (0–5V / 10 steps = 0.5V each) · one module becomes 10-voice drum sampler with per-hit pitch via Pitch CV
Show diagram
Patch diagramPatch diagram with 3 modules and 4 connections. Modules: Sampler, Sequencer, Mixer. Signals: 1 audio, 1 cv, 1 pitch, 1 trigger.SamplerSequencerMixerLength: ~30%Start Pos: 0Play/RectrigIn SamplecvIn Pitch1v/octLeft OUTaudioGatetrigCV SamplecvCV Pitch1v/octInaudioaudiocvpitchtrigger
Live looper with instant recall
Hold Play+Reverse 2s to enter record · patch mic/line source via Listen IO → Left/Right RECORD · tap Play to record, tap to stop · exit record mode (hold Play+Reverse) · Sample knob scrolls takes · hold Bank+Play+Reverse 3s to persist slot assignments across power-down
Show diagram
Patch diagramPatch diagram with 3 modules and 4 connections. Modules: Sampler, Listen IO, Line Source. Signals: 4 audio.SamplerListen IOLine SourceMode: record (hold Play+Reverse 2s)Left RECORDaudioRight RECORDaudioIn LaudioIn RaudioOut LaudioOut RaudioOut LaudioOut Raudioaudio
CV-slice sequencer
Load one long sample (speech, field recording) · sequencer CV per step → Start Pos. · sequencer gate → Play/Rec · Length ~20% for percussive slice · each step plays a different point in the source file · pair with quantized CV for tempo-grid slicing, unquantized for glitch
Show diagram
Patch diagramPatch diagram with 3 modules and 4 connections. Modules: Sampler, Sequencer, Output. Signals: 2 audio, 1 cv, 1 trigger.SamplerSequencerOutputLength: ~20%Play/RectrigIn Start Pos.cvLeft OUTaudioRight OUTaudioGatetrigCV StepcvLaudioRaudioaudiocvtrigger

Behaviors

Length-zone envelopes Length knob position

Above 50% a short Fade In/Out envelope (0–39ms, adjustable) smooths loop points. Below 50% a percussive decay envelope is applied automatically; in Reverse it becomes an attack envelope. Below 1% the output is a single grain repeated — tame buzziness with higher Length or slow Length CV.

Pitch-independent loop tempo Length > 50%

Above 50% Length, audio is stretched/shrunk so loop period stays constant regardless of Pitch. Below 50%, loop period tracks Pitch. Use the >50% zone for clock-locked loops you want to pitch-shift without re-syncing.

End Out as playback clock sample loops, restarts, or stops

End Out fires a +8V pulse on every loop restart and on sample end. Patch to a sequencer clock input for a sample-synced master clock; patch to Reverse for ping-pong loops; split through a clock divider to reverse every N loops.

Quantized Pitch jack QUANTIZE CHANNEL 1 1V/OCT JACK in settings.txt

Default No: Pitch CV is continuous, suited to LFO scrubbing. Set Yes to snap Pitch CV to semitones for melodic playback from unquantized CV sources.

Hidden Channel Volume hold Reverse + turn Start Pos.

Not saved across power-down. While Reverse is held, Start Pos. knob sets channel output volume instead of start position and the Reverse button will not toggle direction. Returns to 100% on boot.

Record mode enable hold Play + Reverse for 2s

Play LED flashes red. Play button (or Play/Rec jack) starts/stops a recording into whatever bank+slot the Sample knob is pointing at when recording begins — changing Bank/Sample mid-record has no effect. 48kHz/16- or 24-bit stereo WAV written directly to SD. Hold Bank+Play+Reverse 3s to save slot assignments permanently.

Pitch jack range clamping Pitch knob + Pitch CV combined

Knob alone spans ±4 octaves, CV alone spans ±5. Combined range is clamped to -9/+4 octaves — positive CV plus CW knob can only reach +4, but negative CV plus CCW knob reaches -9. Bias for downward pitch sweeps.

Startup bank persistence settings.txt [STARTUP BANK CHANNEL 1]

Value 0–59 selects the bank loaded at power-on, encoded as color (ones digit) + blink count (tens digit). 15 = Cyan-1, 41 = Red-4. Sample list cache is rebuilt the first 3 seconds after each bank change — initial playback latency is ~0.7ms after that window.

Folder-to-bank color loading folder name starts with a color

On boot the module scans the SD root. Folders beginning with White, Red, Orange, Yellow, Green, Cyan, Blue, Magenta, Lavender, Pearl auto-load into the matching color bank. Collisions bump to the next blink level (Orange, Orange-1, Orange-2...). Sub-folders ignored — files must be root-level inside the color folder.

Trigger delay compensation settings.txt [TRIG DELAY]

Default 8ms. Play/Rec trigger is delayed by this many ms so slew-lagged CV from sequencers has time to settle at Pitch and Start Pos. before playback fires. Reduce to 1 for snappy drum triggering; increase up to 20 for glide-heavy keyboards.

Controls

Global Pitch Playback speed/pitch. Combines additively with Pitch CV.
knob: ±4 oct · knob+CV clamped to -9 oct / +4 oct
Global Sample Selects one of 10 sample slots in the current bank. Play LED flickers to confirm new selection.
10 positions · Auto Stop On Sample Change: Yes (default)
Global Start Pos. Sets the playback start point as percentage of sample file. Shifts start and end together, keeping Length constant.
0–100% of file
Global Length Sets loop end / playback duration. Crosses three zones with different envelope behavior.
100%: full file · 50–99%: 200ms–5s, fade env · <50%: ~250–8ms, percussive env · <1%: ms-grain
Global Play Tap: start/retrigger. Hold 0.5s: toggle loop (LED blue=looping, green/yellow=not). Record mode: tap to start/stop recording.
combos: +Bank (1s) stereo/mono · +Reverse (2s) enter/exit record
Global Reverse Toggles forward/backward playback. LED blue when reversing. Holds bank-nav and hidden-volume combos.
combos: Reverse+Bank prev bank · Reverse+Start Pos volume · Reverse+Length fade time
Global Bank Tap: advance to next non-empty bank. Color + blink count encodes bank number (10 colors × 6 blink states = 60 banks).
hold+Sample: pick color · hold+Length: pick blink count (Quick Bank Select)

I/O

IN · 9

  • Pitch -5V to +5V (10-oct range) CV
    1V/oct pitch CV. Sums with Pitch knob. Factory-calibrated; user-recalibratable via Bank+Reverse hold.
    NORM → 0V
  • Start Pos. 0 to +5V CV
    CV over start position. Adds to knob.
  • Length 0 to +5V CV
    CV over loop length. Adds to knob.
  • Sample 0 to +5V CV
    CV selects sample slot. 0.5V per slot across 10 slots.
  • Bank 0 to +5V CV
    CV selects bank. 1/12V per bank — responds to semitone steps from a keyboard (C0–B5 = 60 banks).
  • Play/Rec >1.6V trigger GATE
    Trigger input. In play mode: fires Play. In record mode: starts/stops recording. Rising edge detected.
  • Reverse >1.6V trigger GATE
    Trigger input. Toggles forward/backward playback on rising edge.
  • Left RECORD 21Vpp max · -84dB noise floor unpatched AUDIO
    Audio input for left channel recording. Line-level optimal. Monitored through Out jacks when in record mode.
  • Right RECORD 21Vpp max AUDIO
    Audio input for right channel recording. Always stereo to file regardless of Stereo/Mono playback mode.

OUT · 3

  • Left OUT 21Vpp max · DC–22kHz AUDIO
    Left channel audio. In Mono Mode, sums L+R of stereo files. Mono files always output identically on both jacks.
  • Right OUT 21Vpp max AUDIO
    Right channel audio. In Mono Mode, sums L+R.
  • End Out +8V trigger GATE
    Trigger pulse on loop restart, sample end, or stop. Use as playback-synced clock output.