diff --git a/docs/verification/2026-11-07-rytm-main-rms-library.md b/docs/verification/2026-11-07-rytm-main-rms-library.md new file mode 100644 index 000000000..0fab598a9 --- /dev/null +++ b/docs/verification/2026-11-07-rytm-main-rms-library.md @@ -0,0 +1,9 @@ +# Analog Rytm MKII: Main RMS 1.0.0 in the library — 7 November 2026 + +Iced-Cream's Main RMS, in `_submissions/` since #935, 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 `0009-main-rms`: on the compressor pages the VOL label draws inverted while the main output is louder than -18 dBFS RMS. Its source-only OS 1.74 package is pinned in `sdk/imports/elekloader-main-rms-2026-11-07.json` (commit `100f1d85`). + +- **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 `d93ad9a2`, the move alone. The export reproduces with `package-elemod-recipe.mjs --check`. +- **Package:** `main-rms-1.0.0-os1.74.elemod` `fe24c98b…6f4a`, fetched into the vendored catalogue through its pin by `npm run elekloader:update -- --overlay`. 264 bytes of `.run`, 3 sites, no `.bss`. Its `.run`, sites, symbols and relocations equal rytm2_mods v1.2's release object (`cbd69edb…5d54`); where that object takes 2 runs (16 bytes) from the stock OS at link time, this package carries the bytes compiled from the source, as Filter Hz's package does. +- **Code:** unchanged from the submission; `sdk/imports/rytm2-mods-main-rms-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 and C3A4 (beside other rytm2_mods ports), SXH4 (beside the other five Modwerk submissions) and MRH4 (alone), all with core-ar2 0.3 or earlier, as [TESTING.md](../../sdk/analog-rytm-mkii/modules/main-rms/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/analog-rytm-mkii/modules/README.md b/sdk/analog-rytm-mkii/modules/README.md index b448df293..7cdb18d8f 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/), [Ctrl All](ctrl-all/), [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. +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/), [Ctrl All](ctrl-all/), [Env Reset Amp](env-reset-amp/), [Filter Hz](filter-hz/), [FLANGER](flanger/), [Live Rec Retrig Fix](live-rec-retrig-fix/), [Loop Sync](loop-sync/), [Main RMS](main-rms/), [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. 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. Ctrl All (merged into `_submissions/` in #936) entered with 1.2.0 on 7 November 2026, with the author's unit reports on its builds R8K4, C3A4, SXH4 and CAH4. +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. Ctrl All (merged into `_submissions/` in #936) entered with 1.2.0 on 7 November 2026, with the author's unit reports on its builds R8K4, C3A4, SXH4 and CAH4. Main RMS (merged into `_submissions/` in #935) entered with 1.0.0 on 7 November 2026, with the author's unit reports on its builds R8T2, C3A4, SXH4 and MRH4. 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/_submissions/main-rms/LICENSE b/sdk/analog-rytm-mkii/modules/main-rms/LICENSE similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/LICENSE rename to sdk/analog-rytm-mkii/modules/main-rms/LICENSE diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/README.md b/sdk/analog-rytm-mkii/modules/main-rms/README.md similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/README.md rename to sdk/analog-rytm-mkii/modules/main-rms/README.md diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/TESTING.md b/sdk/analog-rytm-mkii/modules/main-rms/TESTING.md similarity index 87% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/TESTING.md rename to sdk/analog-rytm-mkii/modules/main-rms/TESTING.md index affc31be6..a20d1657a 100644 --- a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/TESTING.md +++ b/sdk/analog-rytm-mkii/modules/main-rms/TESTING.md @@ -60,7 +60,7 @@ after STOP while the tails rang, and plain again at 4.4 s and 8.4 s. No output f ## 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 @@ -79,6 +79,14 @@ 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 +`d93ad9a2`, and `scripts/package-elemod-recipe.mjs` exported +`sdk/imports/packages/main-rms/main-rms-1.0.0-os1.74.elemod` (`fe24c98b…6f4a`); `--check` reproduces it. Its +264-byte `.run`, 3 sites, symbols and relocations equal rytm2_mods v1.2's release object (`cbd69edb…5d54`), except that where that object takes 2 runs (16 bytes) from the stock OS at link time, this package carries the bytes compiled from the source, as Filter Hz's package does. 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` diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/build.json b/sdk/analog-rytm-mkii/modules/main-rms/build.json similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/build.json rename to sdk/analog-rytm-mkii/modules/main-rms/build.json diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/evidence/hardware-testing.json b/sdk/analog-rytm-mkii/modules/main-rms/evidence/hardware-testing.json similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/evidence/hardware-testing.json rename to sdk/analog-rytm-mkii/modules/main-rms/evidence/hardware-testing.json diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/evidence/source-parity.json b/sdk/analog-rytm-mkii/modules/main-rms/evidence/source-parity.json similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/evidence/source-parity.json rename to sdk/analog-rytm-mkii/modules/main-rms/evidence/source-parity.json diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/include/ar2-1.74.inc b/sdk/analog-rytm-mkii/modules/main-rms/include/ar2-1.74.inc similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/include/ar2-1.74.inc rename to sdk/analog-rytm-mkii/modules/main-rms/include/ar2-1.74.inc diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/media/LICENSE.md b/sdk/analog-rytm-mkii/modules/main-rms/media/LICENSE.md similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/media/LICENSE.md rename to sdk/analog-rytm-mkii/modules/main-rms/media/LICENSE.md diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/media/capture.json b/sdk/analog-rytm-mkii/modules/main-rms/media/capture.json similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/media/capture.json rename to sdk/analog-rytm-mkii/modules/main-rms/media/capture.json diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/media/compressor-page.png b/sdk/analog-rytm-mkii/modules/main-rms/media/compressor-page.png similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/media/compressor-page.png rename to sdk/analog-rytm-mkii/modules/main-rms/media/compressor-page.png diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/media/thumbnail.svg b/sdk/analog-rytm-mkii/modules/main-rms/media/thumbnail.svg similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/media/thumbnail.svg rename to sdk/analog-rytm-mkii/modules/main-rms/media/thumbnail.svg diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/modwerk.module.json b/sdk/analog-rytm-mkii/modules/main-rms/modwerk.module.json similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/modwerk.module.json rename to sdk/analog-rytm-mkii/modules/main-rms/modwerk.module.json diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/src/main-rms.s b/sdk/analog-rytm-mkii/modules/main-rms/src/main-rms.s similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/src/main-rms.s rename to sdk/analog-rytm-mkii/modules/main-rms/src/main-rms.s diff --git a/sdk/analog-rytm-mkii/modules/_submissions/main-rms/upstream/README.md b/sdk/analog-rytm-mkii/modules/main-rms/upstream/README.md similarity index 100% rename from sdk/analog-rytm-mkii/modules/_submissions/main-rms/upstream/README.md rename to sdk/analog-rytm-mkii/modules/main-rms/upstream/README.md diff --git a/sdk/imports/elekloader-main-rms-2026-11-07.json b/sdk/imports/elekloader-main-rms-2026-11-07.json new file mode 100644 index 000000000..874c49539 --- /dev/null +++ b/sdk/imports/elekloader-main-rms-2026-11-07.json @@ -0,0 +1,34 @@ +{ + "schema": 1, + "kind": "elekloader-catalog", + "revision": "main-rms-2026-11-07", + "about": "Modwerk source-only main-rms package for Analog Rytm MKII OS 1.74, compiled from sdk/analog-rytm-mkii/modules/main-rms.", + "cores": [], + "mods": [ + { + "file": "main-rms-1.0.0-os1.74.elemod", + "sha256": "fe24c98b433da9c3d3cfd52965ee6696d22d5affcac14452bde53ac69c2b6f4a", + "id": "main-rms", + "version": "1.0.0", + "device": "analog-rytm-mk2", + "os": "1.74", + "license": "GPL-2.0-only", + "source": { + "repo": "repeat98/modwerk", + "commit": "100f1d85debac03656f81b2626254e68a6a6bb71", + "path": "sdk/imports/packages/main-rms/main-rms-1.0.0-os1.74.elemod" + }, + "title": "Main RMS", + "requires": [ + "core" + ], + "conflicts": [], + "summary": "On the compressor pages, the VOL label draws inverted while the main output is louder than -18 dBFS RMS, for gain staging.", + "description": "Main RMS lights the VOL knob's label on the compressor pages while the main output is louder than -18 dBFS RMS. The level is the louder of MAIN L and R, each a mean square averaged over about 300 ms; the label turns on above the threshold and off again 1 dB below it. MAIN is read each audio block from the pair USB and the sampler record, after the compressor. It is an elemod port of MrScruff's rytm-mods 0009-main-rms, with his code unchanged.", + "category": "Display", + "author": "Iced-Cream", + "needs_core": "0.3", + "on_unit": "On an Analog Rytm MKII on OS 1.74, as reported by the author: with the main output above the threshold the VOL label inverted, and it cleared once the output got quieter or after STOP, in builds R8T2 and C3A4 beside other rytm2_mods ports, SXH4 beside the other five Modwerk submissions and MRH4 alone. All four used core-ar2 0.3 or earlier. This package's own bytes have not been flashed from the site." + } + ] +} diff --git a/sdk/imports/main-rms-2026-11-07.json b/sdk/imports/main-rms-2026-11-07.json new file mode 100644 index 000000000..598984b99 --- /dev/null +++ b/sdk/imports/main-rms-2026-11-07.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 1, + "module": "analog-rytm-mkii/main-rms", + "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: on the compressor pages the VOL label draws inverted while the main output is louder than -18 dBFS RMS." + ], + "packages": [ + { + "os": "1.74", + "path": "sdk/imports/packages/main-rms/main-rms-1.0.0-os1.74.elemod", + "sha256": "fe24c98b433da9c3d3cfd52965ee6696d22d5affcac14452bde53ac69c2b6f4a" + } + ], + "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/main-rms/TESTING.md", + "requires": [] +} diff --git a/sdk/imports/packages/main-rms/main-rms-1.0.0-os1.74.elemod b/sdk/imports/packages/main-rms/main-rms-1.0.0-os1.74.elemod new file mode 100644 index 000000000..babd2073e --- /dev/null +++ b/sdk/imports/packages/main-rms/main-rms-1.0.0-os1.74.elemod @@ -0,0 +1,1317 @@ +{ + "elemod": 2, + "id": "main-rms", + "version": "1.0.0", + "title": "Main RMS", + "description": "On the compressor pages, the VOL label draws inverted while the main output is louder than -18 dBFS RMS, for gain staging.", + "category": "system", + "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": 264, + "parts": [ + [ + "hex", + "4e924fef00184fefffe848d7011f41f98000744076007800742020104840c1c0ea88d680202800044840c1c0ea88d88041e80030538266e241fa00bc20036144260041fa00b62004613ab083640220034aba00ac66120c800103aae06318720123c100000000600e0c8000ce42da640642b9000000004cd7011f4fef00184ef9401213d09090ee80223c000000924c010800e080e280d09020804e7541f940037a56600641f940037c2623d70000000043fa00062e894ed07063b0af001066304aba003c672a226f0008206f000c4878ffff4868fff84869000d4868fff24869fff32f2f00184eb9400707264fef0018207a00104ed0000000000000000000000000000000000000" + ] + ] + } + }, + "symbols": { + "TRIG_BIT_TRIG": [ + "abs", + 1 + ], + "TRIG_BIT_LOCK": [ + "abs", + 4 + ], + "TRIG_BIT_ACCENT": [ + "abs", + 8 + ], + "TRIG_BIT_SWING": [ + "abs", + 16 + ], + "MICROTIMING_MAX": [ + "abs", + 23 + ], + "MICROTIMING_UNIT_TICKS": [ + "abs", + 25 + ], + "TRIG_BIT_SLIDE": [ + "abs", + 32 + ], + "FX_RETURN_PRE_OFFSET": [ + "abs", + 48 + ], + "KEY_LEFT": [ + "abs", + 64 + ], + "OUTPUT_FRAME_STRIDE": [ + "abs", + 64 + ], + "KEY_RIGHT": [ + "abs", + 65 + ], + "KEY_FUNC": [ + "abs", + 128 + ], + "KEY_TRK": [ + "abs", + 134 + ], + "PARAM_ID_BOOL_OP": [ + "abs", + 467 + ], + "STEP_TICKS": [ + "abs", + 600 + ], + "fpga_status_bit5": [ + "abs", + 1073743722 + ], + "param_tables_build": [ + "abs", + 1073769688 + ], + "param_container_index": [ + "abs", + 1073770152 + ], + "param_is_machine": [ + "abs", + 1073770264 + ], + "sound_param_id_for_index": [ + "abs", + 1073770536 + ], + "machine_available": [ + "abs", + 1073770726 + ], + "machine_home_track": [ + "abs", + 1073770774 + ], + "param_machine": [ + "abs", + 1073770826 + ], + "track_physical_voice_get": [ + "abs", + 1073770862 + ], + "sound_load": [ + "abs", + 1073775094 + ], + "sound_save": [ + "abs", + 1073775674 + ], + "kit_load_machine_fallback": [ + "abs", + 1073776392 + ], + "pattern_track_load": [ + "abs", + 1073777454 + ], + "pattern_track_load_euclid_resume": [ + "abs", + 1073777866 + ], + "pattern_track_save": [ + "abs", + 1073778120 + ], + "microtiming_pack_site": [ + "abs", + 1073778320 + ], + "pattern_track_save_euclid_resume": [ + "abs", + 1073778536 + ], + "sound_init_defaults": [ + "abs", + 1073816246 + ], + "kit_param_changed": [ + "abs", + 1073952092 + ], + "ui_set_title": [ + "abs", + 1073962984 + ], + "trig_keys_held": [ + "abs", + 1073964998 + ], + "page_view_activate": [ + "abs", + 1073969190 + ], + "param_apply_delta": [ + "abs", + 1073969318 + ], + "param_apply_delta_resume": [ + "abs", + 1073969326 + ], + "param_apply_delta_body": [ + "abs", + 1073969334 + ], + "param_apply_delta_track": [ + "abs", + 1073969340 + ], + "param_apply_delta_dispatch": [ + "abs", + 1073969346 + ], + "param_apply_delta_dispatch_resume": [ + "abs", + 1073969352 + ], + "page_param_set": [ + "abs", + 1073969402 + ], + "knob_draw": [ + "abs", + 1073969750 + ], + "knob_draw_alt": [ + "abs", + 1073970214 + ], + "page_get_value": [ + "abs", + 1073972322 + ], + "page_get_value_body": [ + "abs", + 1073972330 + ], + "filter_env_graph_draw": [ + "abs", + 1073973680 + ], + "filter_graph_draw": [ + "abs", + 1073974710 + ], + "page_knob_turn": [ + "abs", + 1073979196 + ], + "param_edit_handler": [ + "abs", + 1073979196 + ], + "param_edit_resume": [ + "abs", + 1073979464 + ], + "page_cycle_after_invalidate": [ + "abs", + 1073982364 + ], + "sound_apply_step_locks": [ + "abs", + 1073985706 + ], + "pattern_grid_view_keys": [ + "abs", + 1073990804 + ], + "microtiming_menu_draw": [ + "abs", + 1074024180 + ], + "microtiming_clamp_lo": [ + "abs", + 1074024758 + ], + "microtiming_clamp_hi": [ + "abs", + 1074024774 + ], + "microtiming_change": [ + "abs", + 1074025010 + ], + "microtiming_menu_keys": [ + "abs", + 1074025256 + ], + "dest_list_view_ctor": [ + "abs", + 1074048288 + ], + "dest_list_build_resume": [ + "abs", + 1074048716 + ], + "bitmap_ctor": [ + "abs", + 1074199086 + ], + "fill_rect": [ + "abs", + 1074202406 + ], + "text_draw": [ + "abs", + 1074206028 + ], + "bitmap_draw": [ + "abs", + 1074206432 + ], + "text_font": [ + "abs", + 1074207720 + ], + "popup_ctor": [ + "abs", + 1074227028 + ], + "view_show_popup": [ + "abs", + 1074238562 + ], + "control_frame_send": [ + "abs", + 1074242980 + ], + "control_frame_dma_start": [ + "abs", + 1074243122 + ], + "is_key_held": [ + "abs", + 1074273320 + ], + "mem_new": [ + "abs", + 1074276928 + ], + "exp_convert": [ + "abs", + 1074366952 + ], + "memcpy": [ + "abs", + 1074367424 + ], + "trig_fire": [ + "abs", + 1074375208 + ], + "trig_fire_euclid_flag_load": [ + "abs", + 1074375478 + ], + "trig_fire_euclid_flag_resume": [ + "abs", + 1074375486 + ], + "trig_fire_grid_flags_load": [ + "abs", + 1074375646 + ], + "trig_fire_flags_join": [ + "abs", + 1074375672 + ], + "microtiming_scale_shift": [ + "abs", + 1074376020 + ], + "microtiming_unit_mul": [ + "abs", + 1074376042 + ], + "trig_fire_vel_resume": [ + "abs", + 1074376722 + ], + "trig_fire_cfg_resume": [ + "abs", + 1074376820 + ], + "getFadeStep": [ + "abs", + 1074390508 + ], + "lfo_block": [ + "abs", + 1074391036 + ], + "lfo_mod_block": [ + "abs", + 1074391036 + ], + "kit_param_set": [ + "abs", + 1074422926 + ], + "kit_apply": [ + "abs", + 1074423204 + ], + "kit_track_sound": [ + "abs", + 1074423754 + ], + "param_knob_draw": [ + "abs", + 1074431464 + ], + "param_knob_draw_body": [ + "abs", + 1074431472 + ], + "param_value_text": [ + "abs", + 1074431564 + ], + "param_value_text_resume": [ + "abs", + 1074431572 + ], + "param_value_text_body": [ + "abs", + 1074431580 + ], + "param_value_text_args": [ + "abs", + 1074431588 + ], + "param_value_text_invoke": [ + "abs", + 1074431668 + ], + "param_value_text_invoke_resume": [ + "abs", + 1074431676 + ], + "param_get_boolop_arm": [ + "abs", + 1074432184 + ], + "param_set_read": [ + "abs", + 1074433638 + ], + "param_set_read_body": [ + "abs", + 1074433646 + ], + "param_minmax": [ + "abs", + 1074433952 + ], + "param_short_name": [ + "abs", + 1074434048 + ], + "param_short_name_body": [ + "abs", + 1074434058 + ], + "param_set_value": [ + "abs", + 1074434156 + ], + "param_set_value_body": [ + "abs", + 1074434164 + ], + "param_set_apply_delta": [ + "abs", + 1074435656 + ], + "param_set_boolop_arm": [ + "abs", + 1074437398 + ], + "sound_set_write": [ + "abs", + 1074438154 + ], + "dest_list_build": [ + "abs", + 1074438784 + ], + "pattern_track": [ + "abs", + 1074442910 + ], + "lock_pool_set": [ + "abs", + 1074448092 + ], + "track_selection": [ + "abs", + 1074455698 + ], + "current_track_pattern": [ + "abs", + 1074458850 + ], + "kit_reload": [ + "abs", + 1074458942 + ], + "param_target_for_track": [ + "abs", + 1074459930 + ], + "track_index_of": [ + "abs", + 1074489662 + ], + "sound_randomize_values": [ + "abs", + 1074513266 + ], + "sound_randomize": [ + "abs", + 1074513502 + ], + "env_reset_get": [ + "abs", + 1074515744 + ], + "env_reset_set": [ + "abs", + 1074515792 + ], + "machine_list_build": [ + "abs", + 1074523086 + ], + "trig_flag_get": [ + "abs", + 1074526840 + ], + "vel_get_stock": [ + "abs", + 1074527628 + ], + "pattern_step_has_trig": [ + "abs", + 1074528126 + ], + "Pattern_getMicrotiming": [ + "abs", + 1074529096 + ], + "pattern_length": [ + "abs", + 1074529572 + ], + "track_lock_set": [ + "abs", + 1074529676 + ], + "Pattern_setMicrotiming": [ + "abs", + 1074530532 + ], + "euclid_bool_op_get": [ + "abs", + 1074532892 + ], + "euclid_bool_op_set": [ + "abs", + 1074532940 + ], + "euclid_step_map_get": [ + "abs", + 1074533038 + ], + "euclid_generate": [ + "abs", + 1074534916 + ], + "trig_flags_set": [ + "abs", + 1074537602 + ], + "trig_place": [ + "abs", + 1074538016 + ], + "trig_place_lock": [ + "abs", + 1074538136 + ], + "euclid_bake": [ + "abs", + 1074543738 + ], + "euclid_bake_body": [ + "abs", + 1074543746 + ], + "top_bar_draw": [ + "abs", + 1074561766 + ], + "view_lfo_page_count": [ + "abs", + 1074573462 + ], + "euclid_toggle_handler": [ + "abs", + 1074601084 + ], + "sound_page_draw": [ + "abs", + 1074605702 + ], + "kit_reload_key": [ + "abs", + 1074648498 + ], + "env_reset_menu_change": [ + "abs", + 1074722982 + ], + "track_menu_ctor": [ + "abs", + 1074764708 + ], + "track_menu_ctor_tail": [ + "abs", + 1074765570 + ], + "fx_prepost_format": [ + "abs", + 1074773642 + ], + "filter_type_knob_draw": [ + "abs", + 1074786578 + ], + "filter_type_text": [ + "abs", + 1074786830 + ], + "euclid_bool_op_format": [ + "abs", + 1074787398 + ], + "boolop_icon_draw": [ + "abs", + 1074787550 + ], + "param_info": [ + "abs", + 1074787778 + ], + "param_info_resume": [ + "abs", + 1074787788 + ], + "page_info": [ + "abs", + 1074787808 + ], + "page_info_resume": [ + "abs", + 1074787814 + ], + "synth_page_knob_table": [ + "abs", + 1074787846 + ], + "lfo_dst_knob_draw": [ + "abs", + 1074788968 + ], + "audio_dsp_region": [ + "abs", + 1074790508 + ], + "static_ctors_run": [ + "abs", + 1074792174 + ], + "control_frame_cal_init": [ + "abs", + 1074825222 + ], + "balance_linear": [ + "abs", + 1074829436 + ], + "balance_clamped": [ + "abs", + 1074829492 + ], + "amp_env_commands": [ + "abs", + 1074829632 + ], + "amp_env_attack_cmd": [ + "abs", + 1074830192 + ], + "amp_env_attack_resume": [ + "abs", + 1074830198 + ], + "filter_cal_build": [ + "abs", + 1074843636 + ], + "filter_env_commands": [ + "abs", + 1074843900 + ], + "audio_dsp_block_example": [ + "abs", + 1074845772 + ], + "master_controls_write": [ + "abs", + 1074848268 + ], + "fx_generate": [ + "abs", + 1074849468 + ], + "fx_return_gain_route_site": [ + "abs", + 1074850060 + ], + "voice_output_mix": [ + "abs", + 1074850460 + ], + "fx_return_mix_pre": [ + "abs", + 1074850706 + ], + "fx_return_mix_post": [ + "abs", + 1074850922 + ], + "machine_func_gen": [ + "abs", + 1074873032 + ], + "machine_hh_test": [ + "abs", + 1074873548 + ], + "osc_trim_band": [ + "abs", + 1074892796 + ], + "osc_cal_set": [ + "abs", + 1074893020 + ], + "osc_trim_write": [ + "abs", + 1074894836 + ], + "chip_step_offset": [ + "abs", + 1074896832 + ], + "machine_bt_improved": [ + "abs", + 1074901732 + ], + "noise_generate": [ + "abs", + 1074904250 + ], + "clap_noise": [ + "abs", + 1074904540 + ], + "machine_sd_test": [ + "abs", + 1074909940 + ], + "machine_rs_test": [ + "abs", + 1074910328 + ], + "machine_cy_test": [ + "abs", + 1074910752 + ], + "machine_cb_test": [ + "abs", + 1074911516 + ], + "machine_bd_test": [ + "abs", + 1074912094 + ], + "machine_mt_test": [ + "abs", + 1074912892 + ], + "machine_bt_test": [ + "abs", + 1074913132 + ], + "voice_trig_reset": [ + "abs", + 1074914498 + ], + "segment_rate": [ + "abs", + 1074915354 + ], + "segment_length": [ + "abs", + 1074915438 + ], + "pitch_tune_unipolar": [ + "abs", + 1074915456 + ], + "pitch_tune_bipolar": [ + "abs", + 1074915504 + ], + "pitch_to_cv": [ + "abs", + 1074915546 + ], + "machine_lt_test": [ + "abs", + 1074915588 + ], + "click_level": [ + "abs", + 1074915908 + ], + "hat_bank_write": [ + "abs", + 1074915926 + ], + "control_frame_defaults": [ + "abs", + 1074916194 + ], + "tempo_get": [ + "abs", + 1074918236 + ], + "kit_push": [ + "abs", + 1074919690 + ], + "lfo_block_call_site": [ + "abs", + 1074925594 + ], + "lfo_call_resume": [ + "abs", + 1074925600 + ], + "machine_dispatch": [ + "abs", + 1074925914 + ], + "audio_rx_filled": [ + "abs", + 1074926538 + ], + "audio_rx_filled_resume": [ + "abs", + 1074926544 + ], + "adc_average": [ + "abs", + 1075027508 + ], + "adc_pedal_update": [ + "abs", + 1075049364 + ], + "param_text_format": [ + "abs", + 1075196960 + ], + "shared_ptr_release": [ + "abs", + 1075252184 + ], + "project_singleton": [ + "abs", + 1075313162 + ], + "view_list_open": [ + "abs", + 1075321608 + ], + "kit_mark": [ + "abs", + 1075407750 + ], + "kit_working_data": [ + "abs", + 1075407792 + ], + "bitmap_set_make": [ + "abs", + 1075543924 + ], + "std_string_dtor": [ + "abs", + 1075557696 + ], + "std_string_from_cstr": [ + "abs", + 1075564528 + ], + "voice_channel_map": [ + "abs", + 1075572032 + ], + "machine_names": [ + "abs", + 1075573332 + ], + "track_default_machine": [ + "abs", + 1075573756 + ], + "machine_voice_mask": [ + "abs", + 1075573804 + ], + "track_physical_voice": [ + "abs", + 1075573912 + ], + "param_modflags": [ + "abs", + 1075575752 + ], + "param_record_base": [ + "abs", + 1075575752 + ], + "param_table_rom": [ + "abs", + 1075575792 + ], + "machine_to_storage_fx": [ + "abs", + 1075600204 + ], + "machine_to_storage_voice": [ + "abs", + 1075600508 + ], + "sound_slot_map": [ + "abs", + 1075600508 + ], + "sound_config_changed_info_vt": [ + "abs", + 1075624076 + ], + "pattern_grid_view_vtable": [ + "abs", + 1075628332 + ], + "microtiming_label_table": [ + "abs", + 1075632924 + ], + "parameter_set_vtables": [ + "abs", + 1075695016 + ], + "SOUND_PARAM_SET_VT": [ + "abs", + 1075695140 + ], + "TRIG_PARAM_SET_VT": [ + "abs", + 1075695388 + ], + "comp_view_knob_draw": [ + "abs", + 1075713260 + ], + "params_seq_note_view_vtable": [ + "abs", + 1075720520 + ], + "track_selection_view_vtable": [ + "abs", + 1075722656 + ], + "env_reset_labels": [ + "abs", + 1075745148 + ], + "filter_type_labels": [ + "abs", + 1075758740 + ], + "euclid_bool_op_labels": [ + "abs", + 1075758768 + ], + "amp_env_rate_tables": [ + "abs", + 1075766812 + ], + "voice_switch_bits_rs": [ + "abs", + 1075798500 + ], + "voice_switch_bits_sd": [ + "abs", + 1075798528 + ], + "voice_switch_bits_bd": [ + "abs", + 1075798556 + ], + "str_fmt_s": [ + "abs", + 1076106196 + ], + "str_width_xxx": [ + "abs", + 1076106200 + ], + "key_scan_ids": [ + "abs", + 1076386256 + ], + "tempo_word": [ + "abs", + 1076396028 + ], + "param_page_table": [ + "abs", + 1076397980 + ], + "machine_engine_table": [ + "abs", + 1076430556 + ], + "voice_owner_track": [ + "abs", + 1076433208 + ], + "filter_type_icon_pixels": [ + "abs", + 1076569344 + ], + "text_ctx": [ + "abs", + 1098791068 + ], + "lfo_state_base": [ + "abs", + 1100227924 + ], + "PARAM_INFO_BASE": [ + "abs", + 1100630152 + ], + "filter_cal_coeffs": [ + "abs", + 1100783380 + ], + "fx_return_gain_pre_current": [ + "abs", + 1100783648 + ], + "filter_type_icon_set": [ + "abs", + 1100946232 + ], + "fx_mix_stage_buffer": [ + "abs", + 1118596644 + ], + "fx_mix_ring": [ + "abs", + 1118596912 + ], + "fx_return_gain_pre": [ + "abs", + 1123764916 + ], + "fx_return_gain_post": [ + "abs", + 1123764924 + ], + "machine_pitch_cache": [ + "abs", + 1123773048 + ], + "output_ring_base": [ + "abs", + 2147483648 + ], + "voice_control_block": [ + "abs", + 2147509184 + ], + "voice_digital_buf": [ + "abs", + 2147511288 + ], + "voice_noise_gain": [ + "abs", + 2147512320 + ], + "voice_noise_buf": [ + "abs", + 2147512384 + ], + "fx_reverb_out": [ + "abs", + 2147515204 + ], + "fx_delay_out": [ + "abs", + 2147515460 + ], + "engine_sound_settings": [ + "abs", + 2147543552 + ], + "lfo_track_array": [ + "abs", + 2147547048 + ], + "fx_return_level_delay": [ + "abs", + 2147548088 + ], + "fx_return_route_flag_delay": [ + "abs", + 2147548092 + ], + "fx_mix_ring_slot": [ + "abs", + 2147548916 + ], + "voice_machine_state": [ + "abs", + 2147548920 + ], + "P_RMS_DB": [ + "abs", + 4294967278 + ], + "PARAM_ID_VOL": [ + "abs", + 99 + ], + "RXBUF": [ + "abs", + 2147513408 + ], + "RXSTRIDE": [ + "abs", + 48 + ], + "FRAMES": [ + "abs", + 32 + ], + "ALPHA": [ + "abs", + 146 + ], + "RMS_ON": [ + "abs", + 17017568 + ], + "RMS_OFF": [ + "abs", + 13517530 + ], + "rms_scan": [ + ".run", + 0 + ], + "ms_l": [ + ".run", + 246 + ], + "smooth": [ + ".run", + 132 + ], + "ms_r": [ + ".run", + 250 + ], + "rms_over": [ + ".run", + 254 + ], + "vol_knob_draw": [ + ".run", + 156 + ], + "vol_knob_draw_alt": [ + ".run", + 164 + ], + "vol_ret": [ + ".run", + 258 + ], + "vol_after": [ + ".run", + 184 + ], + "main_rms_vol_knob_draw": [ + ".run", + 156 + ], + "main_rms_rms_scan": [ + ".run", + 0 + ], + "main_rms_vol_knob_draw_alt": [ + ".run", + 164 + ] + }, + "exports": [ + "main_rms_rms_scan", + "main_rms_vol_knob_draw", + "main_rms_vol_knob_draw_alt" + ], + "imports": [], + "weak": [], + "relocs": [ + [ + ".run", + 98, + "abs32", + "sec:.run", + 254 + ], + [ + ".run", + 114, + "abs32", + "sec:.run", + 254 + ], + [ + ".run", + 172, + "abs32", + "sec:.run", + 258 + ] + ], + "sites": [ + { + "addr": "0x401213ca", + "len": 6, + "stock_sha256": "678c959ff67f83d38d2b48b568085abddb991a7128c2c6626e6562f16c84d45a", + "new": "4ef900000000", + "kind": "code", + "relocs": [ + [ + 2, + "abs32", + "sym:main_rms_rms_scan", + 0 + ] + ] + }, + { + "addr": "0x401e14ec", + "len": 4, + "stock_sha256": "2fea2f4a481057355dec1a47da9c9b2bcfa67c0d95059f9088448569db17afb0", + "new": "00000000", + "kind": "data", + "relocs": [ + [ + 0, + "abs32", + "sym:main_rms_vol_knob_draw", + 0 + ] + ] + }, + { + "addr": "0x401e14f0", + "len": 4, + "stock_sha256": "652aedd679a23ad02f24f91062816b84720731421e97c74200014eaabda3f291", + "new": "00000000", + "kind": "data", + "relocs": [ + [ + 0, + "abs32", + "sym:main_rms_vol_knob_draw_alt", + 0 + ] + ] + } + ], + "collections": {}, + "contribute": [], + "copied": [], + "resources": { + "regions": [], + "names": [ + "ui:compressor VOL label drawing", + "audio:MAIN level read each block" + ], + "core": "0.3" + }, + "requires": [ + "core" + ], + "conflicts": [], + "signature": null +} diff --git a/src/community/module-changelogs/analog-rytm-mkii-main-rms.json b/src/community/module-changelogs/analog-rytm-mkii-main-rms.json new file mode 100644 index 000000000..5b018798b --- /dev/null +++ b/src/community/module-changelogs/analog-rytm-mkii-main-rms.json @@ -0,0 +1,11 @@ +[ + { + "version": "1.0.0", + "date": "2026-11-07", + "changes": [ + "First release, for Analog Rytm MKII OS 1.74: MrScruff's Main RMS, ported to elemod by Iced-Cream, with his code unchanged.", + "On the compressor pages, the VOL label draws inverted while the main output is louder than -18 dBFS RMS, for gain staging.", + "The label clears again once the output is 1 dB below the threshold. The threshold is fixed." + ] + } +] diff --git a/src/devices/library-parity.test.ts b/src/devices/library-parity.test.ts index c95ed7967..c285b4ccc 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, Ctrl All, 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', () => { + it('lists Audio In FX, CHORUS, Pad Pressure Fix, Control In Actions, Ctrl All, Env Reset Amp, Filter Hz, FLANGER, Live Rec Retrig Fix, Loop Sync, Main RMS, 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']], ['ctrl-all', '1.2.0', ['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']]]) + 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']], ['ctrl-all', '1.2.0', ['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']], ['main-rms', '1.0.0', ['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 c3c34ec97..5be61fc0c 100644 --- a/src/engine/elekloader/digi-build.test.ts +++ b/src/engine/elekloader/digi-build.test.ts @@ -105,6 +105,17 @@ describe('the vendored elekloader catalog', () => { missing: [], }) }) + it('plans Main RMS beside Filter Hz and Temp Save from its pinned source-only package on the plain base', () => { + expect(planBuild('analog-rytm-mkii', '1.74', ['filter-hz', 'main-rms', 'temp-save'])).toMatchObject({ + core: { file: PLAIN, version: '0.7' }, + mods: [ + { id: 'filter-hz', file: 'filter-hz-1.2.0-os1.74.elemod', device: 'analog-rytm-mk2', os: '1.74', version: '1.2.0' }, + { id: 'main-rms', file: 'main-rms-1.0.0-os1.74.elemod', device: 'analog-rytm-mk2', os: '1.74', version: '1.0.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 Pad Pressure Fix beside the other Rytm library modules from its pinned source-only package on the plain base', () => { expect(planBuild('analog-rytm-mkii', '1.74', ['chromatic-aftertouch-fix', 'silent-pad-trig'])).toMatchObject({ core: { file: PLAIN, version: '0.7' }, diff --git a/vendor/elekloader/catalog/main-rms-1.0.0-os1.74.elemod b/vendor/elekloader/catalog/main-rms-1.0.0-os1.74.elemod new file mode 100644 index 000000000..babd2073e --- /dev/null +++ b/vendor/elekloader/catalog/main-rms-1.0.0-os1.74.elemod @@ -0,0 +1,1317 @@ +{ + "elemod": 2, + "id": "main-rms", + "version": "1.0.0", + "title": "Main RMS", + "description": "On the compressor pages, the VOL label draws inverted while the main output is louder than -18 dBFS RMS, for gain staging.", + "category": "system", + "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": 264, + "parts": [ + [ + "hex", + "4e924fef00184fefffe848d7011f41f98000744076007800742020104840c1c0ea88d680202800044840c1c0ea88d88041e80030538266e241fa00bc20036144260041fa00b62004613ab083640220034aba00ac66120c800103aae06318720123c100000000600e0c8000ce42da640642b9000000004cd7011f4fef00184ef9401213d09090ee80223c000000924c010800e080e280d09020804e7541f940037a56600641f940037c2623d70000000043fa00062e894ed07063b0af001066304aba003c672a226f0008206f000c4878ffff4868fff84869000d4868fff24869fff32f2f00184eb9400707264fef0018207a00104ed0000000000000000000000000000000000000" + ] + ] + } + }, + "symbols": { + "TRIG_BIT_TRIG": [ + "abs", + 1 + ], + "TRIG_BIT_LOCK": [ + "abs", + 4 + ], + "TRIG_BIT_ACCENT": [ + "abs", + 8 + ], + "TRIG_BIT_SWING": [ + "abs", + 16 + ], + "MICROTIMING_MAX": [ + "abs", + 23 + ], + "MICROTIMING_UNIT_TICKS": [ + "abs", + 25 + ], + "TRIG_BIT_SLIDE": [ + "abs", + 32 + ], + "FX_RETURN_PRE_OFFSET": [ + "abs", + 48 + ], + "KEY_LEFT": [ + "abs", + 64 + ], + "OUTPUT_FRAME_STRIDE": [ + "abs", + 64 + ], + "KEY_RIGHT": [ + "abs", + 65 + ], + "KEY_FUNC": [ + "abs", + 128 + ], + "KEY_TRK": [ + "abs", + 134 + ], + "PARAM_ID_BOOL_OP": [ + "abs", + 467 + ], + "STEP_TICKS": [ + "abs", + 600 + ], + "fpga_status_bit5": [ + "abs", + 1073743722 + ], + "param_tables_build": [ + "abs", + 1073769688 + ], + "param_container_index": [ + "abs", + 1073770152 + ], + "param_is_machine": [ + "abs", + 1073770264 + ], + "sound_param_id_for_index": [ + "abs", + 1073770536 + ], + "machine_available": [ + "abs", + 1073770726 + ], + "machine_home_track": [ + "abs", + 1073770774 + ], + "param_machine": [ + "abs", + 1073770826 + ], + "track_physical_voice_get": [ + "abs", + 1073770862 + ], + "sound_load": [ + "abs", + 1073775094 + ], + "sound_save": [ + "abs", + 1073775674 + ], + "kit_load_machine_fallback": [ + "abs", + 1073776392 + ], + "pattern_track_load": [ + "abs", + 1073777454 + ], + "pattern_track_load_euclid_resume": [ + "abs", + 1073777866 + ], + "pattern_track_save": [ + "abs", + 1073778120 + ], + "microtiming_pack_site": [ + "abs", + 1073778320 + ], + "pattern_track_save_euclid_resume": [ + "abs", + 1073778536 + ], + "sound_init_defaults": [ + "abs", + 1073816246 + ], + "kit_param_changed": [ + "abs", + 1073952092 + ], + "ui_set_title": [ + "abs", + 1073962984 + ], + "trig_keys_held": [ + "abs", + 1073964998 + ], + "page_view_activate": [ + "abs", + 1073969190 + ], + "param_apply_delta": [ + "abs", + 1073969318 + ], + "param_apply_delta_resume": [ + "abs", + 1073969326 + ], + "param_apply_delta_body": [ + "abs", + 1073969334 + ], + "param_apply_delta_track": [ + "abs", + 1073969340 + ], + "param_apply_delta_dispatch": [ + "abs", + 1073969346 + ], + "param_apply_delta_dispatch_resume": [ + "abs", + 1073969352 + ], + "page_param_set": [ + "abs", + 1073969402 + ], + "knob_draw": [ + "abs", + 1073969750 + ], + "knob_draw_alt": [ + "abs", + 1073970214 + ], + "page_get_value": [ + "abs", + 1073972322 + ], + "page_get_value_body": [ + "abs", + 1073972330 + ], + "filter_env_graph_draw": [ + "abs", + 1073973680 + ], + "filter_graph_draw": [ + "abs", + 1073974710 + ], + "page_knob_turn": [ + "abs", + 1073979196 + ], + "param_edit_handler": [ + "abs", + 1073979196 + ], + "param_edit_resume": [ + "abs", + 1073979464 + ], + "page_cycle_after_invalidate": [ + "abs", + 1073982364 + ], + "sound_apply_step_locks": [ + "abs", + 1073985706 + ], + "pattern_grid_view_keys": [ + "abs", + 1073990804 + ], + "microtiming_menu_draw": [ + "abs", + 1074024180 + ], + "microtiming_clamp_lo": [ + "abs", + 1074024758 + ], + "microtiming_clamp_hi": [ + "abs", + 1074024774 + ], + "microtiming_change": [ + "abs", + 1074025010 + ], + "microtiming_menu_keys": [ + "abs", + 1074025256 + ], + "dest_list_view_ctor": [ + "abs", + 1074048288 + ], + "dest_list_build_resume": [ + "abs", + 1074048716 + ], + "bitmap_ctor": [ + "abs", + 1074199086 + ], + "fill_rect": [ + "abs", + 1074202406 + ], + "text_draw": [ + "abs", + 1074206028 + ], + "bitmap_draw": [ + "abs", + 1074206432 + ], + "text_font": [ + "abs", + 1074207720 + ], + "popup_ctor": [ + "abs", + 1074227028 + ], + "view_show_popup": [ + "abs", + 1074238562 + ], + "control_frame_send": [ + "abs", + 1074242980 + ], + "control_frame_dma_start": [ + "abs", + 1074243122 + ], + "is_key_held": [ + "abs", + 1074273320 + ], + "mem_new": [ + "abs", + 1074276928 + ], + "exp_convert": [ + "abs", + 1074366952 + ], + "memcpy": [ + "abs", + 1074367424 + ], + "trig_fire": [ + "abs", + 1074375208 + ], + "trig_fire_euclid_flag_load": [ + "abs", + 1074375478 + ], + "trig_fire_euclid_flag_resume": [ + "abs", + 1074375486 + ], + "trig_fire_grid_flags_load": [ + "abs", + 1074375646 + ], + "trig_fire_flags_join": [ + "abs", + 1074375672 + ], + "microtiming_scale_shift": [ + "abs", + 1074376020 + ], + "microtiming_unit_mul": [ + "abs", + 1074376042 + ], + "trig_fire_vel_resume": [ + "abs", + 1074376722 + ], + "trig_fire_cfg_resume": [ + "abs", + 1074376820 + ], + "getFadeStep": [ + "abs", + 1074390508 + ], + "lfo_block": [ + "abs", + 1074391036 + ], + "lfo_mod_block": [ + "abs", + 1074391036 + ], + "kit_param_set": [ + "abs", + 1074422926 + ], + "kit_apply": [ + "abs", + 1074423204 + ], + "kit_track_sound": [ + "abs", + 1074423754 + ], + "param_knob_draw": [ + "abs", + 1074431464 + ], + "param_knob_draw_body": [ + "abs", + 1074431472 + ], + "param_value_text": [ + "abs", + 1074431564 + ], + "param_value_text_resume": [ + "abs", + 1074431572 + ], + "param_value_text_body": [ + "abs", + 1074431580 + ], + "param_value_text_args": [ + "abs", + 1074431588 + ], + "param_value_text_invoke": [ + "abs", + 1074431668 + ], + "param_value_text_invoke_resume": [ + "abs", + 1074431676 + ], + "param_get_boolop_arm": [ + "abs", + 1074432184 + ], + "param_set_read": [ + "abs", + 1074433638 + ], + "param_set_read_body": [ + "abs", + 1074433646 + ], + "param_minmax": [ + "abs", + 1074433952 + ], + "param_short_name": [ + "abs", + 1074434048 + ], + "param_short_name_body": [ + "abs", + 1074434058 + ], + "param_set_value": [ + "abs", + 1074434156 + ], + "param_set_value_body": [ + "abs", + 1074434164 + ], + "param_set_apply_delta": [ + "abs", + 1074435656 + ], + "param_set_boolop_arm": [ + "abs", + 1074437398 + ], + "sound_set_write": [ + "abs", + 1074438154 + ], + "dest_list_build": [ + "abs", + 1074438784 + ], + "pattern_track": [ + "abs", + 1074442910 + ], + "lock_pool_set": [ + "abs", + 1074448092 + ], + "track_selection": [ + "abs", + 1074455698 + ], + "current_track_pattern": [ + "abs", + 1074458850 + ], + "kit_reload": [ + "abs", + 1074458942 + ], + "param_target_for_track": [ + "abs", + 1074459930 + ], + "track_index_of": [ + "abs", + 1074489662 + ], + "sound_randomize_values": [ + "abs", + 1074513266 + ], + "sound_randomize": [ + "abs", + 1074513502 + ], + "env_reset_get": [ + "abs", + 1074515744 + ], + "env_reset_set": [ + "abs", + 1074515792 + ], + "machine_list_build": [ + "abs", + 1074523086 + ], + "trig_flag_get": [ + "abs", + 1074526840 + ], + "vel_get_stock": [ + "abs", + 1074527628 + ], + "pattern_step_has_trig": [ + "abs", + 1074528126 + ], + "Pattern_getMicrotiming": [ + "abs", + 1074529096 + ], + "pattern_length": [ + "abs", + 1074529572 + ], + "track_lock_set": [ + "abs", + 1074529676 + ], + "Pattern_setMicrotiming": [ + "abs", + 1074530532 + ], + "euclid_bool_op_get": [ + "abs", + 1074532892 + ], + "euclid_bool_op_set": [ + "abs", + 1074532940 + ], + "euclid_step_map_get": [ + "abs", + 1074533038 + ], + "euclid_generate": [ + "abs", + 1074534916 + ], + "trig_flags_set": [ + "abs", + 1074537602 + ], + "trig_place": [ + "abs", + 1074538016 + ], + "trig_place_lock": [ + "abs", + 1074538136 + ], + "euclid_bake": [ + "abs", + 1074543738 + ], + "euclid_bake_body": [ + "abs", + 1074543746 + ], + "top_bar_draw": [ + "abs", + 1074561766 + ], + "view_lfo_page_count": [ + "abs", + 1074573462 + ], + "euclid_toggle_handler": [ + "abs", + 1074601084 + ], + "sound_page_draw": [ + "abs", + 1074605702 + ], + "kit_reload_key": [ + "abs", + 1074648498 + ], + "env_reset_menu_change": [ + "abs", + 1074722982 + ], + "track_menu_ctor": [ + "abs", + 1074764708 + ], + "track_menu_ctor_tail": [ + "abs", + 1074765570 + ], + "fx_prepost_format": [ + "abs", + 1074773642 + ], + "filter_type_knob_draw": [ + "abs", + 1074786578 + ], + "filter_type_text": [ + "abs", + 1074786830 + ], + "euclid_bool_op_format": [ + "abs", + 1074787398 + ], + "boolop_icon_draw": [ + "abs", + 1074787550 + ], + "param_info": [ + "abs", + 1074787778 + ], + "param_info_resume": [ + "abs", + 1074787788 + ], + "page_info": [ + "abs", + 1074787808 + ], + "page_info_resume": [ + "abs", + 1074787814 + ], + "synth_page_knob_table": [ + "abs", + 1074787846 + ], + "lfo_dst_knob_draw": [ + "abs", + 1074788968 + ], + "audio_dsp_region": [ + "abs", + 1074790508 + ], + "static_ctors_run": [ + "abs", + 1074792174 + ], + "control_frame_cal_init": [ + "abs", + 1074825222 + ], + "balance_linear": [ + "abs", + 1074829436 + ], + "balance_clamped": [ + "abs", + 1074829492 + ], + "amp_env_commands": [ + "abs", + 1074829632 + ], + "amp_env_attack_cmd": [ + "abs", + 1074830192 + ], + "amp_env_attack_resume": [ + "abs", + 1074830198 + ], + "filter_cal_build": [ + "abs", + 1074843636 + ], + "filter_env_commands": [ + "abs", + 1074843900 + ], + "audio_dsp_block_example": [ + "abs", + 1074845772 + ], + "master_controls_write": [ + "abs", + 1074848268 + ], + "fx_generate": [ + "abs", + 1074849468 + ], + "fx_return_gain_route_site": [ + "abs", + 1074850060 + ], + "voice_output_mix": [ + "abs", + 1074850460 + ], + "fx_return_mix_pre": [ + "abs", + 1074850706 + ], + "fx_return_mix_post": [ + "abs", + 1074850922 + ], + "machine_func_gen": [ + "abs", + 1074873032 + ], + "machine_hh_test": [ + "abs", + 1074873548 + ], + "osc_trim_band": [ + "abs", + 1074892796 + ], + "osc_cal_set": [ + "abs", + 1074893020 + ], + "osc_trim_write": [ + "abs", + 1074894836 + ], + "chip_step_offset": [ + "abs", + 1074896832 + ], + "machine_bt_improved": [ + "abs", + 1074901732 + ], + "noise_generate": [ + "abs", + 1074904250 + ], + "clap_noise": [ + "abs", + 1074904540 + ], + "machine_sd_test": [ + "abs", + 1074909940 + ], + "machine_rs_test": [ + "abs", + 1074910328 + ], + "machine_cy_test": [ + "abs", + 1074910752 + ], + "machine_cb_test": [ + "abs", + 1074911516 + ], + "machine_bd_test": [ + "abs", + 1074912094 + ], + "machine_mt_test": [ + "abs", + 1074912892 + ], + "machine_bt_test": [ + "abs", + 1074913132 + ], + "voice_trig_reset": [ + "abs", + 1074914498 + ], + "segment_rate": [ + "abs", + 1074915354 + ], + "segment_length": [ + "abs", + 1074915438 + ], + "pitch_tune_unipolar": [ + "abs", + 1074915456 + ], + "pitch_tune_bipolar": [ + "abs", + 1074915504 + ], + "pitch_to_cv": [ + "abs", + 1074915546 + ], + "machine_lt_test": [ + "abs", + 1074915588 + ], + "click_level": [ + "abs", + 1074915908 + ], + "hat_bank_write": [ + "abs", + 1074915926 + ], + "control_frame_defaults": [ + "abs", + 1074916194 + ], + "tempo_get": [ + "abs", + 1074918236 + ], + "kit_push": [ + "abs", + 1074919690 + ], + "lfo_block_call_site": [ + "abs", + 1074925594 + ], + "lfo_call_resume": [ + "abs", + 1074925600 + ], + "machine_dispatch": [ + "abs", + 1074925914 + ], + "audio_rx_filled": [ + "abs", + 1074926538 + ], + "audio_rx_filled_resume": [ + "abs", + 1074926544 + ], + "adc_average": [ + "abs", + 1075027508 + ], + "adc_pedal_update": [ + "abs", + 1075049364 + ], + "param_text_format": [ + "abs", + 1075196960 + ], + "shared_ptr_release": [ + "abs", + 1075252184 + ], + "project_singleton": [ + "abs", + 1075313162 + ], + "view_list_open": [ + "abs", + 1075321608 + ], + "kit_mark": [ + "abs", + 1075407750 + ], + "kit_working_data": [ + "abs", + 1075407792 + ], + "bitmap_set_make": [ + "abs", + 1075543924 + ], + "std_string_dtor": [ + "abs", + 1075557696 + ], + "std_string_from_cstr": [ + "abs", + 1075564528 + ], + "voice_channel_map": [ + "abs", + 1075572032 + ], + "machine_names": [ + "abs", + 1075573332 + ], + "track_default_machine": [ + "abs", + 1075573756 + ], + "machine_voice_mask": [ + "abs", + 1075573804 + ], + "track_physical_voice": [ + "abs", + 1075573912 + ], + "param_modflags": [ + "abs", + 1075575752 + ], + "param_record_base": [ + "abs", + 1075575752 + ], + "param_table_rom": [ + "abs", + 1075575792 + ], + "machine_to_storage_fx": [ + "abs", + 1075600204 + ], + "machine_to_storage_voice": [ + "abs", + 1075600508 + ], + "sound_slot_map": [ + "abs", + 1075600508 + ], + "sound_config_changed_info_vt": [ + "abs", + 1075624076 + ], + "pattern_grid_view_vtable": [ + "abs", + 1075628332 + ], + "microtiming_label_table": [ + "abs", + 1075632924 + ], + "parameter_set_vtables": [ + "abs", + 1075695016 + ], + "SOUND_PARAM_SET_VT": [ + "abs", + 1075695140 + ], + "TRIG_PARAM_SET_VT": [ + "abs", + 1075695388 + ], + "comp_view_knob_draw": [ + "abs", + 1075713260 + ], + "params_seq_note_view_vtable": [ + "abs", + 1075720520 + ], + "track_selection_view_vtable": [ + "abs", + 1075722656 + ], + "env_reset_labels": [ + "abs", + 1075745148 + ], + "filter_type_labels": [ + "abs", + 1075758740 + ], + "euclid_bool_op_labels": [ + "abs", + 1075758768 + ], + "amp_env_rate_tables": [ + "abs", + 1075766812 + ], + "voice_switch_bits_rs": [ + "abs", + 1075798500 + ], + "voice_switch_bits_sd": [ + "abs", + 1075798528 + ], + "voice_switch_bits_bd": [ + "abs", + 1075798556 + ], + "str_fmt_s": [ + "abs", + 1076106196 + ], + "str_width_xxx": [ + "abs", + 1076106200 + ], + "key_scan_ids": [ + "abs", + 1076386256 + ], + "tempo_word": [ + "abs", + 1076396028 + ], + "param_page_table": [ + "abs", + 1076397980 + ], + "machine_engine_table": [ + "abs", + 1076430556 + ], + "voice_owner_track": [ + "abs", + 1076433208 + ], + "filter_type_icon_pixels": [ + "abs", + 1076569344 + ], + "text_ctx": [ + "abs", + 1098791068 + ], + "lfo_state_base": [ + "abs", + 1100227924 + ], + "PARAM_INFO_BASE": [ + "abs", + 1100630152 + ], + "filter_cal_coeffs": [ + "abs", + 1100783380 + ], + "fx_return_gain_pre_current": [ + "abs", + 1100783648 + ], + "filter_type_icon_set": [ + "abs", + 1100946232 + ], + "fx_mix_stage_buffer": [ + "abs", + 1118596644 + ], + "fx_mix_ring": [ + "abs", + 1118596912 + ], + "fx_return_gain_pre": [ + "abs", + 1123764916 + ], + "fx_return_gain_post": [ + "abs", + 1123764924 + ], + "machine_pitch_cache": [ + "abs", + 1123773048 + ], + "output_ring_base": [ + "abs", + 2147483648 + ], + "voice_control_block": [ + "abs", + 2147509184 + ], + "voice_digital_buf": [ + "abs", + 2147511288 + ], + "voice_noise_gain": [ + "abs", + 2147512320 + ], + "voice_noise_buf": [ + "abs", + 2147512384 + ], + "fx_reverb_out": [ + "abs", + 2147515204 + ], + "fx_delay_out": [ + "abs", + 2147515460 + ], + "engine_sound_settings": [ + "abs", + 2147543552 + ], + "lfo_track_array": [ + "abs", + 2147547048 + ], + "fx_return_level_delay": [ + "abs", + 2147548088 + ], + "fx_return_route_flag_delay": [ + "abs", + 2147548092 + ], + "fx_mix_ring_slot": [ + "abs", + 2147548916 + ], + "voice_machine_state": [ + "abs", + 2147548920 + ], + "P_RMS_DB": [ + "abs", + 4294967278 + ], + "PARAM_ID_VOL": [ + "abs", + 99 + ], + "RXBUF": [ + "abs", + 2147513408 + ], + "RXSTRIDE": [ + "abs", + 48 + ], + "FRAMES": [ + "abs", + 32 + ], + "ALPHA": [ + "abs", + 146 + ], + "RMS_ON": [ + "abs", + 17017568 + ], + "RMS_OFF": [ + "abs", + 13517530 + ], + "rms_scan": [ + ".run", + 0 + ], + "ms_l": [ + ".run", + 246 + ], + "smooth": [ + ".run", + 132 + ], + "ms_r": [ + ".run", + 250 + ], + "rms_over": [ + ".run", + 254 + ], + "vol_knob_draw": [ + ".run", + 156 + ], + "vol_knob_draw_alt": [ + ".run", + 164 + ], + "vol_ret": [ + ".run", + 258 + ], + "vol_after": [ + ".run", + 184 + ], + "main_rms_vol_knob_draw": [ + ".run", + 156 + ], + "main_rms_rms_scan": [ + ".run", + 0 + ], + "main_rms_vol_knob_draw_alt": [ + ".run", + 164 + ] + }, + "exports": [ + "main_rms_rms_scan", + "main_rms_vol_knob_draw", + "main_rms_vol_knob_draw_alt" + ], + "imports": [], + "weak": [], + "relocs": [ + [ + ".run", + 98, + "abs32", + "sec:.run", + 254 + ], + [ + ".run", + 114, + "abs32", + "sec:.run", + 254 + ], + [ + ".run", + 172, + "abs32", + "sec:.run", + 258 + ] + ], + "sites": [ + { + "addr": "0x401213ca", + "len": 6, + "stock_sha256": "678c959ff67f83d38d2b48b568085abddb991a7128c2c6626e6562f16c84d45a", + "new": "4ef900000000", + "kind": "code", + "relocs": [ + [ + 2, + "abs32", + "sym:main_rms_rms_scan", + 0 + ] + ] + }, + { + "addr": "0x401e14ec", + "len": 4, + "stock_sha256": "2fea2f4a481057355dec1a47da9c9b2bcfa67c0d95059f9088448569db17afb0", + "new": "00000000", + "kind": "data", + "relocs": [ + [ + 0, + "abs32", + "sym:main_rms_vol_knob_draw", + 0 + ] + ] + }, + { + "addr": "0x401e14f0", + "len": 4, + "stock_sha256": "652aedd679a23ad02f24f91062816b84720731421e97c74200014eaabda3f291", + "new": "00000000", + "kind": "data", + "relocs": [ + [ + 0, + "abs32", + "sym:main_rms_vol_knob_draw_alt", + 0 + ] + ] + } + ], + "collections": {}, + "contribute": [], + "copied": [], + "resources": { + "regions": [], + "names": [ + "ui:compressor VOL label drawing", + "audio:MAIN level read each block" + ], + "core": "0.3" + }, + "requires": [ + "core" + ], + "conflicts": [], + "signature": null +}