From 787719d26131b62e3ed88bf6491c2c29b53dfa16 Mon Sep 17 00:00:00 2001 From: repeat98 Date: Sat, 7 Nov 2026 14:16:31 +0100 Subject: [PATCH 1/3] Analog Rytm MKII: Env Reset Amp leaves _submissions for the library Moves Iced-Cream's Env Reset Amp 1.0.0 (MrScruff's rytm-mods 0015-env-reset-amp, elemod port in rytm2_mods) from _submissions/ into modules/env-reset-amp, code unchanged. Co-Authored-By: Claude Opus 5.5 --- .../{_submissions => }/env-reset-amp/LICENSE | 0 .../{_submissions => }/env-reset-amp/README.md | 0 .../{_submissions => }/env-reset-amp/TESTING.md | 0 .../{_submissions => }/env-reset-amp/build.json | 0 .../env-reset-amp/evidence/hardware-testing.json | 0 .../env-reset-amp/evidence/source-parity.json | 0 .../env-reset-amp/media/LICENSE.md | 0 .../env-reset-amp/media/capture.json | 0 .../env-reset-amp/media/env-reset-amp-filt.png | Bin .../env-reset-amp/media/env-reset-amp.png | Bin .../env-reset-amp/media/env-reset-filter.png | Bin .../env-reset-amp/media/thumbnail.svg | 0 .../env-reset-amp/modwerk.module.json | 0 .../env-reset-amp/src/env-reset-amp.s | 0 .../env-reset-amp/upstream/README.md | 0 15 files changed, 0 insertions(+), 0 deletions(-) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/LICENSE (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/README.md (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/TESTING.md (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/build.json (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/evidence/hardware-testing.json (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/evidence/source-parity.json (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/media/LICENSE.md (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/media/capture.json (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/media/env-reset-amp-filt.png (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/media/env-reset-amp.png (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/media/env-reset-filter.png (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/media/thumbnail.svg (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/modwerk.module.json (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/src/env-reset-amp.s (100%) rename sdk/analog-rytm-mkii/modules/{_submissions => }/env-reset-amp/upstream/README.md (100%) diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/LICENSE b/sdk/analog-rytm-mkii/modules/env-reset-amp/LICENSE similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/LICENSE rename to sdk/analog-rytm-mkii/modules/env-reset-amp/LICENSE diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/README.md b/sdk/analog-rytm-mkii/modules/env-reset-amp/README.md similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/README.md rename to sdk/analog-rytm-mkii/modules/env-reset-amp/README.md diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/TESTING.md b/sdk/analog-rytm-mkii/modules/env-reset-amp/TESTING.md similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/TESTING.md rename to sdk/analog-rytm-mkii/modules/env-reset-amp/TESTING.md diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/build.json b/sdk/analog-rytm-mkii/modules/env-reset-amp/build.json similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/build.json rename to sdk/analog-rytm-mkii/modules/env-reset-amp/build.json diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/evidence/hardware-testing.json b/sdk/analog-rytm-mkii/modules/env-reset-amp/evidence/hardware-testing.json similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/evidence/hardware-testing.json rename to sdk/analog-rytm-mkii/modules/env-reset-amp/evidence/hardware-testing.json diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/evidence/source-parity.json b/sdk/analog-rytm-mkii/modules/env-reset-amp/evidence/source-parity.json similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/evidence/source-parity.json rename to sdk/analog-rytm-mkii/modules/env-reset-amp/evidence/source-parity.json diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/LICENSE.md b/sdk/analog-rytm-mkii/modules/env-reset-amp/media/LICENSE.md similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/LICENSE.md rename to sdk/analog-rytm-mkii/modules/env-reset-amp/media/LICENSE.md diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/capture.json b/sdk/analog-rytm-mkii/modules/env-reset-amp/media/capture.json similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/capture.json rename to sdk/analog-rytm-mkii/modules/env-reset-amp/media/capture.json diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/env-reset-amp-filt.png b/sdk/analog-rytm-mkii/modules/env-reset-amp/media/env-reset-amp-filt.png similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/env-reset-amp-filt.png rename to sdk/analog-rytm-mkii/modules/env-reset-amp/media/env-reset-amp-filt.png diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/env-reset-amp.png b/sdk/analog-rytm-mkii/modules/env-reset-amp/media/env-reset-amp.png similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/env-reset-amp.png rename to sdk/analog-rytm-mkii/modules/env-reset-amp/media/env-reset-amp.png diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/env-reset-filter.png b/sdk/analog-rytm-mkii/modules/env-reset-amp/media/env-reset-filter.png similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/env-reset-filter.png rename to sdk/analog-rytm-mkii/modules/env-reset-amp/media/env-reset-filter.png diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/thumbnail.svg b/sdk/analog-rytm-mkii/modules/env-reset-amp/media/thumbnail.svg similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/media/thumbnail.svg rename to sdk/analog-rytm-mkii/modules/env-reset-amp/media/thumbnail.svg diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/modwerk.module.json b/sdk/analog-rytm-mkii/modules/env-reset-amp/modwerk.module.json similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/modwerk.module.json rename to sdk/analog-rytm-mkii/modules/env-reset-amp/modwerk.module.json diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/src/env-reset-amp.s b/sdk/analog-rytm-mkii/modules/env-reset-amp/src/env-reset-amp.s similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/src/env-reset-amp.s rename to sdk/analog-rytm-mkii/modules/env-reset-amp/src/env-reset-amp.s diff --git a/sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/upstream/README.md b/sdk/analog-rytm-mkii/modules/env-reset-amp/upstream/README.md similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/env-reset-amp/upstream/README.md rename to sdk/analog-rytm-mkii/modules/env-reset-amp/upstream/README.md From f9953205795b8bc58b2f33aeae39d7c95d3c2a01 Mon Sep 17 00:00:00 2001 From: repeat98 Date: Sat, 7 Nov 2026 14:18:09 +0100 Subject: [PATCH 2/3] Analog Rytm MKII: Env Reset Amp 1.0.0 source-only OS 1.74 package Compiled in the pinned modwerk-source-tools image from a clean checkout of 787719d2 and exported with package-elemod-recipe.mjs (fadea586, --check reproduces it). Its .run, sites and symbols equal rytm2_mods v1.2's release object. Adds the import record, release notes, the library list line and TESTING.md's library package section. Co-Authored-By: Claude Opus 5.5 --- sdk/analog-rytm-mkii/modules/README.md | 4 +- .../modules/env-reset-amp/TESTING.md | 11 +- sdk/imports/env-reset-amp-2026-11-07.json | 19 +++ .../env-reset-amp-1.0.0-os1.74.elemod | 119 ++++++++++++++++++ .../analog-rytm-mkii-env-reset-amp.json | 12 ++ 5 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 sdk/imports/env-reset-amp-2026-11-07.json create mode 100644 sdk/imports/packages/env-reset-amp/env-reset-amp-1.0.0-os1.74.elemod create mode 100644 src/community/module-changelogs/analog-rytm-mkii-env-reset-amp.json diff --git a/sdk/analog-rytm-mkii/modules/README.md b/sdk/analog-rytm-mkii/modules/README.md index b9c18efdc..741f30235 100644 --- a/sdk/analog-rytm-mkii/modules/README.md +++ b/sdk/analog-rytm-mkii/modules/README.md @@ -1,7 +1,7 @@ # Analog Rytm MKII modules -Each folder here is a library module for the Analog Rytm MKII on OS 1.74 and core-ar2 0.7 (modules built for 0.3 link with it, but for mods that patch a page's entry or a page key's list themselves: see the [SDK guide](../../machines/analog-rytm-mkii/README.md#parameter-pages-core-04-and-later)): [CHORUS](chorus/), [Pad Pressure Fix](chromatic-aftertouch-fix/), [Control In Actions](control-in-actions/), [Filter Hz](filter-hz/), [FLANGER](flanger/), [Live Rec Retrig Fix](live-rec-retrig-fix/), [Loop Sync](loop-sync/), [PHASER](phaser/), [Pipo Loop](pipo-loop/), [QPERF](qperf/), [Quick Trig Conditions](quick-fill-trig-condition/), [Quick Velocity+Aftertouch Assign](quick-velocity-aftertouch-assign/), [Sample RATE](sample-rate/), [Silent Pad+Trig Settings](silent-pad-trig/), [Temp Save](temp-save/) and [WAVEFOLDER](wavefolder/). CHORUS, FLANGER, PHASER and WAVEFOLDER are send effects: a set holding one builds on the Modwerk base's send-bus variant ([Send effects](../../machines/analog-rytm-mkii/README.md#send-effects)). A new module comes here with its pinned package and is live once merged ([Create a mod](../../machines/analog-rytm-mkii/README.md#create-a-mod)); `_submissions/` holds older submissions and takes no new modules or changes. Loop Sync 0.2.0-experimental entered on the owner's approval with emulator evidence for its source; its [TESTING.md](loop-sync/TESTING.md) records what is still open. Pipo Loop, Sample RATE and Silent Pad+Trig Settings entered on 2 November 2026, on the owner's approval with the author's unit reports; each TESTING.md records what is still open. Quick Trig Conditions (was Quick Fill Trig Condition, merged into `_submissions/` in #1149) entered with 0.2.0-experimental on 4 November 2026, with the author's unit report on its build FC09. +Each folder here is a library module for the Analog Rytm MKII on OS 1.74 and core-ar2 0.7 (modules built for 0.3 link with it, but for mods that patch a page's entry or a page key's list themselves: see the [SDK guide](../../machines/analog-rytm-mkii/README.md#parameter-pages-core-04-and-later)): [CHORUS](chorus/), [Pad Pressure Fix](chromatic-aftertouch-fix/), [Control In Actions](control-in-actions/), [Env Reset Amp](env-reset-amp/), [Filter Hz](filter-hz/), [FLANGER](flanger/), [Live Rec Retrig Fix](live-rec-retrig-fix/), [Loop Sync](loop-sync/), [PHASER](phaser/), [Pipo Loop](pipo-loop/), [QPERF](qperf/), [Quick Trig Conditions](quick-fill-trig-condition/), [Quick Velocity+Aftertouch Assign](quick-velocity-aftertouch-assign/), [Sample RATE](sample-rate/), [Silent Pad+Trig Settings](silent-pad-trig/), [Temp Save](temp-save/) and [WAVEFOLDER](wavefolder/). CHORUS, FLANGER, PHASER and WAVEFOLDER are send effects: a set holding one builds on the Modwerk base's send-bus variant ([Send effects](../../machines/analog-rytm-mkii/README.md#send-effects)). A new module comes here with its pinned package and is live once merged ([Create a mod](../../machines/analog-rytm-mkii/README.md#create-a-mod)); `_submissions/` holds older submissions and takes no new modules or changes. Loop Sync 0.2.0-experimental entered on the owner's approval with emulator evidence for its source; its [TESTING.md](loop-sync/TESTING.md) records what is still open. Pipo Loop, Sample RATE and Silent Pad+Trig Settings entered on 2 November 2026, on the owner's approval with the author's unit reports; each TESTING.md records what is still open. Quick Trig Conditions (was Quick Fill Trig Condition, merged into `_submissions/` in #1149) entered with 0.2.0-experimental on 4 November 2026, with the author's unit report on its build FC09. -Temp Save (merged into `_submissions/` in #1116) entered with 0.1.0-experimental on 5 November 2026, with the author's unit report on its build TS09. +Temp Save (merged into `_submissions/` in #1116) entered with 0.1.0-experimental on 5 November 2026, with the author's unit report on its build TS09. Env Reset Amp (merged into `_submissions/` in #934) entered with 1.0.0 on 7 November 2026, with the author's unit reports on its builds R8T2, C3A4, SXH4 and ERH4. Create one with `npm run module:new -- my-mod --machine analog-rytm-mkii --author your-github-login`; see [the Analog Rytm MKII SDK guide](../../machines/analog-rytm-mkii/README.md). diff --git a/sdk/analog-rytm-mkii/modules/env-reset-amp/TESTING.md b/sdk/analog-rytm-mkii/modules/env-reset-amp/TESTING.md index 0fd30380d..713da23eb 100644 --- a/sdk/analog-rytm-mkii/modules/env-reset-amp/TESTING.md +++ b/sdk/analog-rytm-mkii/modules/env-reset-amp/TESTING.md @@ -57,7 +57,7 @@ within 9 ms. Both agree with the SXH4 run. No output froze or dropped out. ## Source build comparison -The module is a submission (`modules/_submissions/`) until the browser can build it. Modwerk's own validation and compiler path, run on this folder: +While the module waited in `modules/_submissions/`, Modwerk's own validation and compiler path ran on this folder: ```sh node scripts/machine-modules.mjs --drafts --base origin/main @@ -76,6 +76,15 @@ Compiler: Ubuntu 24.04 `m68k-linux-gnu` GCC 13.3.0 and binutils 2.42. Modwerk's toolchain was not run here, and CI's `elemod-source` job compiles published folders only. The firmware and the linked builds stayed on the owner's computer. +## Library package + +On 2026-11-07 the folder moved into the library, code unchanged. `scripts/build-elemod-isolated.sh` compiled it in +Modwerk's pinned `modwerk-source-tools` image (`m68k-elf`, from `sdk/build/Dockerfile`) from a clean checkout of +`787719d2`, and `scripts/package-elemod-recipe.mjs` exported +`sdk/imports/packages/env-reset-amp/env-reset-amp-1.0.0-os1.74.elemod` (`fadea586…e993`); `--check` reproduces it. Its +52-byte `.run`, three sites and symbols are identical to rytm2_mods v1.2's release object (`881bcfed…40d1`). This +package's own bytes have not been linked against a stock OS file or run on a unit. + ## Emulator [rytm-emu](https://github.com/trigcondition/rytm-emu) `c5732f0`, headless `dtboot`, the same diff --git a/sdk/imports/env-reset-amp-2026-11-07.json b/sdk/imports/env-reset-amp-2026-11-07.json new file mode 100644 index 000000000..1959bb949 --- /dev/null +++ b/sdk/imports/env-reset-amp-2026-11-07.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 1, + "module": "analog-rytm-mkii/env-reset-amp", + "version": "1.0.0", + "date": "2026-11-07", + "changes": [ + "First library release, for Analog Rytm MKII OS 1.74 on core-ar2 0.3 and later: SOUND SETTINGS > ENV RESET gains AMP and AMP+FILT, so the amp envelope restarts from silence on every trig." + ], + "packages": [ + { + "os": "1.74", + "path": "sdk/imports/packages/env-reset-amp/env-reset-amp-1.0.0-os1.74.elemod", + "sha256": "fadea586838ab574ee69a3f1d524cfc981404e3cee7745593ab02eda0e23e993" + } + ], + "stockPolicy": "No firmware or stock-derived code/tables are present. Addresses, lengths and SHA-256 guards are metadata; exported instructions and sections are authored module code. Local materialized recipes and firmware are never committed.", + "evidence": "sdk/analog-rytm-mkii/modules/env-reset-amp/TESTING.md", + "requires": [] +} diff --git a/sdk/imports/packages/env-reset-amp/env-reset-amp-1.0.0-os1.74.elemod b/sdk/imports/packages/env-reset-amp/env-reset-amp-1.0.0-os1.74.elemod new file mode 100644 index 000000000..daab0bd0c --- /dev/null +++ b/sdk/imports/packages/env-reset-amp/env-reset-amp-1.0.0-os1.74.elemod @@ -0,0 +1,119 @@ +{ + "elemod": 2, + "id": "env-reset-amp", + "version": "1.0.0", + "title": "Env Reset Amp", + "description": "SOUND SETTINGS ENV RESET gains AMP and AMP+FILT: the amp envelope restarts from silence on every trig, so AMP ATK is heard on every hit.", + "category": "machines", + "author": "Iced-Cream", + "license": "GPL-2.0-only", + "target": { + "device": "analog-rytm-mk2", + "product": "Analog Rytm MKII", + "os": "1.74", + "syx_sha256": "cb0f99d620edde994fb860c0e79cc2464e427d06882828cfdfb00fc53700e123", + "section3_sha256": "34cd0c4da8e4b810d1b25284475a99ea53821e2ab7d30a978bf15dc578251f3b", + "section3_len": 3005432 + }, + "sections": { + ".run": { + "align": 4, + "len": 52, + "parts": [ + [ + "hex", + "0080b000000041f9402911387bb0380041f98000ea307db0580008060000670c203cb0100000243c000000804ef940109b760000" + ] + ] + } + }, + "symbols": { + "P_BIT_PROBE": [ + "abs", + 0 + ], + "ATTACK_RESUME": [ + "abs", + 1074830198 + ], + "VOICE_TRACK": [ + "abs", + 1076433208 + ], + "ENV_RESET": [ + "abs", + 2147543600 + ], + "ENV_RESET_AMP": [ + "abs", + 0 + ], + "DROP_RATE": [ + "abs", + 2953838592 + ], + "DROP_LEVEL": [ + "abs", + 128 + ], + "env_reset_amp_attack": [ + ".run", + 0 + ] + }, + "exports": [ + "env_reset_amp_attack" + ], + "imports": [], + "weak": [], + "relocs": [], + "sites": [ + { + "addr": "0x400bcf8a", + "len": 2, + "stock_sha256": "0b358362552792220751c58c4cca9c4e54407d2339649a0b96182880f0504c1a", + "new": "7403", + "kind": "code", + "relocs": [] + }, + { + "addr": "0x400ef8d6", + "len": 2, + "stock_sha256": "4e4b41344512feecd49483d4a3f357ebd5b45f53276f21411a66cb3b4d597c16", + "new": "4e71", + "kind": "code", + "relocs": [] + }, + { + "addr": "0x40109b70", + "len": 6, + "stock_sha256": "17271641181704a08a8766493e2315ce4d971137f09ddf962389424c9cbfac6f", + "new": "4ef900000000", + "kind": "code", + "relocs": [ + [ + 2, + "abs32", + "sym:env_reset_amp_attack", + 0 + ] + ] + } + ], + "collections": {}, + "contribute": [], + "copied": [], + "resources": { + "regions": [], + "names": [ + "ui:SOUND SETTINGS ENV RESET values", + "audio:amp envelope attack on trig" + ], + "core": "0.3" + }, + "requires": [ + "core" + ], + "conflicts": [], + "signature": null +} diff --git a/src/community/module-changelogs/analog-rytm-mkii-env-reset-amp.json b/src/community/module-changelogs/analog-rytm-mkii-env-reset-amp.json new file mode 100644 index 000000000..a8043dbd4 --- /dev/null +++ b/src/community/module-changelogs/analog-rytm-mkii-env-reset-amp.json @@ -0,0 +1,12 @@ +[ + { + "version": "1.0.0", + "date": "2026-11-07", + "changes": [ + "First release, for Analog Rytm MKII OS 1.74: MrScruff's Env Reset Amp, ported to elemod by Iced-Cream, with his code unchanged.", + "SOUND SETTINGS > ENV RESET now steps OFF, AMP, FILTER and AMP+FILT, saved with the sound.", + "With AMP or AMP+FILT, the amp envelope restarts from silence on every trig, so AMP ATK is heard on every hit.", + "Known issue: a trig on a voice that is still sounding drops it to silence at once, which can click, most with ATK 0 and a long DEC." + ] + } +] From fbbb5f0214c276d0bcd146884893b7ab3773118e Mon Sep 17 00:00:00 2001 From: repeat98 Date: Sat, 7 Nov 2026 14:19:48 +0100 Subject: [PATCH 3/3] Analog Rytm MKII: pin Env Reset Amp 1.0.0 for the browser builder The elekloader record pins the package at f9953205; 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 --- .../2026-11-07-rytm-env-reset-amp-library.md | 9 ++ .../elekloader-env-reset-amp-2026-11-07.json | 34 +++++ src/devices/library-parity.test.ts | 4 +- src/engine/elekloader/digi-build.test.ts | 11 ++ .../catalog/env-reset-amp-1.0.0-os1.74.elemod | 119 ++++++++++++++++++ 5 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 docs/verification/2026-11-07-rytm-env-reset-amp-library.md create mode 100644 sdk/imports/elekloader-env-reset-amp-2026-11-07.json create mode 100644 vendor/elekloader/catalog/env-reset-amp-1.0.0-os1.74.elemod diff --git a/docs/verification/2026-11-07-rytm-env-reset-amp-library.md b/docs/verification/2026-11-07-rytm-env-reset-amp-library.md new file mode 100644 index 000000000..d95cda8d1 --- /dev/null +++ b/docs/verification/2026-11-07-rytm-env-reset-amp-library.md @@ -0,0 +1,9 @@ +# Analog Rytm MKII: Env Reset Amp 1.0.0 in the library — 7 November 2026 + +Iced-Cream's Env Reset Amp, in `_submissions/` since #934, moves into the library as 1.0.0 (same version, same code), with the author's OK in [#1291](https://github.com/repeat98/modwerk/pull/1291#issuecomment-6706064243). It is the elemod port of MrScruff's rytm-mods `0015-env-reset-amp`: SOUND SETTINGS > ENV RESET gains AMP and AMP+FILT, and with the amp bit set the amp envelope restarts from silence on every trig. Its source-only OS 1.74 package is pinned in `sdk/imports/elekloader-env-reset-amp-2026-11-07.json` (commit `f9953205`). + +- **Build:** `scripts/build-elemod-isolated.sh` in `modwerk-source-tools` (image `28323550…`, from `sdk/build/Dockerfile`, unchanged since 5 October) from a clean checkout of `787719d2`, the move alone. The export reproduces with `package-elemod-recipe.mjs --check`. +- **Package:** `env-reset-amp-1.0.0-os1.74.elemod` `fadea586…e993`, fetched into the vendored catalogue through its pin by `npm run elekloader:update -- --overlay`. 52 bytes of `.run`, three sites, no `.bss`; its `.run`, sites and symbols are identical to rytm2_mods v1.2's release object `env-reset-amp-1.0-os1.74.elemod` (`881bcfed…40d1`), the object the module's `source-parity.json` links byte for byte. +- **Code:** unchanged from the submission; `sdk/imports/rytm2-mods-env-reset-amp-afd461d.json` names module-relative paths, so its hashes stand as recorded. The move adds the package, its pins and the release notes, and TESTING.md's library package section. +- **Linking:** `planBuild` plans it beside Filter Hz and Temp Save on the plain base (`src/engine/elekloader/digi-build.test.ts`). +- **On a unit:** the author's Analog Rytm MKII ran it in R8T2, C3A4, SXH4 and ERH4 (alone), all with core-ar2 0.3 or earlier, as [TESTING.md](../../sdk/analog-rytm-mkii/modules/env-reset-amp/TESTING.md) records. This package's bytes have not been linked against a stock OS file or flashed from the site, and it has not run on the Modwerk base (core-ar2 0.7). diff --git a/sdk/imports/elekloader-env-reset-amp-2026-11-07.json b/sdk/imports/elekloader-env-reset-amp-2026-11-07.json new file mode 100644 index 000000000..b592fc43c --- /dev/null +++ b/sdk/imports/elekloader-env-reset-amp-2026-11-07.json @@ -0,0 +1,34 @@ +{ + "schema": 1, + "kind": "elekloader-catalog", + "revision": "env-reset-amp-2026-11-07", + "about": "Modwerk source-only env-reset-amp package for Analog Rytm MKII OS 1.74, compiled from sdk/analog-rytm-mkii/modules/env-reset-amp.", + "cores": [], + "mods": [ + { + "file": "env-reset-amp-1.0.0-os1.74.elemod", + "sha256": "fadea586838ab574ee69a3f1d524cfc981404e3cee7745593ab02eda0e23e993", + "id": "env-reset-amp", + "version": "1.0.0", + "device": "analog-rytm-mk2", + "os": "1.74", + "license": "GPL-2.0-only", + "source": { + "repo": "repeat98/modwerk", + "commit": "f9953205795b8bc58b2f33aeae39d7c95d3c2a01", + "path": "sdk/imports/packages/env-reset-amp/env-reset-amp-1.0.0-os1.74.elemod" + }, + "title": "Env Reset Amp", + "requires": [ + "core" + ], + "conflicts": [], + "summary": "SOUND SETTINGS ENV RESET gains AMP and AMP+FILT: the amp envelope restarts from silence on every trig, so AMP ATK is heard on every hit.", + "description": "Env Reset Amp extends SOUND SETTINGS > ENV RESET from OFF and FILTER to OFF, AMP, FILTER and AMP+FILT. With AMP or AMP+FILT the amp envelope restarts from silence on every trig instead of continuing from its current level, so the AMP attack is heard on every hit. The setting belongs to the sound and is saved with it. It is an elemod port of MrScruff's rytm-mods 0015-env-reset-amp, with his shipping code unchanged.", + "category": "Sound", + "author": "Iced-Cream", + "needs_core": "0.3", + "on_unit": "On an Analog Rytm MKII on OS 1.74, as reported by the author: with ENV RESET at AMP the amp envelope restarted from silence on every quick hit, in builds R8T2 and C3A4 beside other rytm2_mods ports, SXH4 beside the other five Modwerk submissions and ERH4 alone, each with core-ar2 0.3 or earlier. This package's own bytes have not been flashed from the site." + } + ] +} diff --git a/src/devices/library-parity.test.ts b/src/devices/library-parity.test.ts index 459ca3557..7197be23d 100644 --- a/src/devices/library-parity.test.ts +++ b/src/devices/library-parity.test.ts @@ -58,10 +58,10 @@ describe('Digitakt II research preview', () => { }) describe('Analog Rytm MKII library', () => { - it('lists Audio In FX, CHORUS, Pad Pressure Fix, Control In Actions, Filter Hz, FLANGER, Live Rec Retrig Fix, Loop Sync, PHASER, Pipo Loop, QPERF, Quick Trig Conditions, Quick Velocity+Aftertouch Assign, Sample RATE, Silent Pad+Trig, Temp Save and WAVEFOLDER and leaves the core build preview once a module is in the library', () => { + it('lists Audio In FX, CHORUS, Pad Pressure Fix, Control In Actions, Env Reset Amp, Filter Hz, FLANGER, Live Rec Retrig Fix, Loop Sync, PHASER, Pipo Loop, QPERF, Quick Trig Conditions, Quick Velocity+Aftertouch Assign, Sample RATE, Silent Pad+Trig, Temp Save and WAVEFOLDER and leaves the core build preview once a module is in the library', () => { expect(DEVICES_BY_ID['analog-rytm-mkii'].status).toBe('preview') expect(isCoreBuildPreview('analog-rytm-mkii')).toBe(false) - expect(DIGI_MODS.filter(mod => mod.device === 'analog-rytm-mkii').map(mod => [mod.id, mod.version, mod.releases])).toEqual([['audio-in-fx', '0.1.0', ['1.74']], ['chorus', '0.1.0', ['1.74']], ['chromatic-aftertouch-fix', '0.2.0', ['1.74']], ['control-in-actions', '0.1.2', ['1.74']], ['filter-hz', '1.2.0', ['1.74']], ['flanger', '0.1.0', ['1.74']], ['live-rec-retrig-fix', '0.2.1', ['1.74']], ['loop-sync', '0.3.2', ['1.74']], ['phaser', '0.1.0', ['1.74']], ['pipo-loop', '0.1.2', ['1.74']], ['qperf', '0.2.0', ['1.74']], ['quick-fill-trig-condition', '0.2.0', ['1.74']], ['quick-velocity-aftertouch-assign', '0.1.0', ['1.74']], ['sample-rate', '0.1.1', ['1.74']], ['silent-pad-trig', '0.7.0', ['1.74']], ['temp-save', '0.1.0', ['1.74']], ['wavefolder', '0.1.0', ['1.74']]]) + expect(DIGI_MODS.filter(mod => mod.device === 'analog-rytm-mkii').map(mod => [mod.id, mod.version, mod.releases])).toEqual([['audio-in-fx', '0.1.0', ['1.74']], ['chorus', '0.1.0', ['1.74']], ['chromatic-aftertouch-fix', '0.2.0', ['1.74']], ['control-in-actions', '0.1.2', ['1.74']], ['env-reset-amp', '1.0.0', ['1.74']], ['filter-hz', '1.2.0', ['1.74']], ['flanger', '0.1.0', ['1.74']], ['live-rec-retrig-fix', '0.2.1', ['1.74']], ['loop-sync', '0.3.2', ['1.74']], ['phaser', '0.1.0', ['1.74']], ['pipo-loop', '0.1.2', ['1.74']], ['qperf', '0.2.0', ['1.74']], ['quick-fill-trig-condition', '0.2.0', ['1.74']], ['quick-velocity-aftertouch-assign', '0.1.0', ['1.74']], ['sample-rate', '0.1.1', ['1.74']], ['silent-pad-trig', '0.7.0', ['1.74']], ['temp-save', '0.1.0', ['1.74']], ['wavefolder', '0.1.0', ['1.74']]]) }) }) diff --git a/src/engine/elekloader/digi-build.test.ts b/src/engine/elekloader/digi-build.test.ts index 4f335ff4a..fcf7bcff3 100644 --- a/src/engine/elekloader/digi-build.test.ts +++ b/src/engine/elekloader/digi-build.test.ts @@ -148,6 +148,17 @@ describe('the vendored elekloader catalog', () => { missing: [], }) }) + it('plans Env Reset Amp beside Filter Hz and Temp Save from its pinned source-only package on the plain base', () => { + expect(planBuild('analog-rytm-mkii', '1.74', ['env-reset-amp', 'filter-hz', 'temp-save'])).toMatchObject({ + core: { file: PLAIN, version: '0.7' }, + mods: [ + { id: 'env-reset-amp', file: 'env-reset-amp-1.0.0-os1.74.elemod', device: 'analog-rytm-mk2', os: '1.74', version: '1.0.0' }, + { id: 'filter-hz', file: 'filter-hz-1.2.0-os1.74.elemod', device: 'analog-rytm-mk2', os: '1.74', version: '1.2.0' }, + { id: 'temp-save', file: 'temp-save-0.1.0-experimental-os1.74.elemod', device: 'analog-rytm-mk2', os: '1.74', version: '0.1.0-experimental' }, + ], + missing: [], + }) + }) it('plans Temp Save beside Quick Trig Conditions and Silent Pad+Trig from its pinned source-only package on the plain base', () => { expect(planBuild('analog-rytm-mkii', '1.74', ['quick-fill-trig-condition', 'silent-pad-trig', 'temp-save'])).toMatchObject({ core: { file: PLAIN, version: '0.7' }, diff --git a/vendor/elekloader/catalog/env-reset-amp-1.0.0-os1.74.elemod b/vendor/elekloader/catalog/env-reset-amp-1.0.0-os1.74.elemod new file mode 100644 index 000000000..daab0bd0c --- /dev/null +++ b/vendor/elekloader/catalog/env-reset-amp-1.0.0-os1.74.elemod @@ -0,0 +1,119 @@ +{ + "elemod": 2, + "id": "env-reset-amp", + "version": "1.0.0", + "title": "Env Reset Amp", + "description": "SOUND SETTINGS ENV RESET gains AMP and AMP+FILT: the amp envelope restarts from silence on every trig, so AMP ATK is heard on every hit.", + "category": "machines", + "author": "Iced-Cream", + "license": "GPL-2.0-only", + "target": { + "device": "analog-rytm-mk2", + "product": "Analog Rytm MKII", + "os": "1.74", + "syx_sha256": "cb0f99d620edde994fb860c0e79cc2464e427d06882828cfdfb00fc53700e123", + "section3_sha256": "34cd0c4da8e4b810d1b25284475a99ea53821e2ab7d30a978bf15dc578251f3b", + "section3_len": 3005432 + }, + "sections": { + ".run": { + "align": 4, + "len": 52, + "parts": [ + [ + "hex", + "0080b000000041f9402911387bb0380041f98000ea307db0580008060000670c203cb0100000243c000000804ef940109b760000" + ] + ] + } + }, + "symbols": { + "P_BIT_PROBE": [ + "abs", + 0 + ], + "ATTACK_RESUME": [ + "abs", + 1074830198 + ], + "VOICE_TRACK": [ + "abs", + 1076433208 + ], + "ENV_RESET": [ + "abs", + 2147543600 + ], + "ENV_RESET_AMP": [ + "abs", + 0 + ], + "DROP_RATE": [ + "abs", + 2953838592 + ], + "DROP_LEVEL": [ + "abs", + 128 + ], + "env_reset_amp_attack": [ + ".run", + 0 + ] + }, + "exports": [ + "env_reset_amp_attack" + ], + "imports": [], + "weak": [], + "relocs": [], + "sites": [ + { + "addr": "0x400bcf8a", + "len": 2, + "stock_sha256": "0b358362552792220751c58c4cca9c4e54407d2339649a0b96182880f0504c1a", + "new": "7403", + "kind": "code", + "relocs": [] + }, + { + "addr": "0x400ef8d6", + "len": 2, + "stock_sha256": "4e4b41344512feecd49483d4a3f357ebd5b45f53276f21411a66cb3b4d597c16", + "new": "4e71", + "kind": "code", + "relocs": [] + }, + { + "addr": "0x40109b70", + "len": 6, + "stock_sha256": "17271641181704a08a8766493e2315ce4d971137f09ddf962389424c9cbfac6f", + "new": "4ef900000000", + "kind": "code", + "relocs": [ + [ + 2, + "abs32", + "sym:env_reset_amp_attack", + 0 + ] + ] + } + ], + "collections": {}, + "contribute": [], + "copied": [], + "resources": { + "regions": [], + "names": [ + "ui:SOUND SETTINGS ENV RESET values", + "audio:amp envelope attack on trig" + ], + "core": "0.3" + }, + "requires": [ + "core" + ], + "conflicts": [], + "signature": null +}