Skip to content

Analog BD 0.1.6-experimental: TYPE and FIXD switches, SETUP reorder, LPF OFF clockwise, 808 variation, leaner DSP - #944

Merged
repeat98 merged 30 commits into
repeat98:mainfrom
npp1993:claude/analog-bd-0.1.6
Oct 29, 2026
Merged

repeat98 merged 30 commits into
repeat98:mainfrom
npp1993:claude/analog-bd-0.1.6

Conversation

@npp1993

@npp1993 npp1993 commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Requested by Nathaniel

#943 (base flags SETUP_ALL and LIST) landed on main in #1017; this branch carries main at 4690b6eb.

Analog BD 0.1.6-experimental

What changes for players:

  • SRC SETUP layout: TYPE, FIXD and ACNT on the top row, LOW, HIGH and LPF below.
    • TYPE (808 left, 909 right) replaces the engine browser. It uses the byte the browser edited, so the 808/909 choice and the 808 default are kept.
    • TYPE and FIXD use stock's two-state switch, as on AMP SETUP's SYNC.
  • FIXD, on both models: OFF, the default, varies each hit slightly; ON makes every hit open identically.
    • 909: ON fixes the click strength at its mean (0.96) and restarts the noise from its seed. OFF is the 0.1.5 sound.
    • 808: OFF (new) scales each hit's trigger transient by 1 ± 4 %. ON is the 0.1.5 sound.
  • LPF: 500 Hz at 0, ORIG at 63, 18 kHz at 126, and OFF fully clockwise (127), the new default.
  • HIGH: can now be edited over USB (Fix: Octatrack base, SRC SETUP's encoder E and the double-tap window for module machines (SETUP_ALL, LIST flags) #943's SETUP_ALL).
  • Double tap: a double tap on TRACK opens the machine list at once (Fix: Octatrack base, SRC SETUP's encoder E and the double-tap window for module machines (SETUP_ALL, LIST flags) #943's LIST).
  • Labels: four letters: PTCH, DCAY, SWEP, TYPE, ACNT, FIXD.
  • DSP: both engines are rescheduled with bit-identical audio and state.
    • On a MKII (dev base meter, one voice, 16 trigs a bar), one voice loads its DSP core about 26 % (909) and 21 % (808) less than 0.1.5; peaks −18 % / −20 %.
    • Emulator count (dsp_host, 52 scenarios): about 15 % fewer executed instructions on average; peaks about 8 % lower on the 909 (6534 → 5999 per 16-sample block) and 5 % lower on the 808 (4260 → 4034).
    • The declared price (411 per voice) is unchanged, so no voice gains room.
    • Resident engine: 1009 P words per core (998 in 0.1.5): −26 from the rescheduling, +37 for the FIXD tests and the 808 variation. Card build: 1008 (997).
  • 0.1.5 projects are not converted. ACNT, LPF and FIXD moved slots, so README and the release notes say to set them again on each Analog BD track. Until then a 0.1.5 track loads:
    • its old LPF value as ACNT (127 by default);
    • the old hidden slot's 0 as LPF (500 Hz);
    • FIXD OFF.

Review follow-up (repeat98's 26 October review)

  1. 0.1.5 projects. There is no AB/2 migration. AB/1 is also in the base (known[], machine_contributors.c, the card composition, the Part-restore tests). A new signature needs base code so that an absent Analog BD's tracks stay protected through the boot restore (finding 24). With the base in flux, I'd rather add no migration code to the base or the module for an experimental module whose re-set is documented. What changed instead:
    • FIXD now plays ON only when its stored byte is 1. A 0.1.5 track's accent byte in that slot reads OFF on every track, so unselected tracks no longer play FIXD ON.
    • The selected-track clamp to 0/1 stays.
    • README and the release notes say plainly what to set again.
  2. Captures: fresh ot_emu captures of this source (SETUP, 808 page, 909 page). They come from a native card build with Analog BD alone, media/capture.json records the plan, and every image was opened. No retainedUiVersion or release-documentation waiver is needed.
  3. Docs: FIXD is on both models and the 808 varies with FIXD OFF (README, TESTING.md, captions). The P-word count is corrected. TESTING.md has one current 0.1.6 section.
  4. DSP claim: reworded as above in the changelog, README, TESTING.md and the manifest's resource text, with the chip measurement kept apart from the emulator count.
  5. Small things: the changelog is dated 2026-10-27 and says "HIGH can now be edited over USB". if(1) return; in ab_engine_open has a comment saying why the browser code stays compiled (the card build's list hooks and the CF verifier name its symbols).

Compatibility: conflicts unchanged (synth). Base-bound: this release needs the regenerated beta base 6483508a, which carries 0.1.6's trust row (rebuilt on main after #1017, #1026 and #1030). Analog BD's package is f83c7f81. The trust row, the recipe and the packages are in this PR. The Analog BD package is a2def725.

Attribution: Analog BD is repeat98's module, and repeat98 is also the owner reviewing this PR; I have no separate author approval to link.

What the guides lacked: how to make a SETUP control a two-state switch, and the encoder-E rule. Both were fixed in #943, now on main (docs/module-guides/machines.md). This release carries no guide edit.

Owner approval needed

modules:check (and with it modules:generate in pr:ready) fails until sdk/analog-bassdrum-build-approval.json covers 0.1.6. I did not write it. The fields it needs:

  • version: 0.1.6-experimental
  • sourceSha256: 0ddc82a295d320300a0e03c0c9cf836d19d887dfd2d340ff442d5185a4c23d43
  • waived: current-build-hardware, chip-worst-case-cycles, complete-memory-bounds. No release-documentation or retainedUiVersion, now that the captures are fresh.
  • approvedBy, approvedOn, ownerStatement and reason: yours

With a stand-in record committed locally (never pushed), npm run pr:ready says Ready (28 October, on main at 4690b6eb, check passed in 238 s).

Hardware results

The rebuild on base 6483508a (package f83c7f81) differs from the tested build only in the base link (the lease entries moved with main's base); it is not yet tested on hardware.

Tested build: base 64ce4825, package a2def725 (MKII, reported by me, npp1993, 27 October):

  • Base 64ce4825 RAM-booted, Analog BD a2def725 kept: self-test passed. SRC SETUP reads TYPE FIXD ACNT / LOW HIGH LPF with 4-letter labels; TYPE flips 808/909 live; FIXD shows and switches on both models; encoder E moves HIGH; LPF reads OFF fully clockwise; the double tap opens the machine list at once with no flicker.
  • The same package flashed in my personal base 5afa623e (this branch plus a separate base fix, not in this PR) with 13 other modules: self-test passed (14/14, 9 DSP effects together, cores 77 % / 80 %); after a power cycle it started from that slot and reloaded all 14.
  • DSP load on the chip: dev twins of Fix: Octatrack base, SRC SETUP's encoder E and the double-tap window for module machines (SETUP_ALL, LIST flags) #943's base with 0.1.5 and of this base with 0.1.6, one voice on T1, 16 trigs a bar, the same settings, 12 readings of the base's core meter:
0.1.5 0.1.6 change
909, mean 545 (+141 over 404) 508 (+104) −26 %
808, mean 495 (+91) 476 (+72) −21 %
909, peak 554 (+142 over 412) 529 (+117) −18 %
808, peak 506 (+94) 487 (+75) −20 %
  • On the flashed personal base later that evening: T2's window switched to T1 shows the machine list, and a double tap on a FLEX and on a STATIC track opens their pools.
  • Not tested on the unit: loading a project saved with 0.1.5 (none at hand). There is no migration; the expected behaviour is the documented one (set ACNT, LPF and FIXD again).
  • Base limits seen in the same run, not caused by this module: a FLEX ↔ Analog BD switch kept the old machine's live parameters until SOURCE CLEAR (fixed on its own base branch), and right after a boot Analog BD is silent if PLAY comes before its engine is placed, which happens only while stopped (a separate base fix is planned).

Earlier 0.1.6 builds, reported by me (npp1993) on a MKII. The last was flashed base 9976a5e8 with Analog BD dfcb89a1 and 13 other modules. These worked:

  • the layout and labels, TYPE flipping live, FIXD on both models
  • HIGH moves; LPF OFF fully clockwise and at SOURCE CLEAR
  • save/reload keeps every SETUP value
  • the double tap opens the machine list instantly with no flicker; T2 → T1 shows the list
  • the 14-module set survives a power cycle

Validation (this build)

  • Card-build packages: rebuilt in the toolchain image (build-modules-isolated.sh, modules:import). The requested GNU link proofs were refreshed (export-requested-link-proofs.py).

  • Recipe pins: the reviewed Analog BD source pins were moved for control.c/control.s. Analog BD's recipe was recaptured against the base's lease symbols. The other machine recipes re-pin machine-ports.json, and the Tape Echo and Euclid standalone recipes re-pin the card-build assets.

  • module:verify: 164 selections, 0 mismatches (rerun on base 06bdc59e; module:doctor confirms it still matches on 6483508a).

  • Composition proofs: Analog BD's 212 proofs were re-exported natively on base 06bdc59e (146 builds, 66 refusals; the refusals are the same set as on main). verify-analog-bd-native passes.

  • dsp_host and exact render: unchanged from the previous push, since the DSP code is unchanged. exact-render.json holds 0.1.6's hashes.

  • npm run pr:ready: Ready with the stand-in approval (check passed in 189 s). Without it, only the approval record is missing.

  • Changing a module someone else wrote: author said yes (the author is the owner reviewing this)

  • I read the machines guide, and TESTING.md lists what I did not test.

  • Source and media are mine or properly licensed; nothing comes from Elektron firmware.

  • Screenshots are real captures of the current module UI (fresh ot_emu captures of this source).

🤖 Generated with Claude Code

npp1993 and others added 2 commits October 25, 2026 20:57
…for module machines (SETUP_ALL, LIST flags)

The base's SRC SETUP editor hook (machine_registry.s, from POLY8's shared
hooks) left encoder E (slot 10) read-only for every module machine, POLY8's
hidden slot; Analog BD keeps HIGH there, so HIGH never moved over USB. A machine
now sets MODWERK_MACHINE_SETUP_ALL to edit it.

A track whose machine has no pool opened its double-tap window on stock's
(empty) sample list, because Analog BD and FM Synth tracks are FLEX
underneath; the base corrected it afterwards, which flickered. A new owned site
at 0x400788c4 (mw_chooser_column) lets a MODWERK_MACHINE_LIST machine open on
the machine list at once, as PICKUP does.

Both are opt-in: POLY8, VECTOR, FM Synth and Analog BD 0.1.5 are unchanged
(Analog BD 0.1.6 sets both). Beta base regenerated; the base-bound packages
only change requiredBase; the machine recipes re-pin machine_ports.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…wise, 808 variation, ~15% leaner DSP

SRC SETUP reads TYPE, FIXD, ACNT above LOW, HIGH, LPF on both models. TYPE
(808 left, 909 right) and FIXD are stock's two-state switch, as AMP SETUP's
SYNC. FIXD OFF (default) varies every hit slightly: the 909 as in 0.1.5, and
now the 808 too (its trigger transient scaled by 1 +/- 4% per hit); FIXD ON
makes every hit open identically (808 ON is the 0.1.5 sound). LPF runs 500 Hz
at 0 to 18 kHz at 126, OFF fully clockwise (127, the default). The track double
tap, or a track window switched to an Analog BD track, shows the machine list
with Analog BD highlighted. Labels are four letters. Projects saved with 0.1.5
need ACNT, LPF and FIXD set again.

Needs the base Fix PR (SETUP_ALL and LIST flags): Analog BD sets both, so HIGH
edits over USB and the double tap opens the machine list at once.

Both engines are rescheduled with bit-identical audio and state: 909 peak
6534 -> 5999 and mean -15%, 808 mean -16% executed instructions per block.

Base-bound release: trust row, beta base, recipe, base-bound packages,
card-build packages, native comparison and the 212 composition proofs are
regenerated on current main. Tested on a MKII (RAM boot, then flashed with 14 modules; survives a power cycle).
The owner approval record for 0.1.6 is not included.

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

@repeat98 repeat98 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this, and for the careful DSP work. The red checks are expected: modules:check fails until I write the 0.1.6 approval record. Before I do, a few things need changing:

  1. 0.1.5 projects change sound when they load. ACNT and LPF moved slots, and the Part signature stays AB/1, so nothing can migrate the bytes. A track left on 0.1.5's defaults loads with ACNT 127 (old LPF byte), LPF 0, which is now 500 Hz (old hidden slot 11), and FIXD ON (old ACCNT byte). ab_clamp_switches (control.c:129) only fixes the selected track, and the DSP reads any nonzero FIXD as ON (bd909.asm, zq06), so the other tracks play FIXD ON until you select them. Octabam's trap list warns about exactly this ("A PART SAVED UNDER AN OLDER SLOT LAYOUT…"). Please migrate them: for example a new signature AB/2 (sig_lo 1), with AB/1 tracks rewritten once in every Part copy when a project loads, so a 0.1.5 project keeps its sound. README line 34 should then say so; today it says saved patches keep their control bytes.

  2. Fresh captures instead of the waiver. You already have ot_emu captures of the new layout. Please replace media/ot-setup.png, ot-909.png and ot-808.png with 0.1.6 captures (scripts/capture-module-ui.py), so the approval doesn't have to waive release documentation or retainedUiVersion.

  3. Make the docs say what 0.1.6 does. A few places still describe earlier versions:

    • FIXD is on both models, but README lines 3 and 30, TESTING.md lines 8 and 33, and the ot-setup caption say "909 only".
    • The ot-808 caption says the 808 engine is "unchanged", and TESTING.md line 8 says the 808 has no random source.
    • TESTING.md line 46 says 972 P words, while the manifest says 1008 and line 205 credits the 11 words to "the FIXD switch". It's −26 from rescheduling plus 37 for the 808 variation.

    Please merge the 0.1.6 sections of TESTING.md into one current one.

  4. The "15% less DSP" claim. That's the mean count of instructions the emulator executes. The peaks fell about 8 % (909) and 5 % (808), there's no chip measurement, and the declared price of 411 per voice is unchanged, so players don't get more room. Please word the changelog line and the title along those lines ("about 15 % fewer DSP instructions on average, emulator count").

  5. Small things: the changelog date is 2026-10-24, the version was never released then, and "HIGH can be edited over USB again" (it never could). Also the if(1) return; in ab_engine_open (control.c:268) leaves the whole engine-browser body as dead code. Fine for now if the UI fixtures need the symbols, but say so in a comment.

The hardware results match the build this PR publishes today (base 9976a5e8, package dfcb89a1). The changes above mean a new build anyway, and other base pull requests are ahead of #943 in the queue, so please hold the next unit run until #943 is rebuilt on current main. I'll merge #943 and this back to back after that.

@repeat98

Copy link
Copy Markdown
Owner

Thanks, this is careful work, and the bit-exact reschedule is a nice find. Two things on my side before the approval.

  1. I have an unreleased 0.1.6 of my own (the 909 refit: body, PITCH/DECAY ranges, hit-to-hit variation). Yours ships as 0.1.6, and mine follows as 0.1.7 on top of it.
  2. This changes the controller, so Analog BD's trust row in the base changes, and every unit would need a base update to take the module. I decided on 22 October that a module update must never need a base rebuild; that's why the engine moved into the package. Could the changes stay inside what the current controller admits?

It's stacked on #943, so it waits for that one, and it now conflicts with main in the base files after #857.

Regenerated with their producers: events.py --write, then
npm run octatrack:base -- --beta --write (beta base 68e6a90b) and
npm run octatrack:module-packages (only requiredBase moved).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@npp1993

npp1993 commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator Author

Thanks for the thorough review. I'll work through all of the items (AB/2 with a one-time rewrite of 0.1.5 tracks, fresh 0.1.6 captures, the doc fixes, the reworded DSP claim, the changelog date and wording, and a comment on if(1) return;) once #943 is rebuilt on main.

On the controller: the point of 0.1.6 is the steady-hits switch (FIXD) on SRC SETUP, with TYPE replacing the engine browser. Those are controller changes by nature, and so is the AB/2 migration you asked for. Only the leaner DSP fits inside the current controller. Since #943 already needs a base rebuild that every unit will take, could Analog BD 0.1.6's new trust row ride that same base update if the two merge back to back, as you planned in your review? If you'd rather keep it separate, I can split this: ship the DSP-only part now and hold the switch until Phase 2 admits controllers without trust rows. Happy to go either way, and 0.1.7 for your 909 refit sounds right.


Generated by Claude Code

npp1993 and others added 15 commits October 27, 2026 13:18
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…log-bd-0.1.6

Generated files regenerated with their producers.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

# Conflicts:
#	public/octatrack-modules/analog-bassdrum/0.1.6-experimental.mwrm
#	sdk/machines/octatrack/base-binding.json
#	sdk/machines/octatrack/module-adapters/controller-policies.json
#	sdk/machines/octatrack/module-adapters/machine-recipes.json
#	sdk/machines/octatrack/module-adapters/standalone-recipes.json
#	sdk/tests/test_resident_engines.py
#	src/engine/assets/analog-bd-composition-proofs.json
#	src/engine/assets/bootstrap-package.json
#	src/engine/assets/coldfire-packages.json
#	src/engine/assets/descriptor-recipes.json
#	src/engine/assets/dsp-packages.json
#	src/engine/assets/menu-recipes.json
#	src/engine/assets/module-build.json
#	src/engine/assets/octatrack-base-sources.json
#	src/engine/assets/octatrack-base-variants.json
#	src/engine/assets/octatrack-base.elemod
#	src/engine/assets/octatrack-module-packages.json
#	src/engine/assets/platform-writes.json
#	src/engine/assets/requested-packages.json
#	src/engine/assets/resident-dsp.json
#	src/engine/assets/rom-packages.json
#	src/engine/assets/usb-audio-packages.json
#	src/engine/assets/utility-packages.json
…ures)

FIXD plays ON only at its stored 1, so a 0.1.5 track's accent byte in
that slot reads OFF on every track. No migration and no new signature:
README and the release notes say 0.1.5 projects need ACNT, LPF and FIXD
set again. Docs say FIXD is on both models and the 808 now varies; the
P-word count is 1009 (-26 rescheduling, +37 808 variation); the DSP
claim is about 15% fewer executed instructions on average (emulator
count, peaks -8%/-5%, 411 per voice unchanged). TESTING.md has one
current 0.1.6 section. Fresh ot_emu captures of this source. The
unreachable engine browser in ab_engine_open is explained.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e recipe for base 68e6a90b

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Card-build packages rebuilt in the toolchain image (modules:import); the
Tape Echo and Euclid standalone recipes and the other machine recipes
re-pin the inputs that moved. Beta base f0a01f62 carries 0.1.6's trust
row; the base-bound packages relinked (octatrack:module-packages).
Analog BD's 212 composition proofs re-exported natively (146 builds and
66 refusals, the refusals as on main); verify-analog-bd-native passes.
module:verify: 160 selections, 0 mismatches.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Regenerated with their producers: events.py --write, then
npm run octatrack:base -- --beta --write (beta base b2810a87) and
npm run octatrack:module-packages (only requiredBase moved). The Tape
Echo and Euclid standalone recipes re-pin module-build.ts and the
card-build assets repeat98#993 changed, or octatrack:module-packages refuses.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…log-bd-0.1.6

Generated files regenerated with their producers.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

# Conflicts:
#	sdk/machines/octatrack/base-binding.json
#	sdk/machines/octatrack/module-adapters/standalone-recipes.json
#	src/engine/assets/bootstrap-package.json
#	src/engine/assets/coldfire-packages.json
#	src/engine/assets/descriptor-recipes.json
#	src/engine/assets/dsp-packages.json
#	src/engine/assets/menu-recipes.json
#	src/engine/assets/module-build.json
#	src/engine/assets/octatrack-base-variants.json
#	src/engine/assets/octatrack-base.elemod
#	src/engine/assets/octatrack-module-packages.json
#	src/engine/assets/platform-writes.json
#	src/engine/assets/requested-packages.json
#	src/engine/assets/resident-dsp.json
#	src/engine/assets/rom-packages.json
#	src/engine/assets/usb-audio-packages.json
#	src/engine/assets/utility-packages.json
Card-build packages re-imported from the toolchain image; the Tape Echo
and Euclid standalone recipes re-pin the assets that moved; Analog BD's
recipe recaptured (image unchanged); beta base rebuilt with 0.1.6's trust
row; the base-bound packages relinked.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…, 0 mismatches)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…log-bd-0.1.6

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ted-link-proofs.py, toolchain image)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…log-bd-0.1.6

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@npp1993 npp1993 changed the title Analog BD 0.1.6-experimental: TYPE and FIXD switches, SETUP reorder, LPF OFF clockwise, 808 variation, ~15% leaner DSP Analog BD 0.1.6-experimental: TYPE and FIXD switches, SETUP reorder, LPF OFF clockwise, 808 variation, about 15% fewer DSP instructions on average (emulator count) Oct 27, 2026
npp1993 and others added 2 commits October 27, 2026 16:52
Hardware results of this build (base 64ce4825, package a2def725) and of
the flashed personal base; the DSP load measured on dev twins of both
bases (one voice: 909 -26 %, 808 -21 % mean), kept apart from the
emulator count in TESTING.md, README, the manifest and the release notes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@npp1993 npp1993 changed the title Analog BD 0.1.6-experimental: TYPE and FIXD switches, SETUP reorder, LPF OFF clockwise, 808 variation, about 15% fewer DSP instructions on average (emulator count) Analog BD 0.1.6-experimental: TYPE and FIXD switches, SETUP reorder, LPF OFF clockwise, 808 variation, leaner DSP Oct 27, 2026
@npp1993

npp1993 commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator Author

I've pushed the review fixes, except one: there's no AB/2 migration. Here's why, and what I did instead.

Why no AB/2. AB/1 is wired into the base as well as the module: known[] in machine_registry.c, machine_contributors.c, machine_composition.py and the Part-restore tests. A new signature would need base code (the signature range) so an absent Analog BD's AB/2 tracks are still protected during the boot restore (finding 24). With the base in flux I'd rather not add migration code to it, or to the module, for an experimental module whose re-set is documented.

What changed instead

  • FIXD plays ON only at its stored 1. A 0.1.5 track's accent byte in that slot now reads OFF on every track, so unselected tracks no longer play FIXD ON. The selected-track clamp to 0/1 stays.
  • README and the release notes say plainly that 0.1.5 projects keep TYPE but need ACNT, LPF and FIXD set again, and what each one loads as in the meantime.

The rest of your list

  • Docs: FIXD is on both models, the 808 varies with FIXD OFF, and TESTING.md has one current 0.1.6 section.
  • P words: 1009 resident (998 −26 from the rescheduling +37 for the 808 variation); 1008 in the card build.
  • DSP wording: "about 15% fewer executed instructions on average (emulator count); peaks about −8% (909) and −5% (808); the declared 411 per voice is unchanged", in the title, changelog and docs.
  • Changelog: dated 2026-10-27, and "HIGH can now be edited over USB".
  • if(1) return;: commented with why the browser code stays (the card build's list hooks and the CF verifier name its symbols).
  • Captures: fresh ot_emu captures of this source: SETUP, the 808 and 909 pages. No retainedUiVersion or release-documentation waiver needed now.

Both branches carry main at b5ac6142. #943 alone builds beta base b2810a87; with 0.1.6's trust row it's 64ce4825 (Analog BD package a2def725). module:verify: 0 mismatches over 164 selections; the 212 Analog BD proofs are re-exported and verified; pr:ready says Ready with a stand-in approval record (the fields are in the description).

Hardware (my MKII, today). On 64ce4825 (RAM boot) the SETUP layout and labels, TYPE flipping live, FIXD on both models, HIGH on encoder E, LPF OFF fully clockwise and the instant machine list on double tap all work, and the self-test passes. The same package in a flashed personal base, with 13 other modules, passes the self-test (14/14) and survives a power cycle. On the chip (dev twins of #943's and this base, one voice, 16 trigs a bar, the same settings) one voice loads its DSP core 26 % (909) and 21 % (808) less than 0.1.5, peaks −18 % / −20 %; that's separate from the emulator's ~15 % instruction count. Still to run: T2 → T1, the FLEX/STATIC pool double taps and a 0.1.5 project. Two base issues showed up that aren't this module's: a FLEX ↔ machine switch keeps the old live parameters until SOURCE CLEAR (I have a base fix on its own branch), and right after boot a machine is silent if PLAY comes before its engine is placed (separate fix to follow).


Generated by Claude Code

npp1993 and others added 2 commits October 27, 2026 17:04
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@repeat98

Copy link
Copy Markdown
Owner

Thanks for working through the whole list. Here's where I've landed on the two open points:

  1. The trust row: OK. TYPE and FIXD can't fit inside the current controller, so as a one-time exception 0.1.6's trust row rides Fix: Octatrack base, SRC SETUP's encoder E and the double-tap window for module machines (SETUP_ALL, LIST flags) #943's base rebuild. I'll merge Fix: Octatrack base, SRC SETUP's encoder E and the double-tap window for module machines (SETUP_ALL, LIST flags) #943 and this one back to back, so b2810a87 never ships on its own.
  2. No AB/2: OK too. The documented re-set of ACNT, LPF and FIXD is fine for an experimental module.

Two small things before the merge:

I'll add the approval record for 0.1.6 myself once those are pushed.

npp1993 and others added 5 commits October 28, 2026 07:52
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nto claude/analog-bd-0.1.6

Generated files regenerated with their producers.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

# Conflicts:
#	docs/module-guides/machines.md
#	public/octatrack-modules/analog-bassdrum/0.1.6-experimental.mwrm
#	scripts/module-source.test.mjs
#	sdk/machines/octatrack/HOOKS.md
#	sdk/machines/octatrack/base-binding.json
#	sdk/machines/octatrack/elekloader/runtime_events.h
#	sdk/machines/octatrack/events.json
#	sdk/machines/octatrack/include/modwerk_events.h
#	sdk/machines/octatrack/module-adapters/analog_bd_native_observations.json
#	sdk/machines/octatrack/module-adapters/controller-policies.json
#	sdk/machines/octatrack/module-adapters/machine-recipes.json
#	sdk/machines/octatrack/module-adapters/machine_ports.py
#	sdk/machines/octatrack/module-adapters/standalone-recipes.json
#	src/engine/assets/analog-bd-composition-proofs.json
#	src/engine/assets/bootstrap-package.json
#	src/engine/assets/coldfire-packages.json
#	src/engine/assets/descriptor-recipes.json
#	src/engine/assets/dsp-packages.json
#	src/engine/assets/menu-recipes.json
#	src/engine/assets/module-build.json
#	src/engine/assets/octatrack-base-fills.json
#	src/engine/assets/octatrack-base-sources.json
#	src/engine/assets/octatrack-base-variants.json
#	src/engine/assets/octatrack-base.elemod
#	src/engine/assets/octatrack-module-packages.json
#	src/engine/assets/platform-writes.json
#	src/engine/assets/requested-packages.json
#	src/engine/assets/resident-dsp.json
#	src/engine/assets/rom-packages.json
#	src/engine/assets/usb-audio-packages.json
#	src/engine/assets/utility-packages.json
Card-build packages re-imported from the toolchain image; Analog BD's
recipe recaptured on the new base's lease entries; the beta base rebuilt
with 0.1.6's trust row; the base-bound packages relinked; the Tape Echo
and Euclid standalone recipes and the machine recipes re-pin their inputs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ested builds

Analog BD's 212 composition proofs re-exported natively (146 builds, 66
refusals as on main; verify-analog-bd-native passes). module:verify: 164
selections, 0 mismatches.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@npp1993

npp1993 commented Oct 28, 2026

Copy link
Copy Markdown
Collaborator Author

Thanks! Both points are in, and it's ready for your approval record.

The hardware results in TESTING.md and the description are from the 27 October build (base 64ce4825, package a2def725). The rebuild differs only in the base link and isn't on a unit yet.


Generated by Claude Code

Generated base files regenerated with their producers.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

# Conflicts:
#	sdk/machines/octatrack/base-binding.json
#	src/engine/assets/octatrack-base-variants.json
#	src/engine/assets/octatrack-base.elemod
#	src/engine/assets/octatrack-module-packages.json
npp1993 and others added 2 commits October 28, 2026 14:12
octatrack:base --beta --write with 0.1.6's trust row and
octatrack:module-packages; Analog BD's recipe and package are unchanged
(f83c7f81). TESTING names the new base.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@repeat98
repeat98 dismissed their stale review October 29, 2026 09:01

Addressed: the requested changes are in, and the owner approved the 0.1.6 record.

@repeat98
repeat98 merged commit f05161c into repeat98:main Oct 29, 2026
13 of 15 checks passed
repeat98 added a commit to npp1993/modwerk that referenced this pull request Oct 29, 2026
Brings in Analog BD 0.1.6 (repeat98#944, beta base 6483508a) and the later docs
merges. The generated base files were regenerated with their producers,
not resolved by hand: octatrack:base --stock OS1.40C --beta --write and
octatrack:module-packages. The five base-bound packages rebind
byte-identical (requiredBase a542a515); Analog BD's package is unchanged
(f83c7f81). Test mode 64 does not clash: main's board test ends at mode 63.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@npp1993
npp1993 deleted the claude/analog-bd-0.1.6 branch October 30, 2026 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants