Firmware

op-z-sysex

Hype27/100

Unofficial OP-Z SysEx documentation and cross-platform Python tooling

op-z-sysex is custom firmware for the Teenage Engineering OP-Z, by @kmorrill. Open source under MIT, 6 stars on GitHub.

forTeenage Engineering OP-Z·by@kmorrill

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

Downloads
0
Stars
6
Forks
0
Commits
2
Last commit
Get the source

No release files yet. Build from source.

MIT· kmorrill/op-z-sysex·downloads come from the creator’s GitHub releases

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

OP-Z SysEx

Unofficial, reverse-engineered documentation and cross-platform Python tooling for communicating with the Teenage Engineering OP-Z over its app SysEx, StateSync, serial-tunnel, and SysEx file-transfer protocols.

The core package uses only the Python standard library. Live MIDI access is optional and uses mido plus python-rtmidi on desktop platforms.

The material was extracted from device-backed OP-Z research. Claims use a consistent evidence vocabulary: device-proven, decoded, observed, inferred, and unknown. Start with docs/coverage.md for the capability boundary.

Unofficial. This project is not affiliated with or endorsed by Teenage Engineering. OP-Z is a trademark of Teenage Engineering. Writing malformed state can corrupt a project. Back up first, use a disposable project, verify every write by fresh readback, and preserve the original bytes for rollback.

Documentation

DocumentCovers
SysEx app protocolFrame envelope, handshake, request/response IDs, and StateSync
File transportFile-session framing, manifests, chunks, pull/push, verification, and rollback
Project-global formatThe 568-byte $0C state and saved-chain layout
Pattern editingProject-bank notes, locks, components, sound, and routing mutations
MIDI configuration$0F/$10 flow and the 292-byte settings map
StateSyncLive-state messages, sequencing, ACKs, and rejection boundaries
CoverageEvidence levels, safety boundary, public-data policy, and open questions

See docs/README.md for the full index.

Install

python3 -m pip install .            # offline codecs and editors
python3 -m pip install ".[device]" # + cross-platform MIDI I/O

The opzsysex package includes:

  • TE packed-7 framing, zlib payloads, and an incremental MIDI/SysEx parser;
  • StateSync queries and bounded frame constructors;
  • project-global and 16-pattern-bank editors that preserve untouched bytes;
  • the 292-byte MIDI configuration codec;
  • file-transfer upload/download state machines and sync-job manifests;
  • guarded $66 serial-tunnel framing;
  • optional mido device transport with exact port matching and timeouts.

Tools

# Decode one frame without touching a device
python3 tools/decode_sysex.py --hex "f0 00 20 76 01 0f f7"

# List MIDI ports or issue one documented read-only query
python3 tools/device_query.py --list-ports
python3 tools/device_query.py identity
python3 tools/device_query.py midi-config

# Apply bounded edits to a user-supplied checkpoint; never overwrites its input
python3 tools/edit_project.py --in global.bin --out changed.bin tempo 125
python3 tools/edit_project.py --in global.bin --out changed.bin chain 0 0 1 2 3

# Build a file-transfer manifest offline
python3 tools/file_manifest.py sample.aif \
  --device-path samplepacks/MySample.aif

Additional Python tools under tools/ prepare OP-Z sampler AIFFs, edit slot maps, and analyze synthetic or user-supplied evidence. WAV and AIFF preparation is standard-library-only; other audio input formats optionally use ffmpeg.

Tests

python3 -m unittest discover -s Tests -p 'test*.py'
python3 -m unittest discover -s Tests/ToolingTests -p 'test*.py'

All fixtures are generated during the tests. The repository contains no stock projects, factory content, project backups, audio, firmware, app binaries, or raw hardware captures.

Public evidence policy

evidence/ contains human-written summaries only. Machine-generated reports, private paths, raw bytes, captured traffic, audio, samples, backups, and device or firmware dumps are excluded. See SOURCE_MANIFEST.md.

Acknowledgements

Special thanks to the OP-Z community researchers behind opzdoc, z-po-project, and libopz, including leddy231's hardware-write fork. Their published observations and implementations established much of the public baseline that this project verifies and extends.

See ACKNOWLEDGEMENTS.md for the complete source shoutout and THIRD_PARTY_NOTICES.md for applicable notices.

License

MIT — see LICENSE.