Skip to content
repeat98Public

About

Resources

Contributing

Stars

29 stars

Watchers

3 watching

Forks

Latest commit

 

History

1,412 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Modwerk logo

Modwerk

Firmware modules and developer SDKs for Elektron instruments.

Independent and unofficial. Not affiliated with, endorsed by or supported by Elektron.

Get started · SDK guide · Add or port a module · Contribute

Node.js 24 Python 3.10 or newer DSP56300 and ColdFire assembly

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 / .syx images 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.

Get started

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-login

Use --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.

Develop and validate

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/main

These 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.

Contribute

Open a pull request with source, documentation, test results, attribution and licence declarations. Owner merge approves the version. Read CONTRIBUTING.md before submitting.

Documentation

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.

About

Resources

Contributing

Stars

29 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages