Open firmware tools

Digitone II Mods

Tools for changing what your Digitone II can do — built by reading the firmware, measuring it, and writing down what turned out to be wrong. Everything here rebuilds and re-verifies an image before it will hand it to you.

Read this before you flash anything. These tools produce firmware images. They do not send anything to an instrument, and they never will — putting an image on your device is a step you take deliberately, with your own eyes open.

Prove your way back first. The Early Start-up Menu can reflash stock firmware over MIDI. Do that once, with an unmodified image, before you flash a modified one. If that route does not work on your device, nothing here is safe to use. Back up your +Drive first as well.

Which mods combine

Every pair of mods, tried in both orders on stock 1.11 and generated by dnfw mods matrix, so this table cannot drift from the tools. ✓ combines in either order; ✓* in one order only, which dnfw mods apply uses or refuses; ✗ cannot be combined. Hover a cell for the reason. None of these pairs has been flashed together yet. Each tool page repeats its own mod's row, and below is how the check works.

arpmodesarpplocksbootscreenfxmodlfo4lfowavesmidiarpmoddestsongguardtransientswaverider
Arpeggiator SHUF and RAND arpmodes—✓✓✓✓✓✓✓✓✓✓
Arpeggiator p-locks arpplocks✓—✓*✗✓✓✓✓✓✓✓
Boot screen bootscreen✓✓*—✓✗✗✓✓✓✓✓
LFO modulation of the FX fxmod✓✗✓—✓*✓✓✓✓✓✗
A fourth LFO lfo4✓✓✗✓*—✗✓✓*✓✓✗
New LFO waveforms lfowaves✓✓✗✓✗—✓✓✓✓✓
Arpeggiator on MIDI tracks midiarp✓✓✓✓✓✓—✓✓✓✓
More modulation destinations moddest✓✓✓✓✓*✓✓—✓✓✓
Song guard songguard✓✓✓✓✓✓✓✓—✓✓
FM drum transients transients✓✓✓✓✓✓✓✓✓—✗
Waverider, a sixth machine waverider✓✓✓✗✗✓✓✓✓✗—

Available now

FM drum transients

transients Confirmed on hardware

Replace the factory FM DRUM transient bank with your own samples — 34 slots, each a short percussive hit. Drop in audio and the tool builds the combined bank and a signed firmware image for you.

Open the Transient Swapper →

Runs entirely in your browser — no install, no command line, nothing uploaded. There is a command-line version below if you prefer it.

Slots
34
Each
4,800 samples — exactly 100.0 ms at 48 kHz, 16-bit mono
Input
In the browser tool, any audio your browser can play — mixed to mono, resampled to 48 kHz and fitted to the slot for you. The command-line version takes 16-bit WAV.
Touches
Section 7 (the audio DSP image) only — no code, no lengths, no key material
Tested
Extracting the factory bank and writing it straight back produces a byte-identical image, and rebuilds pass 21 of 21 integrity checks
# hear what is in there now
dnfw mods extract firmware.syx --mod transients -o factory/

# swap in your own — sorted order, 00.wav first
dnfw mods apply firmware.syx --mod transients --from my_hits/ -o modded.syx

# --prepare onset-aligns each input to the slot and fades its end
dnfw mods apply firmware.syx --mod transients --from my_hits/ -o modded.syx --prepare

Getting a transient out of an ordinary sample

A slot is 100 ms of percussive attack, and most samples are neither. Two different problems, worth keeping apart:

So the route for an arbitrary sample is: run it through transientsplit, keep the transient stem, then hand that to --prepare. We link rather than bundle — it is someone else's tool, it works, and duplicating it would only make a worse copy.

Tuning it per sample

--prepare finds the attack and keeps a few milliseconds before it. One number cannot be right for every sound — a sharp click wants almost none, a soft or swelling attack wants more or the front gets cut off — so it is adjustable, and adjustable per file rather than per bank.

Drop a prepare.csv next to your samples:

# file, lead_ms, start_ms
kick.wav,    6,
snare.wav,    , 120
rim.wav,   0.5,

lead_ms adjusts the automatic guess. start_ms replaces it — the window begins exactly there, for when the part you want is not the first attack: the second hit of a flam, a tail on its own, a sample whose useful moment is 300 ms in. Files you do not list use --lead-ms, which defaults to 3.

A filename in the CSV that is not in the folder is an error, not a shrug — a typo that silently does nothing would be worse than being told.

Confirmed on a Digitone II. An image with marker samples at five known slots was flashed, and every marker played back from the TRAN parameter. That settles both open questions at once: these bytes are the FM drum transients, and the whole chain — locate, extract, replace, re-sign, flash — works end to end.

Still worth knowing: the bank's location, format, entry length and count are measured, not documented by Elektron, so a future OS release could move them. The mod resolves the address through the boot stream when it runs and refuses an image whose layout it does not recognise, rather than trusting a stored constant.

More modulation destinations

moddest Confirmed on hardware

Thirteen per-voice parameters ship closed to modulation. This opens them, so an LFO can reach SYN trig and envelope-reset, key tracking, the amp envelope delay and mode, and portamento.

Open the Destinations tool →

Runs entirely in your browser — no install, no command line, nothing uploaded.

Opens
SYN ATRG ARST BTRG BRST PHRT KSA KSB1 KSB2, Amp DEL MODE RSET, Portamento PTIM PORT
Changes
13 bytes — one per parameter, in section 3 (the control CPU)
Touches
No code, no lengths, no key material, no audio
Tested
Flashed 2026-09-12: all thirteen appear as LFO destinations and modulate
Combines
With Arpeggiator SHUF and RAND, Arpeggiator p-locks, Boot screen, LFO modulation of the FX, New LFO waveforms, Arpeggiator on MIDI tracks, Song guard, FM drum transients, Waverider, a sixth machine; in one order only with A fourth LFO (moddest must be applied first). See the compatibility table
# both mods on one image, in one command
dnfw mods apply firmware.syx --mod moddest --mod transients --from my_hits/ -o modded.syx

The global effects are a different gate, and they now have their own mod. Chorus, Delay and Reverb were in the same hardware test and none of them appeared: for those the gate is the enumeration, not this mask, so flipping it changes nothing. That enumeration is what FX Modulation opens. Master is still out — its destination codes go above 127 and the firmware widens that byte as signed.

LFO modulation of the FX

fxmod Confirmed on hardware

Stock firmware offers an LFO a hundred destinations and every one is inside the voice. This adds the machine's global effects: twenty-four Chorus, Delay and Reverb parameters in the DEST list, chosen by name, modulated per track.

Open the FX Modulation tool →

Runs entirely in your browser — no install, no command line, nothing uploaded.

Adds
Chorus DPTH SPD HPF WDTH DEL REV VOL, Delay TIME X WID FDBK HPF LPF REV VOL DEL, Reverb PRE DEC FREQ GAIN HPF LPF VOL REV
Changes
23 places in section 3 — two bounds, two hooks, seven jsr targets, ten record masks, one name pointer, and 128 bytes of new code in a free run. Nothing appended, no length changes
Global
These are the machine's one Chorus, Delay and Reverb, so every track's LFO can aim at the same one and they add up. That is what "global" means, not a fault
Tested
Flashed 2026-09-23: an LFO aimed at Delay Feedback Gain moves the feedback, responding to DEP and SPD
Combines
With Arpeggiator SHUF and RAND, Boot screen, New LFO waveforms, Arpeggiator on MIDI tracks, More modulation destinations, Song guard, FM drum transients; in one order only with A fourth LFO (fxmod must be applied first); not with Arpeggiator p-locks (both use the same code cave); Waverider, a sixth machine (waverider refuses after fxmod: 0x400dc02a (slot_to_id: saves d2, d1 = 100, a0 = slot) is not stock; this mod is for unmodified Digitone II 1.11). See the compatibility table
dnfw mods apply firmware.syx --mod fxmod -o modded.syx
# with the per-voice destinations and the new waveforms
dnfw mods apply firmware.syx --mod fxmod --mod moddest --mod lfowaves -o modded.syx

A naming fix rides along. Stock firmware has no short name for the Chorus group in its own group → name table; the slot holds the out-of-range fallback, which reads ERR. Nothing showed it before, because nothing ever drew that group's name. This mod points the slot at CHR, the short name Chorus's own Mix Vol. record already carries, and leaves Reverb and Delay alone.

A fourth LFO

lfo4 Confirmed on hardware

The Digitone II has three LFOs per track and an empty fourth page under [MOD]. This fills it with a fourth LFO that behaves like the other three: the same controls, the same DEST browser, the same waveforms.

Open the LFO4 tool →

Runs entirely in your browser — no install, no command line, nothing uploaded. Apply it last: build FX Modulation or Modulation Destinations first, then load their download.

Adds
A fourth page under [MOD] with its own SPD MULT FADE DEST WAVE SPH MODE DEP
Plays
Modulates on every voice, so polyphonic tracks and tracks that move between voices are modulated too
Keeps
Its settings are stored with the sound by SAVE PROJECT, and survive a power-cycle even without a save, like any stock parameter
Changes
204 places in section 3, and 23.7 KB appended to it: a start-up loader, the compiled C that runs LFO4, and a copy of the parameter table with ten new records. The table is rebuilt from your own firmware file when the mod is applied, so none of Elektron's data ships with it
Combines
With Arpeggiator SHUF and RAND, Arpeggiator p-locks, Arpeggiator on MIDI tracks, Song guard, FM drum transients; in one order only with LFO modulation of the FX (fxmod must be applied first); More modulation destinations (moddest must be applied first); not with Boot screen (both need the start-up hook and the appended area); New LFO waveforms (both need the start-up hook and the appended area); Waverider, a sixth machine (both use the same code cave). See the compatibility table
dnfw mods apply firmware.syx --mod lfo4 -o modded.syx
# with the per-voice destinations: moddest's opened masks carry into LFO4's table
dnfw mods apply firmware.syx --mod moddest --mod lfo4 -o modded.syx

Exactly the tested build. LFO4 is C code, compiled ahead of time. The browser tool and the command line apply the same bytes, those of the build that was tested on the instrument, checked byte for byte when it is packaged.

LFO waves

lfowaves Confirmed on hardware

Seven new LFO waveforms after RAND: a stepped staircase, a pulse with variable width, coloured noise with a loop length, a trapezoid with adjustable edges, and three wavetables. Each draws its own shape on the LFO page, and the knob that was SPH is renamed for what it does. Swap any of the three wavetables for your own WAV wavetable.

Open the LFO Waves tool →

Runs entirely in your browser — no install, no command line, nothing uploaded.

Adds
STEP (STPS), PULS (WDTH), NOIS (TYPE), TRAP (SLOP), WTB1 WTB2 WTB3 (POS)
Wavetables
Ours: basic shapes, harmonic sweep, vowels — or yours: a WAV wavetable (Serum/Vital style) or a JSON table, reduced to 7 frames of 32 points
Changes
33 small edits in section 3 and 2.7 KB of data after its end, copied to RAM at start-up
Tested
Flashed 2026-09-17: boots; all seven waves work on audio and MIDI tracks, with their shapes and labels
Combines
With Arpeggiator SHUF and RAND, Arpeggiator p-locks, LFO modulation of the FX, Arpeggiator on MIDI tracks, More modulation destinations, Song guard, FM drum transients, Waverider, a sixth machine; not with Boot screen (both need the start-up hook and the appended area); A fourth LFO (both need the start-up hook and the appended area). See the compatibility table
# ours, or replace wavetable 2 with your own
dnfw mods apply firmware.syx --mod lfowaves --wavetable 2=my_table.wav -o modded.syx

Arpeggiator on MIDI tracks

midiarp Confirmed on hardware

Stock firmware hides the ARPEGGIATOR on MIDI tracks. This opens the menu and plays the arp out over MIDI: trigs and held keys arpeggiate on the track's MIDI channel with the same MODE, SPD, RNG, N.LEN, LEN, step mask and note offsets a synth track uses.

Open the MIDI Arpeggiator tool →

Runs entirely in your browser — no install, no command line, nothing uploaded.

Adds
The ARPEGGIATOR menu and arp playback on MIDI tracks; arp off is stock
Changes
7 small edits and one block of new code inside section 3; nothing appended, no length changes
Tested
Flashed 2026-09-17 and captured from MIDI out: offsets, velocity, step timing, and N.LEN from 1/32 to 1/4 within a millisecond; no stuck notes
Combines
With Arpeggiator SHUF and RAND, Arpeggiator p-locks, Boot screen, LFO modulation of the FX, A fourth LFO, New LFO waveforms, More modulation destinations, Song guard, FM drum transients, Waverider, a sixth machine. See the compatibility table
dnfw mods apply firmware.syx --mod midiarp -o modded.syx
# several at once
dnfw mods apply firmware.syx --mod lfowaves --mod moddest --mod midiarp -o modded.syx

Arpeggiator SHUF and RAND

arpmodes Confirmed on hardware

The firmware names eight arp modes and offers five. This adds two of the missing ones as real modes: SHUF plays every note in the range once per cycle, in a new order each cycle, and RAND picks a random note from the range on each step. CHRD stays hidden.

Open the Arp Modes tool →

Runs entirely in your browser — no install, no command line, nothing uploaded. A sound saved in SHUF or RAND opens with its arp OFF on stock firmware.

Adds
SHUF and RAND after CYCL in the ARPEGGIATOR MODE menu; SPD, LEN, N.LEN, the step mask and note offsets work as in the other modes
Changes
8 edits in section 3, 374 B: two code caves (352 B), the arp step's dispatch and five MODE bounds. It uses 2,320 B of unused RAM at run time; nothing appended, no length changes
Tested
Confirmed on the instrument 2026-09-26; gated in the emulator first (both modes, the MODE menu, boot)
Combines
With Arpeggiator p-locks, Boot screen, LFO modulation of the FX, A fourth LFO, New LFO waveforms, Arpeggiator on MIDI tracks, More modulation destinations, Song guard, FM drum transients, Waverider, a sixth machine. See the compatibility table
dnfw mods apply firmware.syx --mod arpmodes -o modded.syx
# with the arp on MIDI tracks
dnfw mods apply firmware.syx --mod midiarp --mod arpmodes -o modded.syx

Boot screen

bootscreen Confirmed on hardware

Your own mark in the start-up animation, scattered by the intro's tunnel the way the logo is: held still, or flashing against its inverse and speeding up before it settles. Bring any picture; it is fitted to the 128 × 64 screen in your browser.

Open the Boot Screen tool →

Runs entirely in your browser — no install, no command line, nothing uploaded.

You choose
The mark (ours, or any picture, with a threshold), still or flashing with its timing, and the tunnel's density
Changes
Two hooks and 200 bytes of code in section 3, and about 2 KB of data after its end, copied up at start-up
Tested
Flashed 2026-09-17: a flashing mark built through this mod booted and played; the page and the command line produce the same bytes
Combines
With Arpeggiator SHUF and RAND, LFO modulation of the FX, Arpeggiator on MIDI tracks, More modulation destinations, Song guard, FM drum transients, Waverider, a sixth machine; in one order only with Arpeggiator p-locks (bootscreen must be applied first); not with A fourth LFO (both need the start-up hook and the appended area); New LFO waveforms (both need the start-up hook and the appended area). See the compatibility table
dnfw mods apply firmware.syx --mod bootscreen --boot-image mark.pgm --boot-invert -o modded.syx

LFO shape bench

bench A design tool, not a mod

Every LFO shape, stock and LFO Waves, drawn on the instrument's own one-bit screen and swept across the knob that shapes it. Write a formula, see it exactly as the firmware will play it, and download it as a wavetable for LFO Waves.

Open the LFO Shape Bench →

How mods stay compatible

The aim is that you can pick several mods and apply them together. That only works if each one can say, in advance, exactly which bytes it writes.

So every mod declares its extents — section, offset, length — before it changes anything, and applying a set checks every pair for overlap. Two mods that write disjoint bytes can be combined; two that collide are refused with the exact overlapping range named.

In the browser, each tool page applies one mod. To combine them, build on one page and load the downloaded file into the next. Every mod checks the bytes it is about to replace are still stock, so a page refuses an image where another mod already wrote the same place instead of writing over it. LFO Waves, Modulation Destinations and the MIDI Arpeggiator chain in any order, with the same result as the command line.

This is the weakest useful guarantee, deliberately. Disjoint bytes do not mean two mods make sense together — they could write different regions and still fight over the same feature. Byte-range overlap is the part that can actually be checked, so it is the part that is enforced, and the limit is stated rather than glossed over.

Which pairs combine is the table at the top of this page, and each tool page shows its own mod's row of it.

Two rules every mod follows:

Researched, not yet built

Work that has been measured far enough to know roughly what it costs. Status here means what is known, not what is promised.

IdeaWhere it stands
More LFO destinations Shipped twice 13 per-voice destinations were opened by a mask edit, and the 24 global FX destinations by a second mod that opens the enumeration as well. Master is what is left, and it needs destination codes above 127.
FX settings per pattern Costed Parameter locks are bound to a track by construction, so a pattern-wide FX lock needs storage the format does not have yet. Possible, but it means extending storage rather than flipping a flag.