Skip to content

Fix: keep native FLEX readers alive for opted-in source machines - #1108

Closed
ex1010 wants to merge 6 commits into
repeat98:mainfrom
ex1010:fix/octatrack-native-flex-voice
Closed

ex1010 wants to merge 6 commits into
repeat98:mainfrom
ex1010:fix/octatrack-native-flex-voice

Conversation

@ex1010

@ex1010 ex1010 commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Superseded by the consolidated source submission #926, at FRACT's author's request. The complete native FLEX fix, its host regressions, generated base artifacts, guide corrections and approved FRACT media are preserved there at 7b529cc16c722839cc12d19d8909dd2da5fbe71b. This branch's head 7a57fba3477c78f2590a796549b0f3bdba3fd99c is an ancestor of that submission. Closing this redundant PR leaves one review thread; the fix is retained in #926.

The fix adds explicit MODWERK_MACHINE_NATIVE_FLEX opt-in together with START and a same-image render callback. A source machine consuming the native FLEX reader keeps its voice active across both render halves; stale retriggers, refused STARTs, unpaid sources and ordinary own-render machines retain stop protection. Host regression uses the exact shared voice byte that the registry stops. The machine descriptor remains ABI 1 / 80 bytes and the separate START record remains 16 bytes. No hook index or package-format change is introduced.

The earlier proposal to close #926 as obsolete is superseded: #926 now replaces its historical FX2/SPACE tree with the current three-grain source draft and includes this prerequisite in the same submission. No new PR or dependency on another module is proposed. Consolidated source and previews.

#926 is ready for maintainer review. Public FR:1 boot preservation, catalogue/package integration and exact-public hardware/lifecycle qualification remain open before a qualified public release. Private reported sound, three grains, centered SIZE, about 80% displayed CPU and no crackle in a short audition do not qualify the public tree. No device action was performed during consolidation.

Current validation, partial Jev coverage and release limitations are recorded in #926 and the dated checkpoint. The consolidated exact-head CI on 7b529cc1 passes, including Windows, module-contract and both source builds: https://github.com/repeat98/modwerk/actions/runs/41776599257. The core logger job was scope-skipped. Firmware, samples, audio, card/NVRAM images and private build outputs are not uploaded.

@github-actions github-actions Bot added the bug Something isn't working label Oct 31, 2026

repeat98 commented Nov 1, 2026

Copy link
Copy Markdown
Owner

Thanks, this is a clean fix: an explicit opt-in that leaves every other machine's default stop alone, with the host regression to show it. I'd like to merge it, but #1059 just went in first and regenerated the same base files, so it now conflicts with main.

Could you merge main into it (merge, not rebase), regenerate the base and the base-bound packages the way you did here (npm run octatrack:base -- --stock … --beta --write, then the --base-only package rebuild), resolve the text conflict in docs/module-guides/machines.md (#1059 edited the "Muted trigs" line right next to yours), and run npm run pr:ready until it says Ready? I'll merge as soon as the checks are green.


Generated by Claude Code

@repeat98

repeat98 commented Nov 3, 2026

Copy link
Copy Markdown
Owner

Thanks for the refresh, the fix itself is ready. One thing before I merge: the last two commits add FRACT's artwork under docs/media/fract/. That belongs with FRACT (#926), not with this fix, and docs/media/ would publish it with nothing pointing to it. Could you drop those two commits (or revert them) and push? I'll merge once the checks are green again.


Generated by Claude Code

@ex1010
ex1010 force-pushed the fix/octatrack-native-flex-voice branch from 9c47d42 to a5f812a Compare November 3, 2026 16:32
@ex1010

ex1010 commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor Author

Update: this branch now includes current main (5f28c9a8) via the Update branch merge, without rebasing. npm run pr:ready is Ready on 7a57fba3 with Node 24 and Python 3.12; all 2,791 app tests, SDK checks and supporting checks passed.

The important distinction is that #926 contains the obsolete FRACT FX2/SPACE effect. The current private FRACT has been reworked as a registered track machine, leaving FX1 and FX2 available for other effects. The old PR therefore no longer represents the implementation we are developing or the interface shown in the new previews.

I suggest closing #926 as obsolete, with a link to the eventual current track-machine submission, so it is not mistaken for the current FRACT. That machine integration should be submitted separately against the current SDK once the shared native FLEX support is merged. #1108 does not contain or release the FRACT machine itself.

I have also intentionally restored the latest FRACT artwork and added the three emulator screenshots with short captions in docs/media/fract/ in commit 7a57fba3. I understand you previously asked to keep the artwork out of this SDK fix; this media addition is now explicit in the PR description, and the README identifies the screenshots as previews of the private track-machine prototype. No sample audio, firmware or private build outputs are included. The native FLEX fix and its generated packages are unchanged by this media commit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants