About
- [One finger press to enable perform kit, no [FUNC] needed
- track levels survive leaving it
README
Digitakt II perform mods
Two elekloader mods for PERFORM KIT mode on the Digitakt II, OS 1.17. Use either one, or both together.
| mod | what it does |
|---|---|
| perform-direct | [PRESET] alone toggles PERFORM KIT, quicker to reach while playing live; [FUNC] + [PRESET] opens the PRESET/KIT menu |
| perform-levels | the track levels you leave PERFORM KIT mode with stay; every other parameter goes back to the pattern's kit, as stock |
On a unit (Digitakt II, OS 1.17): perform-levels works, and perform-direct's key swap works (an earlier version, which also had an on/off row in PERSONALIZE). The two together have been linted and built, not yet run on a unit.
PERFORM KIT mode, stock
From the Digitakt II manual (OS 1.17, 10.10): in PERFORM KIT mode, changes to the kit are not auto-saved, and kits are not reloaded when you change patterns, so your tweaks carry over. [FUNC] + [PRESET] toggles the mode. When you leave it, the pattern's own kit loads again and every tweak is gone, track levels included.
Install
You need elekloader (the app, the web page, or the command line) and the
stock OS file, Digitakt_II_OS1.17.syx, from Elektron. Download the
.elemod files from this repository's
latest release:
perform-direct-*.elemod, perform-levels-*.elemod, or both.
- Every mod needs elekloader's Digitakt II core. Until an elekloader release
includes it, the release here carries it too:
core-1.0.elemod. Add it with the mods. - In elekloader, add the stock file and the
.elemodfiles, then build. - On the command line:
python -m elekloader.patch --stock Digitakt_II_OS1.17.syx \
--mod core-1.0.elemod \
--mod perform-direct-1.0.elemod \
--mod perform-levels-1.0.elemod \
--out perform.syx --version PB10It prints verified: ... and WROTE perform.syx. Send perform.syx to the
unit with Elektron Transfer. To go back, send the stock OS file the same way.
How they work
perform-direct (perform.c) handles core's ev_key event. For
[PRESET]'s key events (key 7) it flips the "[FUNC] held" flag (bit 2 of the
event's flags), so each combination does what the other one did.
perform-levels (levels.s, levels.c) has one site of its own:
- The stock toggle is 0x40064aec. Turned on, it copies the pattern's kit into a spare kit, slot 0x80 (0x40035e12), and plays that one. Turned off, it selects the pattern's kit again (0x40036cba).
- The hook. The off path starts at 0x40064ba6 with
move.l $98(a2),-(sp) ; jsr (a3). The site replaces those two instructions with ajsrtopl_off, which does their work and callspl_keep(kits, d2). - The copy.
pl_keepcopies the 16 track-level words (kit + 0x14) from slot 0x80 into the pattern's kit. If any changed, it calls the kit collection's +0x5c(kits, slot, 0), as the firmware does after its own kit copies. The select that follows then loads those levels.
The levels go to the pattern that is active when you leave PERFORM KIT mode. Only the 16 track levels are kept: pattern volume, send FX and everything else go back.
Checked in digikit's emulator (perform-levels, 4 Oct 2026): a cold boot passes every stage, as stock does. With PERFORM KIT on, the perform kit was written directly (the emulator applies no encoder turn to a kit), then PERFORM KIT was turned off:
- Stock: the pattern's kit kept its levels.
- With the mod: the pattern's kit took the perform kit's levels, and only those.
Build
You need an elekloader checkout that has mods/core-dt2, and m68k binutils
and gcc (Homebrew's m68k-elf-* work).
ELEKLOADER=~/code/elekloader ./build.sh Digitakt_II_OS1.17.syxThis writes dist/core-1.0.elemod, dist/perform-direct-1.0.elemod and
dist/perform-levels-1.0.elemod, lints the three together, and prints
their sha256.
No firmware goes in this repository. The .elemod files hold the mods'
code and refer to stock bytes by position; elekloader fills those in from
each user's own stock file. They are attached to releases, never committed.
Release
- Bump
versionin themod.jsonof each mod that changed. - Run
./build.sh, then build a firmware with all three files and check it on a unit. - Tag
vX.Y, then attach the files indist/to a GitHub release:gh release create vX.Y dist/*.elemod. - For elekloader's mod shop, add one item per file to elekloader's
web/catalog.json(repo,tag,file,device: "digitakt-mk2",sha256; the core with"kind": "core") in a pull request.
A later OS version (1.18, ...) means finding every address again. It goes
under ports in each mod.json (elekloader's docs/ADAPTING.md, 3.10).
Licence
GPL-2.0-or-later (LICENSE), as elekloader. Both mods started as examples in elekloader.
Pictures in the README load from GitHub.
What's New
For Digitakt II OS 1.17.
- perform-direct-1.0.elemod: [PRESET] alone toggles PERFORM KIT; [FUNC] + [PRESET] opens the PRESET/KIT menu.
- perform-levels-1.0.elemod: the track levels you leave PERFORM KIT mode with stay; every other parameter goes back to the pattern's kit, as stock.
- core-1.0.elemod: elekloader's Digitakt II core, which both need, built from irpina/elekloader#38 until an elekloader release includes it.
Build with elekloader and your own stock Digitakt_II_OS1.17.syx (see the README). No firmware is in these files.
Discussion
From the forum. Replies you write here are posted in the thread.- Language
- C
- License
- GNU General Public License v2.0
- Stars
- 0
- Forks
- 0
- Created
- Yesterday
- Last commit
- 1 hour ago

