Skip to content

Fix: Octatrack base, LFO SETUP's PMTR list names a machine track's own parameters - #1080

Merged
repeat98 merged 5 commits into
mainfrom
claude/lfo-pmtr-names
Oct 30, 2026
Merged

repeat98 merged 5 commits into
mainfrom
claude/lfo-pmtr-names

Conversation

@repeat98

Copy link
Copy Markdown
Owner
  • What was wrong: on a track running a machine module (Analog BD, FM Synth), LFO SETUP's PMTR list showed FLEX's parameter names (PTCH STRT LEN RATE RTRG RTIM) instead of the machine's own. Stock's formatter picks the PLAYBACK page from the PB table by the track's raw machine byte, and a machine's track keeps that byte at FLEX or STATIC. So the base's pointer swap at 0x4003bff4 still handed it FLEX's page. Reported in [synth] Wrong LFO1&2 destination names #589; Tim traced it on FM Synth 0.1.5: scale quantizer on MIDI tracks (the author's 2.13 quantizer) #555, where we agreed the base should own the whole lookup.
  • What this changes:
    • ot_machines now owns the whole 8-byte lookup at 0x4003bff2 (lea table,%a0; bra 0x4003c054), in place of the 4-byte pointer at 0x4003bff4.
    • The new shim mw_lfo_pb asks mw_page first, as mw_resolve_pb already does for the page resolver: a machine with a track_page gets its own page. Anything else replays stock's lookup through mw_pb_table, so stock machines and the FX1/FX2 cases are unchanged.
    • The shim keeps d1 (the track) and a1, which stay live past the lookup.
    • The beta base is regenerated, and the five base-bound packages are relinked (--base-only: only requiredBase moved).
    • One sentence in docs/MODULE_UI_CAPTURES.md: without --dsp, ot_emu refuses a package that carries a DSP engine with loader refusal 3.
  • How I checked it:
    • npm run pr:ready says Ready (339 test files). The machine event tests pass, and the base build is stock-free, flash-safe and byte-identical in the browser.
    • Emulator, this branch's beta base with Analog BD 0.1.6 installed over the emulated USB:
      • On a FLEX track LFO SETUP reads SRC / STRT.
      • On the Analog BD track it reads SYN / TONE and SYN / SAT, Analog BD's page and names.
    • The stock bytes come from the disassembly of the user's OS.
    • Not run on a unit. The owner is away and asked for no work that needs a power cycle. It needs one short RAM boot before merge.
  • Interplay: Improvement: versioned Octatrack source-machine START callbacks #1029 also regenerates the base, so whichever merges second regenerates it. After this lands, FM Synth 0.1.4 needs no LFO-names hook of its own (FM Synth 0.1.5: scale quantizer on MIDI tracks (the author's 2.13 quantizer) #555).
  • What the guides lacked or got wrong, and where I fixed it: the emulator recipe didn't say that a DSP-engine package is refused without --dsp; fixed in docs/MODULE_UI_CAPTURES.md (Driving ot_emu by hand).

🤖 Generated with Claude Code

repeat98 and others added 5 commits October 30, 2026 12:50
…n parameters (#589)

The LFO formatter picked the PLAYBACK page from the PB table by the
track's raw machine byte, which a machine module's track keeps at FLEX
or STATIC, so FM Synth and Analog BD tracks listed FLEX's names. The
table now owns the whole 8-byte lookup at 0x4003bff2 and resolves the
page through mw_page first, as mw_resolve_pb does; stock machines and
the FX cases take the same table as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…base

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the bug Something isn't working label Oct 30, 2026
@repeat98
repeat98 merged commit 9041106 into main Oct 30, 2026
9 checks passed
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.

1 participant