Tool

octa-bt-pt

Hype25/100

Tool for patching Octatrack firmware, focused on default values when a new project is created

octa-bt-pt is a tool for the Elektron Octatrack and Elektron Octatrack MKII, by @bryantysinger. Open source under MIT, 11 stars on GitHub.

forElektron Octatrack,Elektron Octatrack MKII·by@bryantysinger

Unclaimed. Is this yours? Sign in with GitHub as @bryantysinger to claim it.

Downloads
0
Stars
11
Fork
1
Commits
4
Last commit
Get the source

No release files yet. Build from source.

MIT· bryantysinger/octa-bt-pt·downloads come from the creator’s GitHub releases

4
Commits
0
Releases
4 commits and 0 releases in the last year
Activity · last 12 months

octa-bt-pt

No Elektron firmware is included in this repository. make os downloads your own official copy from Elektron directly; every patch is verified against that file's exact hash before anything is applied. Supports OS 1.40C only — a hash mismatch on any other version is refused, not silently patched.

macOS only, for now. The build/setup scripts (Makefile, elektron-firmware-tool compilation) assume a Unix environment. Windows isn't supported without WSL. The Streamlit UI itself is plain Python and would run anywhere; it's the setup tooling around it that's Mac-shaped right now.

A parameter default patch tool for the Elektron Octatrack (OS 1.40C).

Pick the values you want for effect defaults, the AMF mpysu→mpyuu bug fix, and the FX1/FX2 default-effect assignment in a web UI, and generate a flashable patched OS image from your own copy of the official firmware. This tool patches values, not code — see patch_tool/registry.json for exactly what's exposed and why.

⚠️ Flashing a modified OS can leave your unit unusable until you recover it, and puts your warranty in question. Nothing here is endorsed by, supported by, or affiliated with Elektron. You flash entirely at your own risk. Read docs/FLASHING.md (or your unit's manual, §8.5.2 and the Startup Menu MIDI recovery path) before you need it, not after.


Quick start

make setup       # build elektron-firmware-tool (pinned commit, patched)
make os          # download your own copy of the official Elektron OS
make recon       # extract the section this tool patches
make streamlit   # launch the parameter picker UI -- creates its own .venv on first run

In the UI: change whatever parameters you want, download patch_spec.json from the sidebar, then:

make generate SPEC=~/Downloads/patch_spec.json   # writes patches/9000_streamlit_generated.py
make patch-image                                  # applies it, packages it, verifies the round trip

Output lands at out/OCTATRACK_PATCH001.bin (copy to the root of your CF card, then PROJECT → OS UPGRADE → [YES]) and out/OCTATRACK_OS1.40C_PATCH001.syx (MIDI upgrade path, also your recovery file format if you ever need the Startup Menu's MIDI UPGRADE).

Bump PATCH_BUILD on every subsequent flash so the version string on the unit maps back to a specific build:

make patch-image PATCH_BUILD=002

make help lists every target.


How it fits together

patch_tool/     Streamlit UI. Reads registry.json only -- no dependency on
                the firmware binary or its hash. Outputs a diff-only
                patch_spec.json (only what you actually changed).
tools/          generate_streamlit_patch.py turns patch_spec.json into a
                patches/*.py file. patchlib.py / master_patch.py apply,
                verify, and list registered patches against a real image.
patches/        Populated by `make generate`. One generated file
                (9000_streamlit_generated.py) covering everything the UI
                touched -- slot defaults, the AMF fix, FX1/FX2 defaults.
scripts/        setup.sh builds elektron-firmware-tool (pinned commit).
                fetch-os.sh downloads the official OS. recon.sh extracts
                the section every patch targets.

registry.json documents, per effect parameter: its legal range, the raw↔displayed-value conversion (plain, offset, bipolar, or a named function for the two irregular cases), and whether it's independently hardware-confirmed. Nothing is exposed as a labeled control unless its behavior was checked against a real unit.


Third-party tooling

elektron-firmware-tool (mischa85) does the actual .syx container inspection/repacking. MIT licensed, no Elektron firmware included. make setup clones and builds it locally, pinned to a specific commit (see scripts/setup.sh) with one small patch applied (tools/elektron-firmware-tool.patch) for full version-string writes and container-emit support.


License

MIT, covering this repository's own code. It does not extend to Elektron's firmware, which is not distributed here, or to elektron-firmware-tool, which carries its own MIT license in its own repo.