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
- Record a sample through the mic or line-in
- Adjust speed, start and duration. Add low bitrate crush for some character
- Set loop points if you like
- Start a sequence on the Arp/Seq page
- Play around with the filter
- 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.wavand starts writing the first time the input crosses ~10% peak. Useful when triggering from a sound source you control. - Monitor on — AUX + 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.
- AUX + D# (Arm) → LED purple.
- Play notes and/or move knobs. Recording starts on the first event; LED red.
- AUX + C# (Play) → stop recording, begin playback. LED green.
- 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.