Firmware modules and developer SDKs for Elektron instruments.
Independent and unofficial. Not affiliated with, endorsed by or supported by Elektron.
For Octatrack modules, write DSP effects in DSP56300 assembly or playback and system patches in ColdFire assembly, with Python manifests describing their controls, placement and compatibility. Source, documentation and module metadata live together in this repository.
Experimental SDK. Scaffolding and metadata checks are ready to use. Native builds require a locally prepared toolchain; portable setup and hardware qualification remain incomplete. See the SDK guide and verification status.
Flashing risks. Custom firmware can leave your device unusable, cause data loss, affect warranty coverage and prevent future official updates. Recovery is not guaranteed. Back up projects and samples, keep the original OS and read the flashing and recovery procedure first. Flash at your own risk.
Do not share firmware images. Original and generated
.bin/.syximages contain Elektron's copyrighted firmware. Keep them on your own device; share configuration JSON and properly licensed module sources instead.
Third-party copyright notices and full licence terms are preserved in the SDK notice bundle and included in the published app and compiled module artifacts. See component provenance.
The independent Modwerk API/backend is source available under Elastic License 2.0, which restricts providing its substantial functionality as a hosted or managed service to third parties. The browser frontend remains GPL-3.0-or-later; SDKs, modules and third-party components retain their respective licences. See licence scope and the platform licensing audit and limits. Earlier GPL revisions retain their GPL rights.
Requires Git, Node.js 24 and Python 3.10+. Clone the repository, or your fork when contributing:
git clone https://github.com/repeat98/modwerk.git
cd modwerk
npm ci
npm run module:new -- my-effect --kind dsp --author your-github-loginUse --kind coldfire for a CPU module. Open sdk/octabam/modules/my-effect/:
engine.asm DSP source (unit.s for ColdFire)
manifest.py Native controls, placement and compatibility
octamod.module.json Version, descriptions, credits and evidence
verify.py Replace with module-specific behavior checks
README.md Usage, controls and limitations
TESTING.md Commands, results and tested revision
LICENSE Licence and attribution
media/ Original or properly licensed captures
The scaffold is untested: choose an unused effect ID for DSP modules and replace the deliberately failing verification gate. It does not enter the catalog automatically.
The whole process, including porting from octabam or elekloader, is in Add or port a module. For the native code, follow Writing a module, using Character for a DSP example or Repitch for ColdFire. Keep native controls and module metadata synchronized, and record actual measurements in TESTING.md.
Run these from the repository root:
npm run modules:generate
npm run check
npm run modules:check -- --base origin/mainThese validate metadata, version changes and repository code; they do not compile or qualify your native module. Native compilation needs CMake, the patched DSP assembler/disassembler and GNU m68k-elf tools described in the SDK guide. Record native behavior, resource and hardware evidence separately.
For updates, increase the module's semantic version for every code change (documentation and media edits do not need one; see CONTRIBUTING), and update its pin in sdk/catalog.json if listed. New catalog entries need approved scope, engine integration and native parity/rejection evidence.
Open a pull request with source, documentation, test results, attribution and licence declarations. Owner merge approves the version. Read CONTRIBUTING.md before submitting.
| Need | Start here |
|---|---|
| Add, port or update a module | Add or port a module |
| SDK layout and native verifiers | SDK README |
| Native module declarations | Writing modules |
| Memory and compatibility | Placement |
| Metadata and version rules | Module contract |
| Testing and evidence | Native testing · Verification status |
| Web app and deployment | App development · Architecture decisions |
Built on octabam, with its MIT licence, component credits and pinned provenance retained. Firmware-dependent work uses your own original OS 1.40C locally; never commit or upload firmware, extracted routines/tables or generated firmware images.