Iron Sampler PLAY

A pitched sampler for the Critter & Guitari Organelle S2, ported from my Orac ironsampler module and rebuilt around the C&G PLAY architecture (jampd + organelle_track).

Play a sample chromatically. Based on my Orac patch from a few years ago.

  • Use the encoder to navigate pages.
  • On an "AUX" page, use the AUX button and the black keys to select an option, for example Rec, Oct+, Reset, etc.
  • Knobs do nothing? Catch-up is enabled: rotate the knob far enough to catch the current setting.

Workflow

  1. Record a sample through the mic or line-in
  2. Adjust speed, start and duration. Add low bitrate crush for some character
  3. Set loop points if you like
  4. Start a sequence on the Arp/Seq page
  5. Play around with the filter
  6. Save your sample patch if you like it

Press the encoder to exit to the Organelle menu.


Pages

Six pages, cycled with the encoder (CW = next, CCW = previous). The first four are param pages (each knob does something live). The last two are aux pages — knobs are mostly silent, but holding AUX + a black key fires an action.

# Page Kind Knobs
1 Sampler param Speed · Crush · Start · Dur
2 ADSR param Atk · Dec · Sus · Rel
3 Filter param HP · LP · EnvMd · Drive
4 Loop param LpStart · LpEnd · Mode · —
5 Sample aux (aux actions only)
6 Arp/Seq aux BPM · — · — · —

1. Sampler — playback shaping

Knob Range Notes
1 Speed 0.5 = stopped · 0.75 = normal · 1.0 = +2× forward · 0.25 = −1× reverse · 0 = −2× reverse Center of the knob is silent — turn off-center to play
2 Crush 0 = clean · full = lo-fi quantization Bit-depth reduction, capped so it stays musical
3 Start 0 = sample start · 1 = sample end Where playback enters
4 Dur 0 = nothing · 1 = full length Length of the playback window from Start

2. ADSR — amplitude envelope

Knob Range Notes
1 Atk 1 ms → 2000 ms Cubic curve, so most of the knob covers short attacks
2 Dec 1 ms → 4000 ms Same curve shape
3 Sus 0 → 100% Sustain level held while the key is down
4 Rel 1 ms → 10000 ms Release after key-up

3. Filter — DJ-style HP / LP

Knob Range Notes
1 HP 0 = bypass → 1 = high cut Steep slope — good for buildups
2 LP 0 = closed → 1 = open Steep slope — good for sweeps
3 EnvMd 0 → 1 How much the ADSR opens the LP cutoff
4 Drive 0 → full Pre-filter saturation; adds harmonics + grit

4. Loop — loop region

Knob Function
1 LpStart Loop region start (0..1 within the sample)
2 LpEnd Loop region end (0..1)
3 Mode < 0.33 = 1Shot · 0.33–0.67 = Loop · > 0.67 = PiPng (ping-pong)
4 unused

The loop region is independent of the Sampler Start/Dur. Start/Dur sets the playback window; LpStart/LpEnd defines a sub-region that repeats inside it (or that the playhead bounces in, when Mode = ping-pong).

5. Sample — recording + presets (aux page)

Hold AUX and tap the labeled black key:

Row Key Label Action
lower C# Rec Arm (waits for input peak with Mon off; starts immediately with Mon on). Tap again to stop + auto-load.
lower D# Mon Toggle input monitor (hear what you're about to record)
lower F# <Prev Previous saved preset (state + sample)
lower G# Save Save new numbered preset (state + current sample)
lower A# Next> Next saved preset
upper C#5 Oct- Transpose down 1 octave (floor −24)
upper D#5 Oct+ Transpose up 1 octave (ceiling +24)
upper F#5 Del Delete current preset (two-tap confirm)
upper G#5 Reset Reset every param on every page to defaults
upper A#5 SvIP Save in place — overwrite the current preset

6. Arp/Seq — sequencer + arp + tempo (aux page)

Knob 1 sets BPM (20–250). Other knobs unused.

Row Key Label Action
lower C# Play Toggle sequence playback. If a recording is in progress, ends it and plays.
lower D# Arm Arm sequencer recording (purple LED → red when first event lands)
lower F# ClrSq Clear the recorded sequence buffer
lower G# Lch Toggle latch (held notes stay sounding)
lower A# Clk Toggle metronome click
upper C#5 PtPrv Previous arp pattern
upper D#5 PtNxt Next arp pattern
upper F#5 Arp Toggle arp (passthrough ↔ first arp pattern)
upper G#5 spare
upper A#5 spare

Recording

Two ways to arm a take:

  • Monitor off (default) — AUX + C# arms. LED red. Recording opens samples/_recording.wav and starts writing the first time the input crosses ~10% peak. Useful when triggering from a sound source you control.
  • Monitor onAUX + D# turns input monitoring on first (so you hear the input through the output). AUX + C# then starts immediately — no peak threshold.

Auto-stops after ~40 seconds (at 120 BPM / 180 tpb), or tap AUX + C# again to stop early. On stop, the take loads into the playback engine — play it from any white key.

The recording is held in samples/_recording.wav and is overwritten on every new record. Save (AUX + G#) to keep it.


Presets

A preset stores everything: all params on all pages, the recorded sample, the sequence, current pattern, latch state, transpose, and BPM.

  • AUX + G# (Save) — create a new numbered preset (presets/track1/<NNNN>-state.lua + <NNNN>-sample.wav).
  • AUX + A#5 (SvIP) — overwrite the current preset in place. Use after tweaking a loaded preset.
  • AUX + F# / A# (<Prev / Next>) — step through saved presets.
  • AUX + F#5 (Del) — delete the current preset. First tap arms ("Delete X?"), second tap confirms.

Sequencer

The sequencer records notes and knob movements, tick-accurate, in sync with the global tempo.

  1. AUX + D# (Arm) → LED purple.
  2. Play notes and/or move knobs. Recording starts on the first event; LED red.
  3. AUX + C# (Play) → stop recording, begin playback. LED green.
  4. AUX + C# again to stop. AUX + F# (ClrSq) to clear and start over.

The sequence loops indefinitely once playing. Combine with Latch to hold a chord while the sequence runs.


Patterns / Arp

Patterns live in patterns/ (A–N). The first slot is always passthrough; the rest are arpeggiator / generator variants.

Slot Pattern Character
A None passthrough — notes go straight through
B Repeats repeats the held note
C Cycle Up ascending cycle through held notes
D Cycle You ascending cycle variant
E Cascade cascading polyphonic flow
F More Fast faster cycling
G UpDown up-then-down arp
H Poly Rate polyrhythmic divisions
I Wave wave-shaped note motion
J BounceBall accelerating / decelerating bounces
K Phased phase-shifted parallel arps
L Genny generative / probabilistic
M Stages multi-stage CV-style steps
N Sierpinski Sierpinski-triangle melody

Switch with AUX + C#5 / D#5 (PtPrv / PtNxt) on the Arp/Seq page. AUX + F#5 (Arp) is a quick toggle between A (passthrough) and B (first real arp).


Latch

When latch is on, key-up doesn't release the note. Press another key to swap the latched chord (or hold multiple keys to build a chord before releasing). Useful for sustained pads while you sweep the filter or step patterns.

Toggle with AUX + G# on the Arp/Seq page.


Tempo & sync

  • BPM: knob 1 on the Arp/Seq page (page 6), range 20–250.
  • MIDI clock: if MIDI clock is sent in, the patch follows it automatically.
  • Ableton Link: works automatically if a Link session is reachable on the network.

MIDI

  • MIDI notes in trigger sample playback chromatically.
  • MIDI CC 21–24 control the four knobs (knob catch-up still applies).
  • Set the MIDI channel from the OS MIDI Setup menu.

LED

Color Meaning
Off Idle
Cyan Sample recorded, ready to play
Red Recording (audio or sequence)
Purple Sequencer armed — waiting for first event
Green Sequencer playing

Quick reference

  • Encoder turn → cycle pages
  • Encoder press → exit to OS menu
  • AUX + black key → page action (Sample / Arp/Seq pages)
  • AUX + white key → passes through to the current pattern
  • Knob catch-up is always on — move the knob through its stored value to take over

Files

IronSampler/
├── main.pd                       shared sample array + control routing
├── jam.lua                       6-page UI + shift menu + presets + arp/seq glue
├── mother.pd                     symlink → /home/music/fw_dir/mother_jam.pd
├── README.md
├── LICENSE
├── lib/
│   ├── synthvoice.pd             per-voice abstraction (clone-instantiated 8×)
│   ├── c_adsr.pd                 ADSR envelope (from Orac)
│   ├── dj_filter.pd              steep HP+LP filter insert (from Orac)
│   ├── peak-trigger.pd           peak detector for record-arm (from Orac)
│   ├── record-load-sample.pd     writesf~ / soundfiler engine
│   ├── tick.pd                   metronome tick voice
│   ├── metro1.wav                metronome click sample
│   ├── jam.pd_linux              jampd external (from Critter & Guitari)
│   ├── organelle_gui.lua         OLED + LED + encoder helpers
│   ├── organelle_track.lua       Track wrapper (latch / arp / seq / presets)
│   ├── sequencer.lua             step sequencer
│   ├── latch.lua                 chord latch
│   ├── presets.lua               numbered preset storage
│   ├── subjam.lua                subjam loader (pattern hosting)
│   └── utils.lua                 small helpers
├── patterns/
│   ├── A-None.lua                passthrough (must be present)
│   └── B-Repeats.lua … N-Sierpinski.lua   13 arp patterns
├── presets/track1/               per-preset state.lua + sample.wav (created on save)
└── samples/_recording.wav        current take (created on first record)

License

This patch is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).

You are free to share and adapt this work for any purpose, including commercially, provided you give attribution and distribute derivatives under the same license.

Based on the Critter & Guitari PLAY patch architecture (jampd, organelle_track, organelle_gui, synthvoice.pd cloning model). The c_adsr.pd, peak-trigger.pd, dj_filter.pd, and the varispeed playback approach in synthvoice.pd are adapted from the Orac IronSampler module.