Repository navigation
Improvement: a C runtime package can raise an event with no site (build.py --raise) - #1059
Merged
Merged
Conversation
…ld.py --raise) An octabam module lists raised events under "raise" in its runtime.json; a C runtime package had no way to, so a machine written in C could not ask ev_trig_muted which trigs a mute module drops (machines.md). build.py takes --raise EVENT for C sources, as subscribe() already does for runtime.json, and the package rows pass a "raise" list. A test builds a C package that raises ev_trig_muted and checks its hook word. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…es still check every compiled byte) As repeat98#949 did when build.py changed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n octatrack:base -- --beta --write, octatrack:module-packages) The base-bound packages are bound to the new base identity; their bytes are unchanged (octatrack:module-packages -- --check: identical). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ent is plugged in usb.core.find(idVendor=0x1935) took the first Elektron device. With an Analog Rytm on the same bus it took the Rytm, found no Modwerk vendor interface and reported "No unit running the test base" (author's MKII and Rytm MKII, 30 October 2026). Both bridges now look through every Elektron device for the one with the vendor interface; a USB error is still raised when none has it. New test with a Rytm-like device enumerated first; it fails on the old code. OCTATRACK_DRIVING.md: a trial with no Keep on a twin, ended in needs-recovery, can also leave the flashed base with its previous set after the power cycle (same night, observed). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…aise # Conflicts: # docs/module-guides/machines.md # 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
…atrack:base -- --beta --write, octatrack:module-packages) The base-bound packages are bound to the new identity; npm run octatrack:module-packages -- --check: every package identical. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e MKII showed, and the RAM boot that restored it) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
|
Thanks, One thing: the USB bridge fix here ( |
Takes main's USB bridge (repeat98#1024 carries the same fix) and drops this branch's duplicate; generated base files regenerate next. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ack:base -- --beta --write, octatrack:module-packages) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
…a base (npm run octatrack:base -- --beta --write, octatrack:module-packages) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…a base on repeat98#1089's (npm run octatrack:base -- --beta --write, octatrack:module-packages) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…chine's trial before loading the project Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rged build.py's hash, beta base regenerated (npm run octatrack:base -- --beta --write, octatrack:module-packages) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Improvement: a C runtime package can raise an event with no site (
build.py --raise)What was missing.
docs/module-guides/machines.mdasks a machine that starts its own note from a trig to ask thebase's raised hook
ev_trig_mutedfirst, so a mute module's dropped trigs start no note. An octabam module does thatwith
"raise"in itsruntime.json; a C runtime package (thesourcesrows ofoctatrack-module-packages.json) hadno way to:
build.pytook--subscribeonly for C sources. SYNTIZ (#1028), the first native machine written in C,needs it, and so will the next ones.
What changes.
build.pytakes--raise EVENTfor C sources (repeatable). It goes through the samesubscribe(..., raises=...)that
runtime.json'sraisealready uses: the module defines its zero wordraise_EVENTin initialized data,and the event's hook word takes
RAISEand that word's offset. A package that only raises is ABI 8, as one thatsubscribes.
scripts/octatrack-module-packages.pypasses a row's"raise"list tobuild.py, beside"subscribe".sdk/runtime/loader/README.mdandmachines.mdsay how; a changelog entry.build.py's new source hash, as Fix: enforce ColdFire safety checks for C runtime modules #949 did: the images are unchanged and the recipes stillcheck every compiled byte. The beta base is regenerated (
build.pyis one of its inputs) and the base-boundpackages are bound to it, their bytes unchanged.
How I checked it.
test_c_sources_raise_an_event_as_a_runtime_json_does(sdk/tests/test_runtime_loader.py): a C source thatraises
ev_trig_mutedbuilds, its hook word at index 35 holdsRAISEand the offset of a zero word;--raise ev_voice_bind(a site event) is refused. It and the existing raise test pass withm68k-elf-gcc.npm run octatrack:module-packages -- --check: every package identical.npm run pr:ready: Ready.--raise.What the guides lacked.
machines.mdtold a machine to raiseev_trig_muted"inruntime.json", which a Cruntime package cannot have; it now names
--raiseand the package row'sraiselist.Also in this PR: twin lessons for
docs/OCTATRACK_DRIVING.mdThe USB bridge fix this PR first carried is #1024's, already in
main: the owner's refresh (005e517) took the bridgefiles from
mainand dropped the duplicate changelog entry. The driving-guide edits below stay.What the guides lacked.
docs/OCTATRACK_DRIVING.mdwarned about Keeps on a twin, not that a boot can come backshort of a machine without any Keep: the boot's restore refused SYNTIZ as busy while the project played, then every
submission was refused until a RAM boot of the flashed base's own image with the transport stopped. The guide now
says so and to check
inventoryafter any twin and any power cycle.Two more (30 October 2026, the author's MKII, twin
04e94075): the guide did not say thatnpm run device -- lifecyclekeeps twice: itaccepts a test module, then its removal. Run on a twin as a read, it rewrote both kept-set files, and the flashed
base booted with no modules until they were tried and kept again. Nor did it say how to listen to a machine on a twin:
a project loaded while the machine was absent keeps its tracks drawn as FLEX until a trig or a Part change, and a
machine's trial that ends while tracks name it answers needs-recovery, with broken audio afterwards. The guide now says
to start the
tryfirst, load the project after, and load a project without the machine before the trial ends.The branch also merges current
main:machines.md's muted-trig line keepsmain's new START bullet and adds the--raisesentence; the recipes name the mergedbuild.py's hash, and the beta base and package rows are regenerated.🤖 Generated with Claude Code