Firmware

plooper

Hype17/100

Four-playhead looper with strange reverbs and tape-style fading for the Electrosmith Daisy Patch (Eurorack)

plooper is custom firmware for the Electro-Smith Daisy Patch, by @billwolfhub. Open source under MIT, latest release v0.1.1 (September 2026).

forElectro-Smith Daisy Patch·by@billwolfhub

Unclaimed. Is this yours? Sign in with GitHub as @billwolfhub to claim it.

Downloads
0
Stars
0
Forks
0
Commits
11
Last commit
Download v0.1.1

Plooper-v0.1.1.bin· 118 KB

MIT· billwolfhub/plooper·downloads come from the creator’s GitHub releases

11
Commits
2
Releases
11 commits and 2 releases in the last year
Activity · last 12 months

Plooper

A four-playhead looper with strange reverbs for the Electrosmith Daisy Patch.

Record a loop (up to 60 s, stereo), then play it back with four heads — A, B, C, D — each with its own level, speed (negative = reverse), start point, window length, direction, and pan. The heads feed a reverb with six modes, including reversed tails and pitch-shifted feedback.

Recording

Encoder (on the play pages — on the SETUP page every press is just a click):

StatePressResult
EMPTYPressStarts the first take the moment you press
RECPressCloses the loop the moment you press → PLAY (the loop length is exactly the time between presses)
PLAYPress and holdRecords while held, from the instant you press (10 ms fades, no clicks). The header shows DUB.
PLAYKeep holding past Latch after (default 2 loops, at least 4 s)Latches DUB — keeps recording after you let go. A bar along the top of the waveform fills as you approach it.
DUBClickBack to PLAY

GATE IN 1: each trigger steps EMPTY → REC → PLAY → DUB → PLAY → DUB …

The first take sets the loop length (it closes automatically at 60 s). Clear loop in SETUP empties it.

Gate punch-in: with SETUP Gate 2 set to Dub, GATE IN 2 held high while in PLAY dubs the inputs in only while the gate is high. The INPUT page levels set how much of each input gets dubbed, so you can also ride them while in DUB. While overdubbing, Dub fade fades the old material a little on each pass (see Tape).

Pages

Turn the encoder to change page. On the five knob pages, each knob controls the same parameter for one head (knob 1 = A … knob 4 = D), so every head has its own knob on every page.

PageKnob setsRange
INPUTLevel of IN 1–4 into the loop and monitor0–100 (IN 1 and IN 2 start full, IN 3–4 off)
MIXHead level0–100
SPEEDHead speedCCW half reverse, CW half forward, 0.25×–2× each way
STARTWhere the head's window begins0–100% of the loop
LENGTHHow long the head's window is1–100% of the loop (min 20 ms), finer at the short end
FXMIX, DECAY, TONE, ODD (reverb)see Reverb
SETUPSettings menuclick to enter

Knob pickup: after you change page, a knob doesn't change its value until you turn it past the stored value (a small dot shows next to values that haven't been picked up yet). CV into a knob's jack adds to whichever parameter that knob has on the current page.

Default speeds are A +1, B −1, C +0.5, D +2. At power-up the knobs set the MIX levels.

Reversing

  • Speed below centre plays a head backwards.
  • Dir A–D (SETUP): Forward, Reverse (flips the speed), Pingpong (bounces between the window ends), Random (jumps to a random spot each time around the window).
  • GATE IN 2 (SETUP Gate 2): Reverse flips every head while the gate is high; Retrig sends every head to its window start; Scatter sends every head to a random spot; Dub punches in (see below).
  • Backwards and Ghost reverbs reverse the reverb tail.

Reverb

FX page knobs: MIX (reverb level on OUT 1/2), DECAY, TONE (dark → bright), and ODD, which depends on the mode (SETUP Reverb):

ModeSoundODD
PlateClassic reverbPre-delay 0–500 ms
ShimmerReverb fed back an octave upShimmer amount
SubReverb fed back an octave downSub amount
BackwardsReverb tails played in reverse (they swell in)Reverse window 100 ms–1.5 s
GhostBackwards + shimmerShimmer amount (800 ms window)
FreezeHolds the reverb indefinitelyHow fast new sound fills it (0 = fully frozen); levels off on its own

Outputs

JackSignal
OUT 1 / 2Heads + reverb + input (when Monitor is on), stereo
OUT 3 / 4Reverb only
CV OUT 1Head A's position in the loop (0–5 V ramp)
CV OUT 2Loop progress (0–5 V ramp)
GATE OUTPulse at the start of each loop

All four audio outputs have soft limiters: clean below about 80% of full level, then peaks are rounded off instead of clipping. Overdubs are limited the same way, so a source left running in DUB levels off instead of building up into distortion.

SETUP

Click on the SETUP page to enter; turn to choose an item, click to edit it, click again to finish. Choose < Pages to go back to paging, or leave the encoder alone for 6 s and SETUP returns to the last play page by itself. On the SETUP page, holding the encoder does nothing special (no punch-in or record) — every press is a click.

Reverb mode, Dir A–D, Pan A–D (−100…+100), Snap (Off / Octaves / Musical: octaves and fifths), Gate 2, the Tape settings below, Latch after (1 / 2 / 4 loops / Never), Input (Mono: IN 1–4 mixed to both channels / Stereo: IN 1 + IN 3 left, IN 2 + IN 4 right), Monitor (On/Off), CPU load (read-only: average, peak over the last second, and highest peak since power-up; click to reset the highest), Clear loop. SETUP settings are saved to flash; knob page values are not.

Tape (Frippertronics)

SettingRangeEffect
Dub fade0–50%, 1% stepsHow much the loop fades each time it's rewritten
DecayDub only / AlwaysAlways keeps fading (and aging) the loop in PLAY too, like a running tape loop
Age0–100%Each rewritten pass gets a little darker and softly saturated, so old layers recede
Wow0–100%Slow wobble (0.6 Hz) plus flutter (7 Hz) on all heads, up to about ±14 cents

Frippertronics: set Dub fade to 2–5%, Decay to Always, Age to 30–50%, and Wow to 10–20%. Record a first take (its length is the tape length), switch to DUB, and keep playing: new layers build up while older ones fade and darken on every pass.

Display

Header: page name, input level meter (a solid block at its right end means the input is clipping — turn the source down), and looper state (REC/DUB highlighted) with loop length. Below: the loop's waveform with the loop position, then one lane per head showing its window (dotted when muted) and position. Bottom: the page's four values, or the SETUP item.

Shimmer, Sub, Ghost, and Freeze have automatic gain control on their feedback, and the input and reverb send are DC-blocked, so no mode can build up and swamp the output.

Testing on the Mac

sim/run.sh builds Plooper's audio code for the Mac against stub hardware, records a test tone, plays it back, and prints input, OUT 1, and reverb levels every half second:

sim/run.sh 0 1          # no DC offset, Shimmer
sim/run.sh 0.05 4 stress  # DC offset, Ghost, four heads full, DECAY/ODD max

License

Plooper is released under the MIT License. It builds against libDaisy (MIT) and DaisySP (MIT), and uses ReverbSc from DaisySP-LGPL (LGPL-2.1).

Building

Needs libDaisy and DaisySP (with its DaisySP-LGPL submodule built) cloned next to this repository, one folder up.

make

Flash through the Daisy bootloader: tap RESET, press BOOT while the LED pulses, then

make program-dfu