Repository navigation
Sidechain Compressor 0.2.0-experimental: base-width key filter, MON/KEY rework (module, adapters, base, packages) - #971
Conversation
…upport (ptable2, page pointers, power-up check) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@Zac-Kyoti thanks, this is a really thorough PR, and the ptable2 record and the hardware run on MW_SC021 make it easy to follow. Two small things before it can go in:
A heads-up on timing: a few other open PRs also rebuild the beta base (#943, #944, #914), so whichever merges later needs the base and the base-bound packages regenerated on top of the others. I'll say here if that falls on this one. |
As agreed in #848: one PR with the module, the adapters, the regenerated beta base and the rebound packages, for your review.
The module. My final SIDECHAIN_COMPRESSOR, imported byte for byte from my own Modwerk copy of it,
modwerk-modules/sidechain-compressor(b0d49bf,sdk/imports/sidechain-compressor-b0d49bf.json).sc_normturns any other value OFF, so a COMPRESSOR saved with an earlier version comes up with MON OFF.The base and SDK (owner review). The record is
docs/verification/2026-10-26-octatrack-sidechain-0-2-0-base.md.DspSection.ptable2in the vendored schema and builder, the resident engine and the hooked DSP packages: a second table straight after theptable, with its own$fab2e0literal, as upstream octabam places it. An unfilled literal is refused.module:verifycaught it.sdk/infrastructure-verification/ptable2-builder.json: the floating-cave record's 128 selections, built with the base commit's builder files and with these, both with main's Sidechain folder, give 100 identical images and 28 identical refusals.EXTENSIONSgains it, and the emulator-gates test now lets a later record move a file it froze.resident_dsp.py: new pins. Your key-phase change still applies exactly once; only the detector half's hash moved, and the key bus tap is byte-identical.keybus_executedis 25 (was 41), anddsp-sites.jsonkeeps the 51-cycle hardware charge measured on the old tap.stock_hook_controllers.py: two linked units (sc_cf698 B,sc_ui616 B at0x400d7300) checked against my references, with eight stock copies.controller_board.candpage_record. Sidechain's page names 9: MON's formatter, switch and step handler, KEY's formatter, switch and step handler, KBAS's and KWID's formatters, and KWID's clip.ui_switch.s: it lends one entry of stock's switch glyph table (0x400bde2a) for the duration of the stock widget call.machine_registry.csidechain()(Fix: a Sidechain Compressor no longer empties the Octatrack's current bank at power-on #712) shows stock's validator its own COMPRESSOR values in slots 7-11. MON is now 2/3, and stock's value count of 2 for slot 7 would refuse the bank.test_machine_registry.ccovers 0.2.0 OFF/ON, a pre-0.2.0 MON, a 0.1.x bank, stock KEY 127, slot 7 and slot 11 out of range, and another effect.--beta --write, browser.bineef42677…), Analog BD's recipe (onlyimageSha256moved) and the base-bound packages. Both stock-free scans pass (longest run 11).schema.py.octatrack-module-packages.py --checkrebuilds every package identically; Play Modes stays as main has it (Play Modes 0.2.0 has no USB package: USB installs still get 0.1.1 #764).Newly refused.
npm run modules:pairs: no pair is newly refused; the refused list (10) is main's. The suites, regenerated in the toolchain image:sidechain(512)sidechain-visible(1,024)analog-bd(212)Nothing that 0.1.2 refused builds now. Linking
sc_uiin DRAM would likely give the ColdFire-space ones back; I kept the cave, the placement the hardware test ran. Say if you want it.How I checked it.
module:verify sidechain-compressor: 154 selections, 66 matching images (24 identical outright, 42 outside the platform writes), 88 matching refusals, 0 mismatches.dsp_asmand dsp56300 (test_resident_engines.py: key phase on every enable order and skew; MON ends with its COMPRESSOR over the 16-block fade). Alsotest_resident_stock_dsp.py,test_resident_stock_fills.py,test_stock_hook_controllers.py,test_controller_board.py,test_machine_events.py,test_infrastructure_regressions.py,test_sidechain_compressor.py, and the TypeScript tests for Sidechain, descriptors, DSP packages and Analog BD.131142e1…, card fileMW_SC021). KBAS/KWID with MON on and off, MON's switch and its OFF on an older project, KEY's pressed turn, the fades, and a MON ON project across a power cycle all work (evidence/hardware.md). The USB beta base itself is not hardware-tested.npm run pr:ready: Ready (on main1d61937a).What the guides lacked:
manifest.py'sauthormust be the GitHub login even whenauthor.namediffers.sdk/infrastructure-verificationrecord and anEXTENSIONSentry.No Docs: PR yet.
🤖 Generated with Claude Code