Skip to content

Analog Rytm MKII: Slice Loop 1.0.0 moves into the library - #1300

Merged
repeat98 merged 5 commits into
mainfrom
claude/rytm-slice-loop-library
Nov 7, 2026
Merged

repeat98 merged 5 commits into
mainfrom
claude/rytm-slice-loop-library

Conversation

@repeat98

@repeat98 repeat98 commented Nov 7, 2026

Copy link
Copy Markdown
Owner

Moves Iced-Cream's Slice Loop 1.0.0 from _submissions/ (merged in #937) into the library, so it appears on the site once merged. It is the elemod port (rytm2_mods v1.2, afd461d) of MrScruff's rytm-mods 0012-slice-loop: SLICE LOOP in the track menu (FUNC + CHRO) fills an empty sound track with sixteen trigs, each locked to the next sixteenth of the sample. Version stays 1.0.0 and the code is unchanged. Needs repeat98's first-release approval.

Author's OK: Iced-Cream agreed to our doing the move: #1291 (comment)

  • Moved to sdk/analog-rytm-mkii/modules/slice-loop/ with git mv. The manifest, build.json, source, include, media, evidence and every credit line are unchanged (author Iced-Cream; MrScruff's original, published in rytm-mods-src with permission; irpina's core). The submission already had tests.documentation, the tutorial, 5 rytm-emu captures with their record and measured memory, so the manifest needed nothing more. The modules README lists it.
  • Package: source-only OS 1.74 .elemod 8e9a7d2ea0c9a6102414142d27c1677e86302e6818f2bdb530922172807893bd in sdk/imports/packages/slice-loop/, recorded in sdk/imports/slice-loop-2026-11-07.json, pinned by sdk/imports/elekloader-slice-loop-2026-11-07.json (commit 983fe2ec) and vendored through elekloader:update -- --overlay. Built by build-elemod-isolated.sh (modwerk-source-tools 28323550) from a clean checkout of b307442d (the move alone). package-elemod-recipe.mjs --check reproduces it, and verify-elemod-release-exports.mjs reproduces all 45 exports.
  • Against upstream: its .run, sites, symbols and relocations equal rytm2_mods v1.2's release object (b1b8f51b…1cf9). Where that object takes 46 runs (440 bytes, at most 30 in a row) from the stock OS at link time, this package carries the bytes compiled from the source, as Filter Hz's package does.
  • For your review, unusual: rytm2_mods' release object takes 440 of its 752 .run bytes from the stock OS at link time, in 46 runs of 8 to 30 bytes. The longest is the push-and-call sequence the source re-emits around SAVE TRACK's menu entry (0x400f9eea). These are instructions written in src/slice-loop.s, reviewed in Analog Rytm MKII: Slice Loop 1.0.0 for OS 1.74 (submission) #937, that happen to equal stock's. Like every committed Rytm package (Filter Hz's included), this export carries the bytes compiled from that source rather than stock references. If you'd rather not ship that much stock-equal code as hex, this one should wait.
  • Import record: sdk/imports/rytm2-mods-slice-loop-afd461d.json names module-relative paths, so the move changes nothing in it and its hashes stand (sdk:imports:check green).
  • Release notes: src/community/module-changelogs/analog-rytm-mkii-slice-loop.json, one 1.0.0 entry, 4 lines.
  • Tests: library-parity lists slice-loop 1.0.0; digi-build.test.ts plans it beside Env Reset Amp and Quick Trig Conditions on the plain base.
  • TESTING.md: the line saying it is a submission until the browser can build it now says it waited there; a new "Library package" section records the build above. The author's hardware reports stay as reported.
  • Evidence: as reported by the author, on an Analog Rytm MKII with OS 1.74: R8T2 and C3A4 (beside other rytm2_mods ports), SXH4 (beside the other five Modwerk submissions) and SLH4 (alone), all with core-ar2 0.3 or earlier. This package's own bytes have not been linked against a stock OS file, flashed from the site or run on the Modwerk base (core-ar2 0.7). Record: docs/verification/2026-11-07-rytm-slice-loop-library.md.
  • Compatibility: Patches one site, a jmp at 0x400f9f02 in the track menu's constructor. No library module or base variant patches it, and its claim (ui:track menu SLICE LOOP item) is no other module's.
  • Agent board: pr:ready's board check says a move out of _submissions/ adds nothing that needs a claim, so it ran with MODWERK_BOARD=off, as for Env Reset Amp (Analog Rytm MKII: Env Reset Amp 1.0.0 moves into the library #1297).

Links: #937, #1297. Merge with a merge commit, not a squash, so the pinned commit 983fe2ec stays on main. If I merge main into this branch to clear a conflict, the pin stays in the branch history and the same applies.

What the guides lacked: nothing wrong. One gap, left out of this module release: ELEMOD_SOURCE_BUILDS.md does not say that an upstream release object may take runs from the stock OS (stock parts) while Modwerk's export carries the compiled bytes, so comparing an export with the author's object means comparing the hex parts at their offsets.

Validation commands and results:

  • npm run module:doctor -- slice-loop: manifest, category guide, browser builder and module rules green
  • MODWERK_BOARD=off npm run pr:ready: Ready
  • node scripts/package-elemod-recipe.mjs … --check, node scripts/verify-elemod-release-exports.mjs <build>: reproduced (45 exports)
  • npx vitest run src/devices/library-parity.test.ts src/engine/elekloader/digi-build.test.ts: 51 passed

🤖 Generated with Claude Code

repeat98 and others added 3 commits November 7, 2026 14:41
Moves Iced-Cream's Slice Loop 1.0.0 (an elemod port of MrScruff's rytm-mods
mod, in rytm2_mods) from _submissions/ into modules/slice-loop, code unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Compiled in the pinned modwerk-source-tools image from a clean checkout
of b307442 and exported with package-elemod-recipe.mjs (--check
reproduces it). Its .run, sites, symbols and relocations equal
rytm2_mods v1.2's release object, apart from the runs that object takes
from the stock OS. Adds the import record, release notes, the library
list line and TESTING.md's library package section.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The elekloader record pins the package at 983fe2e; elekloader:update
--overlay fetched it into the vendored catalogue. The library parity
and planBuild tests list it, and the verification record says what
was built and what has not run on a unit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@repeat98
repeat98 enabled auto-merge November 7, 2026 14:01
repeat98 and others added 2 commits November 7, 2026 15:04
Keeps Ctrl All (#1298) beside Slice Loop in the modules README and the
library parity test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keeps Main RMS (#1299) beside Slice Loop in the modules README and the
library parity test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@repeat98
repeat98 merged commit 84564e8 into main Nov 7, 2026
8 checks passed
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.

1 participant