Repository navigation
Improvement: the Rytm base gives send effects the sequencer's time, SRC + YES random, MISSING left with FUNC + A, a 32 KB work area - #1097
Conversation
…RC + YES random, MISSING left with FUNC + A, and a 32 KB work area - clock.c: mw_fx_clock() and mw_fx_step() read the Rytm's own sequencer (24 PPQN pulses from PLAY, the pattern's speed and SWING), worked out only for an effect that asked the block before. - SEND FX: SRC held + YES sets A-H at random (a FDBK control kept below its runaway), SRC + NO undoes it once. - A kit whose effect is missing leaves MISSING with FUNC + A (right: the first effect, left: the last). - MW_FX_WORK 16384 -> 8192 words (32 KB), so fifteen send effects fit beside Loop Sync and Retrig Grid in the 128 KB mods area; CHORUS, FLANGER and PHASER use 4096 words. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks, this is a clear base change, and I'm fine with the four parts going in together: each one changes the base's identity, so one rebuild beats four. #1085 goes in first, and this one follows it. Before I merge it:
I'll check the new identity against my own OS file before merging, as on #1085. Generated by Claude Code |
…ble press on TRK) is not drawn over Seen on the author's unit (the SEND FX page drawn over stock's list) and reproduced in rytm-emu on Send FX, which draws the same way; with TRK no longer kept, a double press shows the list cleanly and a single press keeps the page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks for the TRK fix. It changes the base's identity like the other four parts, so it's fine here and goes into the same rebuild.
#1085 now waits only on my identity check. Generated by Claude Code |
…s its undo on a kit change, the effects' swing grid said - core-profile/interface.json exports mw_fx_clock beside the other mw_fx_ symbols. - load_kit clears undo_type when the kit it reads differs from the knobs (another kit or effect), so SRC + NO no longer puts the first kit's values into the second. - fx.h and the Rytm guide say that the effects' grid swings every second step by the pattern's SWING, as if each odd step had a swing trig; the pattern's own swing trigs are not read. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the pattern's speed changes while playing Found by the rytm-emu check the review asked for: after SPEED went from 1x to 2x while playing, the clock's step fell on the new grid but kept counting pulses from PLAY at the new speed (step 97 at master step 49). The count is now taken again from the master step whenever the pattern is read and its speed changes, or an effect starts asking; a pulse begun at the old speed is capped to the new step's last. Checked in rytm-emu with a traced build (the trace not committed): from PLAY, then at 2x, 1/2x and after 127 -> 90 BPM, the clock's step is the master step - 1 at every step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The red Documents check doesn't come from your branch: Generated by Claude Code |
… under a full-screen menu While a full-screen menu is up (the KIT menu, FUNC + PLAY MODE), stock sets byte +23 of every window under it and drawAll skips them. mw_send_draw ignored it and drew its page over the whole screen, then the menu's window again on top (draw_popups), so the menu showed mixed with the page (seen on the author's unit, reproduced in rytm-emu with this base and CHORUS). The page is now not drawn while its view's byte is set; it comes back when the menu closes. Notices (KIT 1 SAVED!) set nothing and are still drawn over the page. The Rytm guide says so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Two things since your last comment, both in the description:
Generated by Claude Code |
…o the Rytm base FX clock branch
…ts, rebuilt on main after repeat98#1085 npm run machine:base -- analog-rytm-mkii --stock <OS 1.74> --write: plain stays e558ad22 byte for byte; send-bus gets this PR's identity (clock, TRK and KIT menu fixes, 32 KB work area) and replaces 0c92aa45 in sdk/imports/packages and vendor/elekloader/catalog. machine.json and the elekloader README carry the new send-bus budget. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
#1085 is in and live, so I did the rebuild from point 1 here myself, to get this out today:
Thanks for the TRK and KIT menu checks on the unit, and for points 2 to 4. I'll merge this with a merge commit once the checks are green. Generated by Claude Code |
The Rytm base change the original send effects need, as agreed on #878: the base PR first, then one PR per effect.
What changes
elekloader/base/clock.c,mw_fx_clock()andmw_fx_step()ininclude/modwerk/fx.h). It is read from the Rytm's own sequencer: its 24 PPQN pulses from PLAY, the playing pattern's speed and its SWING. An effect never keeps a clock of its own (sequencing). The pattern reads and divisions run only for an effect that asked in the block before, so an effect that does not ask costs nothing.MW_FX_WORK16384 → 8192 words). With 64 KB, the 128 KB mods area could not hold the twelve planned effects beside Loop Sync and Retrig Grid: they were 16,784 bytes over. With 32 KB, all fifteen send effects link with 15,884 bytes to spare. CHORUS, FLANGER and PHASER use 4,096 words, so they are unchanged. This is the one ABI change: an effect that asks for more than 8,192 words is refused by the base, as before for more than 16,384. None exists.After review (1 November)
mw_fx_clockis in the core profile's exports (sdk/analog-rytm-mkii/core-profile/interface.json), beside the othermw_fx_symbols.fx.hand the Rytm guide now say so. Following the swing trigs could come later, as its own change.load_kit()clearsundo_typewhen the kit it reads differs from the knobs (another kit or effect). It is not cleared on every call, becauseload_kit()runs every UI tick and that would break the undo itself.The KIT menu (5 November)
mw_send_drawinelekloader/base/sendbus.c).machine-base.py --out, before and after) and CHORUS 0.1: before, the menu showed mixed with the SEND FX page and with the SEND page; after, it shows on its own from both, NO brings the page back, KIT 1 SAVED! still shows over the page, and the page itself is pixel-identical to before.Tested
TEST-1097-TRK-base-Modwerk.syx(sha25656af70a9f33aa14938318096cbd8225df4e135a28cd5b2d0498428c05a1cbf05): this branch's base at598cd345(0cdf0343, built withmachine-base.py --out, not the published package) with CHORUS, FLANGER and PHASER 0.1, on a new empty project, nothing saved.npm run pr:readyis Ready (again on 5 November, after mergingmain).scripts/build-elemod-isolated.shandverify-elemod-release-exports.mjsreproduce the 28 committed exports (at bdfe2f5; not rerun for the KIT menu commit, which changes no committed package).What the guides lacked
The machine guide (
sdk/machines/analog-rytm-mkii/README.md) did not say how a send effect follows the sequencer. It now points effect authors tomw_fx_clock()/mw_fx_step()and the sequencing rule. It also gives the 32 KB work area, SRC + YES, and the new budget. It did not say that a full-screen menu marks the windows under it: it now does, and that a page a module draws inev_drawmust not draw while its view is covered.Changelog:
changelog/2026-10-30-rytm-base-fx-clock.md.🤖 Generated with Claude Code