Skip to content

Live Looper 0.1.0-experimental: a looper machine for one track (Digitakt I) - #1408

Open
draadpiraat wants to merge 10 commits into
repeat98:mainfrom
draadpiraat:module/loop-fade
Open

draadpiraat wants to merge 10 commits into
repeat98:mainfrom
draadpiraat:module/loop-fade

Conversation

@draadpiraat

@draadpiraat draadpiraat commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Live Looper 0.1.0-experimental (Digitakt I, OS 1.54)

The looper half of what was Loop & Fade; the crossfader is now its own module (#1416), as the owner asked. Chosen together they give the same instrument.

  • The LOOPER machine (id 122) turns one audio track into a looper: it records the master mix or the inputs all the time, loop by loop, on the sequencer's step grid. FILL or UP captures the loop playing now (CAPT) or arms the next one (ONCE); PICK keeps it playing through pattern changes with no trigs, PTCH and WARP follow the tempo, GLOB keeps the loop track's sends (or more) across patterns. Push D on its SRC page to keep a loop as a sample through the stock trim editor.
  • Based on sumedho's RAM Machines 1.3.1 (sumedho/digirequests at 8eba613). sumedho's OK to build on it: RAM Record and Playback: RAM-P1 plays the recorded length, and a recording progress bar on every page #1053 (comment) — @sumedho, thank you; your module stays as it is, and you are credited in the manifest, README and NOTICE.
  • What differs from RAM Machines: one machine instead of a record and a play machine; one-track looping set up on the looper's page 2; ONCE and CAPT (continuous recording into three buffers); PICK, PTCH and WARP; GLOB; the FILL/UP capture button and banner; MAIN recorded before the master compressor; the trim editor hand-off.
  • Owner's conditions: own id and name (live-looper, machine LOOPER); LICENSE.GPL-2.0 and NOTICE kept for the RAM Machines files (GPL-2.0-or-later, distributed under GPL-3.0-or-later); sumedho and irpina credited with repo and commit; own machine id (122, not 120/121); ram-machines and digihealth in compatibility.conflicts.
  • Claims: machine:122, sample:private:131, the SRC waveform override, SRC again for page 2, UP and push D on LOOPER tracks' SRC pages, FILL as the capture button while MODE is ONCE or CAPT, drive:/cfw/ramloop.a, drive:/cfw/ramloop.b.

Changes to stock flows (README, "Changes to stock flows")

FILL also captures while MODE is ONCE/CAPT and BTN is FILL/BOTH; UP and push D on the looper's SRC pages; SRC again opens page 2; GLOB keeps the loop track's chosen parameters across patterns (SND by default).

Tests

  • Emulator (digiemu c1b5735, LL02, the module alone with Core 2.1 and Machine Pages): machine list, stock SRC paging with values on hold and the header message, PT.LEN, an ONCE take armed while stopped recorded from PLAY, STOP while stopped disarming, GLOB ALL carrying FREQ across patterns, two screenshots. Load +0.9 points idle, +5.3 at its heaviest (modelled). Shared RAM 15,556 bytes.
  • Hardware: LF03 (looper and crossfader in one module) passed every looper check over two hours (report); LL01 (the looper alone) passed its checklist on 2026-11-12 with findings (report), fixed in LL02: GLOB's filter set, disarm with STOP, arm while stopped, exact loop lengths with a short fade, MAX renamed LEN with PT.LEN, stock SRC paging and header messages, TAKEN now RECORDED. LL02 then ran on the same unit: "running it right now its perfect" (report); evidence tier author-hardware. Known bugs, documented: the trig key retriggers the amp envelope in PICK, PTCH and WARP (the loop fades at the default DEC); changing PLAY mode mid-play restarts the loop; an open Overbridge instance makes the unit lag (stock not compared).

What the guides lacked or got wrong

Guides: nothing.

Checklist

  • Changing a module someone else wrote: the looper starts from sumedho's RAM Machines; his OK is linked above.
  • I read the guide for its category in docs/module-guides/ (machines.md, sequencing.md), and TESTING.md lists what I did not test.
  • Source and media are mine or properly licensed, with authors and full licence texts kept (LICENSE, LICENSE.GPL-2.0, NOTICE). Nothing comes from Elektron firmware.
  • Screenshots are real captures of the current module UI (digiemu, LL02). Hardware results are what draadpiraat saw on the named build; emulator results are labelled as such.
  • Automatically merge and publish my module update after checks pass.
  • I verified the source, licences, UI and qualification reports, including instance isolation and Part/project/reboot persistence where applicable; no required acceptance check is failed or untested.

Validation commands and results

  • npm run module:doctor -- live-looper: green apart from the board claim (sign-in pending).

Related to #1053

🤖 Generated with Claude Code

https://claude.ai/code/session_01DjGstighoF133yaiHa5t9d

draadpiraat and others added 3 commits November 10, 2026 18:48
…sfader for the Digitakt I (OS 1.54)

The LOOP&FADE machine turns one audio track into a looper: it records MAIN or
the inputs all the time on the step grid; FILL or UP captures the loop playing
now, which keeps playing through pattern changes (PICK), and can follow the
tempo (PTCH, WARP). The crossfader puts tracks and inputs in groups A and B and
fades between them with LEVEL on the Internal Mixer, on chosen tracks' pages,
or a CC on FX CONTROL CH.

The looper is based on sumedho's RAM Machines 1.3.1 (GPL-2.0-or-later, kept
with LICENSE.GPL-2.0 and NOTICE), with one machine of its own (id 122). It
conflicts with RAM Machines and Digi Health. Tested by the author on a
Digitakt I (LF03, over two hours) and in the emulator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DjGstighoF133yaiHa5t9d
…ader catalogue

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DjGstighoF133yaiHa5t9d
@repeat98

Copy link
Copy Markdown
Owner

Thanks for Loop & Fade, and for the careful credits to sumedho and irpina and the two-hour run. Three things before I can merge it:

  1. The red checks. describe wants a line of its own answering the guides question, for example "Guides: nothing". module-contract wants digitakt/loop-fade and machine id digitakt/122 claimed on the agent board: run npm run board -- login once, then npm run pr:ready claims both.
  2. Two modules, not one. Neither half needs the other: the looper plays without the fader, and the fader works on any tracks, so splitting them adds no dependency. As one module, the crossfader can't be chosen beside RAM Machines, though none of its four sites is one RAM Machines patches. Please ship the looper as a machine (category machines, with the two conflicts) and the crossfader as its own scenes module. Choosing both gives the same instrument you built. Each needs its own exact-build hardware run, but one session can cover both.
  3. Claims. platform.claims names the SRC override, the Internal Mixer's LEVEL and the CROSSFADER row, but not the rest of what it takes: FILL as the capture button, UP on the LOOP&FADE SRC pages, LEVEL on FADER ON tracks' pages, and the four +Drive files (/cfw/ramloop.a, .b, /cfw/xfade.a, .b). Please add them to whichever module takes each one, as Digi Perform does for its gestures and Digi Slicer for its files, so the next module that wants one of them sees the clash.

…s own machine module

At the owner's request Loop & Fade ships as two modules. This one keeps the
looper: the LOOPER machine (id 122, renamed from LOOP&FADE), category
machines, conflicts with RAM Machines and Digi Health. The crossfader moves
to its own module. Claims now name everything it takes: FILL as the capture
button, UP and push D on LOOPER tracks' SRC pages, SRC again for page 2, and
/cfw/ramloop.a and .b. Emulator-checked on LL01; the combined LF03 hardware
report is kept as evidence/lf03-before-split-hardware.json, and LL01's own
hardware run is pending.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DjGstighoF133yaiHa5t9d
…ader catalogue

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DjGstighoF133yaiHa5t9d
@draadpiraat draadpiraat changed the title Loop & Fade 0.1.0-experimental: a live looper and a crossfader for the Digitakt I Live Looper 0.1.0-experimental: a looper machine for one track (Digitakt I) Nov 10, 2026
@draadpiraat
draadpiraat marked this pull request as draft November 10, 2026 22:43
@draadpiraat

Copy link
Copy Markdown
Contributor Author

Thanks Jannik, all three done:

  1. Checks. The description now has its own "Guides: nothing" line. The board claims need my sign-in, which I'm doing next; then pr:ready claims the module and the machine id.
  2. Two modules. Split as you suggested. This PR is now Live Looper (live-looper, category machines, the LOOPER machine on id 122, conflicts RAM Machines and Digi Health). The crossfader is its own scenes module in Crossfader 0.1.0-experimental: a crossfader between two groups of tracks and inputs (Digitakt I) #1416, with no conflicts: it shares no bytes with RAM Machines. Each has its own emulator run, screenshots and package, and I'll run both exact builds (LL01, CF01) on my unit in one session; both PRs stay draft until those results are in. The earlier combined LF03 report is kept as evidence/lf03-before-split-hardware.json.
  3. Claims. Each module now names everything it takes: the looper FILL as its capture button, UP, push D and SRC-again on LOOPER tracks' SRC pages, and /cfw/ramloop.a/.b; the crossfader LEVEL and LEVEL push on the Internal Mixer and FADER ON tracks, the fader CC on FX CONTROL CH, and /cfw/xfade.a/.b.

@repeat98

Copy link
Copy Markdown
Owner

Thanks, that covers everything from my last comment. The split, the claims and the board entries all look right, and Live Looper and Crossfader (#1416) share no site, claim or code, so each one works on its own.

The red checks on both are only waiting for the hardware runs: the publication gate wants author-hardware evidence, and both manifests still say emulator. Once the LL01 and CF01 reports are in, please merge main (no rebase) and run npm run pr:ready on both branches. I'll review them for merge after that.

draadpiraat and others added 5 commits November 12, 2026 02:55
GLOB's filter set now covers TYPE, FREQ, RESO, ENV and ATK; STOP while
stopped calls off an arm; an arm made while stopped records from PLAY;
loops are cut to their exact length with a short fade at each end; MAX
is LEN, with PT.LEN following the pattern's length; SRC paging and the
header message work as on the stock pages; TAKEN reads RECORDED.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DjGstighoF133yaiHa5t9d
…r catalogue

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DjGstighoF133yaiHa5t9d
@draadpiraat
draadpiraat marked this pull request as ready for review November 12, 2026 02:37

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants