Repository navigation
Tiempos 0.1.0-experimental: time left on all eight tracks (USB only) - #1096
Conversation
Draft of a ColdFire runtime module: hold CUE and press MIDI for one screen with every audio track's time left, measured from each voice's play speed. - Read the trim start and end at voice +0x28/+0x2c (+0x30 is 0 on a playing Static voice, read in the emulator) and count from the trim start. - English column notices (ELAPSED, TOTAL); one UI claim, key:CUE+MIDI. - README lists the stock-flow change (CUE + MIDI no longer switches to MIDI tracks while installed). - TESTING.md: pinned-toolchain build, 13 host checks, and emulator evidence (MKI panel, development base): the gesture and keys, removal, and three 64-bar tracks at 100/120/140 BPM shown within a second of the expected times at project tempos 120 and 140. No hardware results yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
README: USB-only limit, the CUE + MIDI line kept, and a track that has not played yet shows empty. TESTING: the base the MKI ran (24a0ed57, built from the local site at 976c6ca), two trials of 225a0170 (totals of a whole, trimmed and Flex track, tempo change, keys, as reported), and the DSP stall after USB DISK MODE that the unit's log recorded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…loses, MKI evidence Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…alogue Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks Diego, this is a really complete first PR: the MKI lifecycle with a kept power cycle, the stopwatch checks and the photos are what I asked for in #953. On your two questions:
Two text fixes, since they show on the module page:
Generated by Claude Code |
…view) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks! Both text fixes are pushed (21f6b7d): the limitations and the README now match TESTING.md. I'll merge main once your builder fix lands, rebuild the package with npm run octatrack:module-packages, and run install, Keep and Undo on my MKI with the new package. |
|
Thanks, Diego, the text now matches TESTING.md. One thing to fold into your push after the builder fix: a track with a negative RATE plays backwards, and as I read Generated by Claude Code |
…and MKI results Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d catalogue Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@imdantelo the builder fix is on Next steps on
Generated by Claude Code |
# Conflicts: # sdk/catalog.json # src/catalog/compatibility-pairs.json # src/catalog/module-documents.json # src/engine/assets/octatrack-module-packages.json
…a417 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ogue Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Updated after #1231:
One thing for you: |
|
Thanks Diego, signed speed is a nice way to handle reverse playback, and thanks for finding the test. #1301 is on |
# Conflicts: # sdk/catalog.json # src/catalog/module-documents.json # src/engine/assets/octatrack-module-packages.json # src/engine/elekloader/module-set.test.ts
|
main merged again (dd3ae53, with Bar LED and Stem Rec). The conflicts in
{
"kind": "owner-approved-update",
"id": "tiempos",
"version": "0.1.0-experimental",
"approvedBy": "repeat98",
"approvedOn": "<date>",
"ownerStatement": "<your words>",
"reason": "Tiempos runs only on the UI task (tick, draw, key, encoder hooks) and has no MIDI path or frame-interrupt work. Its draw cost is an emulator estimate scaled by pixel count, and the MKI LOAD readings are in TESTING.md. No static bound, no cfmeter capture and no MIDI flood.",
"waived": ["chip-worst-case-cycles", "current-build-hardware"],
"sourceSha256": "45e53efc39e6aba499d312e8e0b26995d2110a6657cbff8f06dc3aaaa9c1f035"
}The other failures |
|
Thanks Diego, Tiempos is merged and live: https://modwerk.app/module/tiempos/ I added |
|
Thanks a lot for the reviews and for adding the approval record. Happy to see it live. |
Tiempos 0.1.0-experimental (new module, Octatrack, USB only)
A screen with the time left on all eight audio tracks, opened with CUE + MIDI from any page. It works out each voice's real playback speed from how fast its play position moves, so timestretch, repitch and tempo changes are included without knowing the sample's BPM. It only reads OS memory: it writes no stock code or data, patches no sites, and has no DSP code. Follows #953, where the owner closed the card question: since #993 a C runtime module with
sourcesin its package row has no card form.Author: @imdantelo (Diego Antelo Barba). Code written with Claude Code.
What is in this PR
sdk/octabam/modules/tiempos/, moved fromsdk/drafts/tiempos/and declared like Beat Slicer:manifest.py, averify.pygate (host test plus a byte-for-byte package rebuild), README, TESTING,evidence/performance.json, and two LCD photos inmedia/.runtime.jsonandunit.sremoved.build.py tiempos.cbinds the core's four hooks by symbol name (module_tick,module_draw,module_key,module_enc), and the package comes out byte-identical without them.src/engine/assets/octatrack-module-packages.json, asdk/catalog.jsonentry,src/community/module-changelogs/tiempos.json, and the regeneratedmodule-documents.jsonandcompatibility-pairs.json.Owner decisions needed
ABI 4 publication. The package is ABI 4: only the core's four hooks, with no event words and no sites.
module_packages.capabilitiesaccepts only ABI 6–9, sonpm run octatrack:module-packagesstops with "Not a supported published runtime ABI". As a result the package row has nosha256or public file yet,verify.pyreports[FAIL] the package row is not completed yet, andtest_published_module_packages_rebuild_byte_for_bytefails.usb-only.ts,module:doctor("USB package … a C runtime module, no card form") andmodules:compatall accept the module. Should ABI 4 be added to the published set, or should Tiempos declare an event or table it does not need to reach ABI 6+? Changing the shared check would be its ownFix:PR; nothing in this PR touches a check.Performance waivers.
perf:auditfails three rows that only an owner approval can waive, as with Beat Slicer:cfmeteror frame-guard figure: my unit runs the released base, which has nomodwerk_costand answers no development requests.Here is what we have instead.
Test evidence (details in TESTING.md)
-Werror.24a0ed57(built from a local checkout as the owner asked in Proposal: Tiempos, time left on all eight tracks (Octatrack, USB only) #953), driven over USB.0506a245…, which is this PR's exact package:set a=1 [31282ae5]) and CUE + MIDI opened Tiempos → Undo back to the empty set.225a0170…, the previous package with the same drawing and timing code, checked against a stopwatch:225a0170; the drawing code is identical in0506a245.npm run module:doctor -- tiempos: green except the three performance rows (decision 2); the board claim is the author's until 2026-11-13.npm run pr:ready: not Ready only because of decision 1.What the guides lacked or got wrong
These are not fixed in this module PR, which ships alone. They can be a separate
Docs:/Fix:PR if you want them:docs/ADD_A_MODULE.mdandmodule:doctortreat a C runtime module with only the core hooks as publishable, but the publication pipeline refuses its ABI (decision 1). Nothing warns about this beforeoctatrack:module-packagesruns.modwerk_costorcfmeter. It doesn't say what to do when your unit runs a released base. Here the emulator with a development base was the only way to measure the hook cost.pr:readyrunsmodules:pairswith the systempython3. On macOS that is 3.9, which crashes onint | Noneindsp_dynload/package.py. It needs Python ≥ 3.10 onPATH, and the error doesn't say so.modules:checkcatches that, butdocs/MODULE_UI_CAPTURES.mddoesn't mention it for photographs.🤖 Generated with Claude Code