octa-bt-pt

by bryantysinger·Tool

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

Updated 1 month ago
octa-bt-pt
Preview picture from GitHub

About

A parameter default patch tool for the Octatrack. Choose the starting values of the effects and the default FX1 and FX2 effects in a web interface, and it builds a patched OS 1.40C from your own copy.

Highlights
  • Effect parameter defaults for new projects
  • Default effect assignment for FX1 and FX2
  • Fix for the LO-FI AMF multiplication bug
  • Version-stamped .bin (CF card) and .syx (MIDI) output, verified against the stock file's hash

What you need
Your own stock OS 1.40C, Python with Streamlit, and a Mac: the setup scripts are written for macOS, Windows needs WSL.

Good to know
It patches values, not code. Only OS 1.40C is accepted, any other file is refused. Read docs/FLASHING.md and the Startup Menu recovery path before flashing.

README

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.

Pictures in the README load from GitHub.

Language
Python
License
MIT License
Stars
11
Forks
1
Created
08-22-2026
Last commit
1 month ago

Added by Neutron on Yesterday · History (1 version)




User Profile Send Private Message E-mail Find all posts Find all threads Mod Tools Admin Tools