Tone-FX
Loud82/100A master effect suite for the Elektron Digitone mk1 / Digitone Keys (OS 1.43 and 1.44) and, via a community port, the Elektron Digitakt mk1 (OS 1.53 and 1.54)
Tone-FX is a mod for the Elektron Digitone and Elektron Digitakt, by @DigiAlchemydsp. Open source under GPL-2.0, latest release v4.0c (October 2026), 18 stars on GitHub.
forElektron Digitone,Elektron Digitakt·by@DigiAlchemydsp
Unclaimed. Is this yours? Sign in with GitHub as @DigiAlchemydsp to claim it.
tonefx-4.0c-os1.44.elemod· 151 KB· +4 files
GPL-2.0· DigiAlchemydsp/Tone-FX·downloads come from the creator’s GitHub releases
v4.0cTone+FX 4.0cLatest5 files
Tone+FX 4.0c — permanent PITCH → DELAYS → STEREO chain + WASH CPU
A performance release on the 4.0 line. The master chain order is now permanent, and the WASH macro is cheaper. Four OS files, two hosts: Digitone mk1 / Keys (OS 1.43, 1.44) and, through gdeo607's port, the Digitakt mk1 (OS 1.53, 1.54).
Install
Each file is the whole suite for one OS; none includes the core.
file device OS required core tonefx-4.0c.elemodDigitone mk1 / Keys 1.43 core-dn1-4.0.elemodtonefx-4.0c-os1.44.elemodDigitone mk1 / Keys 1.44 core-dn1-4.0-os1.44.elemodtonefx-4.0c-dt.elemodDigitakt mk1 1.53 core-4.0.elemodtonefx-4.0c-dt-os1.54.elemodDigitakt mk1 1.54 core-4.0-os1.54.elemodInstall the matching core (elekloader provides it), tick the core and
tonefx, set the OS version tag and BUILD FIRMWARE; flash with Transfer. Or usetools/build.ps1/tools/build.sh. No firmware is included.New in 4.0c
Permanent chain order
ring → EQ → crush → fold → PITCH → DELAYS (WRMZ/GRAINZ) → STEREO → ceiling → meter 50 55 57 60 61 62 63 64 65The WAVE insert is split into two permanent passes (
digiwave_pitch_render_out/digiwave_stereo_render_out) with the delay between them, so the DELAYS module is always after PITCH and before STEREO — not conditional on the active page. Only the group selected by the current page runs; the other pass costs a single branch.WASH CPU
While WASH is on it now:
- forces the WRMZ to a static read (
MOD = 0), so no interpolation; - skips the DC blocker (the feedback saturator still bounds the loop), with the DC state reset on enter/leave to avoid a transient;
- the L/R wet mix uses
bx_mul15x2(two eMAC MACs back to back) in WOB and WRMZ/GRAINZ.
The DC-skip and
MOD = 0are scoped by the per-engine macro capture/restore, so turning WASH off restores the delay exactly as it was.Upgrading
- Digitone: the 4.0b per-pattern store (MIDI track 4 at
pattern+0x1BB0,"DGX4", CH 16) is unchanged. Reserve MIDI track 4 on channel 16. - Digitakt: the mod-owned RAM table is unchanged.
Verified
- Build/lint/patch: all four link as
core 4.0 > tonefx 4.0c,imports nothing, patch byte-exact against each stock file. - Emulator: the DN chain resolves 61/62/63 (pitch, delay, stereo); the macro
values and the per-engine capture/restore were checked in 4.0b, and the
DC-skip/
MOD=0path compiles and links in the same handlers.
See
docs/PATTERN-STORAGE.mdandCHANGELOG.mdin the repository.- forces the WRMZ to a static read (
v4.0bTone+FX 4.0b5 files
Tone+FX 4.0b — per-pattern store on one reserved MIDI track + macro rework
A maintenance release on the 4.0 line. It fixes the reported jumping FX values / moved MIDI channels / PAGES by moving the per-pattern store out of the stock MIDI-track blocks, and reworks the WASH and RADIO macros. Four OS files, two hosts: Digitone mk1 / Keys (OS 1.43, 1.44) and, through gdeo607's port, the Digitakt mk1 (OS 1.53, 1.54).
Install
Each file is the whole suite for one OS; none includes the core.
file device OS required core tonefx-4.0b.elemodDigitone mk1 / Keys 1.43 core-dn1-4.0.elemodtonefx-4.0b-os1.44.elemodDigitone mk1 / Keys 1.44 core-dn1-4.0-os1.44.elemodtonefx-4.0b-dt.elemodDigitakt mk1 1.53 core-4.0.elemodtonefx-4.0b-dt-os1.54.elemodDigitakt mk1 1.54 core-4.0-os1.54.elemodInstall the matching core (elekloader provides it), tick the core and
tonefx, set the OS version tag and BUILD FIRMWARE; flash with Transfer. Or usetools/build.ps1/tools/build.sh. No firmware is included.Per-pattern store (Digitone)
The FX params no longer live in the pattern struct's MIDI-track blocks for channels 1-3 (
pattern+0x1040/+0x1410/+0x17E0). A configured MIDI track writes its channel/page there, so the stock data and our values corrupted each other — the jumping FX values and moved MIDI channels / pages.All 51 params are now packed (1-7 bits each) into one reserved MIDI track: MIDI track 4 (
pattern+0x1BB0, magic"DGX4"), on MIDI channel 16. Only that one track is touched, so MIDI tracks 1-3 (channels 1-15) and the synth tracks are never read or written. The params save and reload with the pattern (switch, reload, project save).Reserve MIDI track 4 on channel 16 and leave it alone — that track is the store. Channels 1-15 are unaffected.
Per-pattern store (Digitakt)
Stays a mod-owned RAM table (
dn_tab[128][48]in.bss, keyed by the current kit). No stock memory is read or written, and it no longer competes for the kit spare that other mods use. RAM-only (as before).Macros
- WASH: WAVE WOB only (75% depth / 30% rate at full) plus the WRMZ delay's MIX and FB; the graphic is a full-screen Haze dot cloud.
- RADIO: EQ tilt (low → 0, high → 127 at full) + TRSH fold drive + SRR-only crush at a lower amount.
- Capture/restore is now per engine, so an engine a macro does not drive is left live: CRUSH / REDUX is no longer tied to WASH.
Upgrading from 4.0a
- Digitone: 4.0a patterns carry the old
"DGX1/2/3"magic in the MIDI-track blocks. 4.0b never reads them; a fresh pattern starts from the live values. Re-save the pattern/project after setting the FX you want as the base. - Digitakt: 4.0a's kit-spare blocks are ignored; the new RAM table starts from the live values.
Verified
- Build/lint/patch: all four link as
core 4.0 > tonefx 4.0b,imports nothing, patch byte-exact against each stock file. - digiemu (
dn1-4.0a,dt1-4.0a): the old store addresses carry no magic; the CH-16 block carries"DGX4"; edits are saved; values are isolated per pattern and reload on return. Macro values checked live (WASH 95/38 + WRMZ 96/64; RADIO 0/127 + SRR 40; CRUSH stays live under WASH).
See
docs/PATTERN-STORAGE.mdin the repository.v4.0aTone+FX 4.0a - DELAYS (WRMZ/GRAINZ) + CPU pass5 files
Tone+FX 4.0a — DELAYS (WRMZ / GRAINZ) + CPU pass
The Tone+FX suite (now twelve pages) plus a new buffer-FX module: a dedicated mono delay line that serves two modes — WRMZ (a modulated delay) and GRAINZ (a cloud of three drifting taps on the same line) — edited on one DELAYS page. Four OS files, two hosts: the Digitone mk1 / Keys (OS 1.43, 1.44) and, through gdeo607's community port, the Digitakt mk1 (OS 1.53, 1.54).
This is the first release built on the ToneFX-BufferFX line, so it also carries a CPU/headroom pass over the whole suite (see New in 4.0a).
Digitakt mk1 (community port by gdeo607) is now on 4.0a too — the same DELAYS module and CPU pass, plus its own fixes: encoder travel, the master-page cycle limited to the master-FX pages, and a repacked per-pattern store. Source mirrored under
DIGITAKT PORT/.Install
Each file is the whole suite + DELAYS for one OS; none includes the core.
file device OS required core tonefx-4.0a.elemodDigitone mk1 / Keys 1.43 core-dn1-4.0.elemodtonefx-4.0a-os1.44.elemodDigitone mk1 / Keys 1.44 core-dn1-4.0-os1.44.elemodtonefx-4.0a-dt.elemodDigitakt mk1 1.53 core-4.0.elemodtonefx-4.0a-dt-os1.54.elemodDigitakt mk1 1.54 core-4.0-os1.54.elemodInstall the matching core (elekloader provides it), tick the core and
tonefx, set the OS version tag and BUILD FIRMWARE; flash the.syxwith Transfer. Or usetools/build.ps1/tools/build.sh. No firmware is included.New in 4.0a
DELAYS — WRMZ / GRAINZ (one delay line, two modes)
A DELAYS page (kind 11) after the FX chain. D switches the mode; the rest of the encoders edit the active mode's six parameters. True-bypasses when off (the line is untouched). Mono wet, mixed into both channels (the dry stays stereo — widen externally).
- WRMZ — a modulated delay: TIME, FB (feedback, capped at 0.80), TONE (one-pole damping), MOD (depth), RATE (0.1–3.0 Hz wow/flutter), MIX.
- GRAINZ — a grain-ish cloud: three drifting, interpolated taps off the same line — DENS (drift), SIZE (tap spacing), PIT (parked), SPR (spread), FB, MIX.
Per-pattern store
DGX3v1 (15 params); MIDI CC 80–87. The suite's output ceiling and meter still run last, so the chain is ring → EQ → crush → fold → wave → WRMZ → ceiling → meter.CPU / headroom pass
- eMAC mode switch hoisted to once per block (
digictl_macsr_begin/_end,ev_render_outorder 49/74) instead of once per handler. On hardware an eMAC-off A/B idled lower but ran worse while processing, so the eMAC is kept. - Wave lines s16 (were 24-bit) with the interpolation done in the line's scale — halves the wave delay lines' DDR traffic and RAM.
- Wave
wv_flushspike fixed — the one-time whole-line clear (2564 stores) on a mode change is gone (only FLAN's own feedback line is cleared); the per-mode worst case now equals its p99 (e.g. SHFT worst +9,984 → +5,491 cycles/block). - UI redraw cap — animated pages redraw at ~5 Hz (was ~10), and a page whose section is off is static.
- Size-optimised build (
-Os):.run 34,398 → 26,018(−24 %), for i-cache.
Tested
- Both builds compile clean and
imports nothing— Digitone 1.43 / 1.44 (.run 26018,.bss 47246, 11 sites) — each links ascore 4.0 > tonefx 4.0aand patches byte-for-byte against its own stock file. - Emulator (Digitone
dn1): boots, settles,dsp_running=2; all twelve pages incl. DELAYS; live diag (WRMZ + GRAINZ, real SSI renders) 0 faults;_probe_mix0 clips. The OS 1.44 build is patch-checked; digiemu cannot settle 1.44. - CPU ledger and the A/B write-ups: source repo
docs/OPTIMIZATION-ROUND.md§10–§12.
Known issues
Same as 3.5r — PAGE can still jump some FX levels, PITCH can fire on a note-off, SHFT is deliberately lightweight, PERFORM trig LEDs do not light. The DELAYS page's GRAINZ PIT control is parked (the taps read at rate 1.0). Full, current list in the README's "Known bugs / future fixes".
v3.5rTone+FX 3.5r - Digitone 1.43/1.44 + Digitakt 1.53/1.54 (eleven pages, UI pass)5 files
Tone+FX 3.5r — OS 1.44 support, two page trees, UI pass
An eleven-page master FX suite — RING · FOLD · TILT · CRUSH · PITCH · STEREO · PERFORM · WASH · RADIO · DESTROY · SPACE — plus the output meter and the animated TONE+FX boot splash. One release now covers four OS files on two hosts: the Digitone mk1 / Digitone Keys (OS 1.43, 1.44) and, through a community port, the Digitakt mk1 (OS 1.53, 1.54).
Install
Each file is the whole suite for one device + OS; none includes the core.
file device OS required core tonefx-3.5r.elemodDigitone mk1 / Keys 1.43 core-dn1-4.0.elemodtonefx-3.5r-os1.44.elemodDigitone mk1 / Keys 1.44 core-dn1-4.0-os1.44.elemodtonefx-3.5r-dt.elemodDigitakt mk1 1.53 core-4.0.elemodtonefx-3.5r-dt-os1.54.elemodDigitakt mk1 1.54 core-4.0-os1.54.elemodThe Digitakt variants are gdeo607's port (source and details in digi1_mods, mirrored here under
DIGITAKT PORT/); special thanks to gdeo607, who did most of the work on the Digitakt port.New in 3.5r
- OS 1.44 support (Digitone). The firmware addresses are
#ifndef *_ADDRdefaults (1.43) that theports.1.44entry overrides throughcflags/defsym; it carries the eleven 1.44 patch sites. 1.44 is hardware-verified (digiemu cannot settle OS 1.44, so it is not emulator-tested). - Digitakt mk1 port (community, by gdeo607): the same 3.5r suite for
OS 1.53 and 1.54 (
ports.1.54), eleven pages incl. the macros; only the render path, page model, keys, CC map and store differ per device. - Moved to elekloader 0.5.0 + core 4.0 (the mods' RAM base is now
0x43EC0000, 1.25 MB).imports nothingon all four builds. - Two page trees. The main scroll (LEFT/RIGHT) is the stock master pages then our FX pages in play order FOLD · CRUSH · RING · STEREO · PITCH · TILT. UP (or DOWN) opens the macro tree: PERFORM · WASH · RADIO · DESTROY · SPACE. PERFORM is no longer in the main scroll.
- FUNC + an encoder turn snaps that parameter to 0 % / 100 %.
- UI pass: full-height sliders, a one-line caption at the bottom row that shows the live value while that encoder is moved (20 frames) with the value centred on its middle digit; the mode name centred over the title; sliders + labelled readouts in the rightmost third. The output meter moved to x 108 / 113 and is drawn on the CRUSH and FOLD pages.
- CRUSH: the sample-rate-hold mode SR is renamed REDUX.
- PITCH gains a G mix (dry/wet) — WOB/SHFT now have a blend like the flanger. STEREO: FLAN shows four sliders (SPD, DEP, MIX, FB).
- Macro cue: a page driven by a macro page draws a framed MACRO box where an off page draws OFF.
- Per-pattern store: Digitone
"DGX1"v10 (28 params) +"DGX2"v2; Digitakt"DX"v8 (35 params, packed).
Tried and reverted (no shipped change)
Fusing the master passes into one
CORE_AUDIO_INSERTcallback was bit-correct once the core's Q1.31 in/out was converted, but on hardware it raised CPU/DSP load ~15 %, so it was dropped. Write-up in the source repo'sdocs/OPTIMIZATION.md§12.3.Tested
- All four builds compile clean and
imports nothing— Digitone 1.43 / 1.44 (.run 28889,.bss 19454, 11 sites) and Digitakt 1.53 / 1.54 (.run 25795,.bss 11100, 4 sites) — each links ascore 4.0 > tonefx 3.5rand patches byte-for-byte against its own stock file (the 1.43 main OS is byte-identical to 3.5p). - Emulator (Digitone
dn1): boots, settles,dsp_running=2; all eleven pages and both page trees present; the flanger/pitch lines verified independent; the per-pattern store round-trips. The OS 1.44 build is hardware-verified instead (digiemu cannot settle 1.44). The Digitakt port's emulator suite keeps its documented 3.5r gap (its unicorn test still names the pre-3.2bdigiwave_depth). - Hardware: the 3.2 line was stress-tested on two Digitone mk1 units; 3.5r is a new build — please report anything you find.
Known issues
- PAGE can still jump some FX levels (the stock-event store guard does not cover every path).
- PITCH can fire on a note-off from a PHASER trig.
- SHFT quality: the pitch shifter is deliberately lightweight.
- PERFORM trig LEDs do not light yet.
The full, current list is in the README's "Known bugs / future fixes".
- OS 1.44 support (Digitone). The firmware addresses are
v3.5pTone+FX 3.5p - macro pages, performance pass, flanger & microtiming fixes1 file
Tone+FX 3.5p — macro pages, a performance pass, flanger & microtiming fixes
An eleven-page master FX suite for the Digitone mk1 — RING · FOLD · TILT · CRUSH · PITCH · STEREO · PERFORM · WASH · RADIO · DESTROY · SPACE — plus the output meter and the animated TONE+FX boot splash. Everything ships as one elemod.
Install
One file is the whole suite:
tonefx-3.5p.elemodbundles the boot splash plusdigictland the FX mods into a single format-2 mod, so it combines with your other mods. It does not include the core: installcore-dn1-2.0a.elemod(required; elekloader provides it) plus anything else you use.New in 3.5p
- Four macro pages — each is one vertical slider on the right (A = on/off,
B–H = amount) with a per-page animated graphic on the left:
- WASH — wobble (WAVE WOB) + sample-rate reduction (CRUSH SR) + an EQ tilt.
- RADIO — a deep band cut (EQ low/high) + TRSH fold drive + CRUSH.
- DESTROY — fold + bit-reduction + ring modulator.
- SPACE — WAVE stereo width.
- WAVE on/off is split (
digiwave_onfor PITCH,digiwave_sonfor STEREO), so the two groups toggle independently. - Per-pattern store is now block 1
"DGX1"v10 (28 parameters) plus a second block"DGX2"v1 (the macros): every page and every macro follows a pattern switch and travels with a project save. - OFF message box: any FX or macro page whose section is switched off draws a small framed OFF box, so a bypassed page is unmistakable.
- Redraw gating: animated pages redraw at ~10 Hz and static ones at ~4 Hz; leaving a page stops its redraw.
Fixes
- Flanger/pitch link: the FLAN, WOB and SHFT modes shared one delay line and the flanger wrote its feedback into it, so switching the flanger off left residue that distorted the PITCH block. FLAN now has its own delay line; the two can no longer interfere.
- Flanger never truly bypassed: the FLAN mix ramp stored the target instead of the ramped value, so switching it off restarted at full mix every block — a per-block flanger buzz. Fixed; FLAN now bypasses cleanly.
- MIDI-track microtiming / volume: the key and encoder handlers could stay armed after the master view was closed, so in the sequencer "hold a trig + LEFT/RIGHT" did not nudge the microtiming and encoder turns could leak. They now disarm the moment the master view closes.
Performance
A measured performance pass (friendly to busy patterns): the page graphics draw straight to the framebuffer instead of one firmware call per pixel; the output meter only scans while its page is up; block-constant branches in CRUSH/FOLD are hoisted; and the per-pattern store only fully compares every few UI ticks. The output ceiling (soft limiter) still runs on every block.
Tested
- Compiles clean (
.run 27475,.bss 19446, imports nothing); links with the core (RAM ~47.5 KB, flash spare ~1.68 MB). - Emulator (
dn1-3.5p): boots, settles,dsp_running=2; all eleven pages present (kinds=[16,15,17,0,1,2,3,4,5,6,7,8,9,10]); the flanger/pitch lines verified independent; the per-pattern store round-trips. - Hardware: the 3.2 line was stress-tested on two Digitone mk1 units; 3.5p is a new build — please report anything you find.
Known issues
- PAGE can still jump some FX levels (the stock-event store guard does not cover every path).
- PITCH can fire on a note-off from a PHASER trig.
- SHFT quality: the pitch shifter is deliberately lightweight; its grain history is shorter in 3.5p.
- PERFORM trig LEDs do not light yet.
The full, current list is in the README's "Known bugs / future fixes".
- Four macro pages — each is one vertical slider on the right (A = on/off,
B–H = amount) with a per-page animated graphic on the left:
v3.2bTone+FX 3.2b - separate WAVE pitch/stereo depths, split fold from crush1 file
Tone+FX 3.2b — separate WAVE pitch/stereo depths, split fold from crush
A seven-page master FX suite for the Digitone mk1 — RING · FOLD · TILT · CRUSH · PITCH · STEREO · PERFORM — plus the output meter and the animated TONE+FX boot splash. Everything ships as one elemod.
Install
One file is the whole suite:
tonefx-3.2b.elemodbundles the boot splash plusdigictland the FX mods into a single format-2 mod, so it combines with your other mods. It does not include the core: installcore-dn1-2.0a.elemod(required; elekloader provides it) plus anything else you use.New in 3.2b
- Each PERFORM pad now drives one engine, and the WAVE pitch and stereo depths are independent (previously they shared one depth and the fold/crush pads moved both amounts).
- WAVE has two depths (
digiwave_pdepth/digiwave_sdepth): the PITCH and STEREO pages, the PERFORM D/E encoders and CC 27 each edit only their own group. - Trigs:
1 2 9 10ring,3 4fold only,11 12crush only,5 6 13 14pitch,7 8 15 16stereo. Fold and crush have two pads each (intensities 2 and 4); the four-pad blocks keep 1–4. - Per-pattern store is now
"DGX1"v8 / 25 params; an older v7 block adopts the live values.digictl2.2.
CPU headroom
The Digitone shares its CPU/DSP between the FM voices and these effects, so leave headroom for the synth:
- Turn off the filter on tracks you are not using (set the track's filter type to 0) — an idle track's filter still costs CPU every block.
- A busy pattern has less CPU headroom: back off RING depth / FOLD amount / CRUSH / WAVE, and turn off the pages you are not using (each true-bypasses).
- The animated pages are for setting up. Their redraw costs CPU while the page is on screen, so dial the effect in and move on (press UP to the static PERFORM page, or go to any internal page). Leaving a DIGI page stops its redraw.
Tested
- Compiles clean (
.run 22722,.bss 25390, imports nothing); link byte-verified (sections 2/4/5/6/7/8; ~82 KB RAM spare, ~1.69 MB flash spare). - Emulator (
dn1-3.2b): boots, settles,dsp_running=2; all seven pages present (kinds=[16,15,17,0,1,2,3,4,5,6]). - Live-audio check of the pads: fold
0 -> 63and crush0 -> 63each move alone; pitch64 -> 79and stereo64 -> 111are independent; ring51 -> 70 -> 51. Store v8 and the MIDI-CC regressions pass. - Hardware: stress-tested on two Digitone mk1 units — in parallel and in series — over synths, drums, vocals and master tracks (including vinyl), on the 3.2 line.
Known issues
- PAGE can jump some FX levels (the stock-event store guard does not cover every path).
- PITCH can fire on a note-off from a PHASER trig.
- Microtiming on MIDI tracks: some step-1 trigs get locked and the LEFT/RIGHT microtiming arrows do not nudge them.
The full, current list is in the README's "Known bugs / future fixes".
v3.2aTone+FX 3.2a - PERFORM page (performance controls)1 file
Tone+FX 3.2a — PERFORM page (performance controls)
A seven-page master FX suite for the Digitone mk1 — RING · FOLD · TILT · CRUSH · PITCH · STEREO · PERFORM — plus the output meter and the animated TONE+FX boot splash. Everything ships as one elemod.
Install
One file is the whole suite:
tonefx-3.2a.elemodbundles the boot splash plusdigictland the FX mods into a single format-2 mod, so it combines with your other mods. It does not include the core: installcore-dn1-2.0a.elemod(required; elekloader provides it) plus anything else you use.New in 3.2a
- A new static page, PERFORM. Press UP from any of the six DIGI pages to reach it (UP again returns). It draws no animation, so it adds no CPU.
- One depth per FX block on the encoders: A RING depth, B FOLD amount, C CRUSH amount, D WAVE pitch depth, E WAVE stereo depth, F EQ low, G EQ high, H WAVE speed. Saved with the pattern like every DIGI control.
- The 16 trig keys are momentary performance pads, four blocks of four
increasing intensities: 1 2 9 10 ring, 3 4 11 12 fold+crush,
5 6 13 14 pitch, 7 8 15 16 pan. Hold a pad and it turns the block on
and ramps its depth up (to
base + (127 - base) * intensity / 4); release and it ramps back to the saved pattern value. A pad never writes the per-pattern store, so your saved values are always the resting position. - The per-pattern store is unchanged (
"DGX1"v7 / 24 params); no new MIDI CC. - Not yet done: the trig keys do not light yellow (planned follow-up).
CPU headroom
The Digitone shares its CPU/DSP between the FM voices and these effects, so leave headroom for the synth:
- Turn off the filter on tracks you are not using (set the track's filter type to 0) — an idle track's filter still costs CPU every block.
- A busy pattern has less CPU headroom: back off RING depth / FOLD amount / CRUSH / WAVE, and turn off the pages you are not using (each true-bypasses).
- The animated pages are for setting up. Their redraw costs CPU while the page is on screen, so dial the effect in and move on (press UP to the static PERFORM page, or go to any internal page). Leaving a DIGI page stops its redraw.
Tested
- Compiles clean (
.run 22596,.bss 25366, imports nothing); link byte-verified (sections 2/4/5/6/7/8; ~82 KB RAM spare, ~1.69 MB flash spare). - Emulator (
dn1-3.2a): boots, settles,dsp_running=2; all seven pages present (kinds=[16,15,17,0,1,2,3,4,5,6]). - Live-audio check of the pads: ring
51 -> 70 -> 51, fold/crush0 -> 31 -> 0; the per-pattern store and the MIDI-CC hook regressions pass. - Hardware: stress-tested on two Digitone mk1 units — in parallel and in series — over synths, drums, vocals and master tracks (including vinyl), plus a single unit. See the README's "Known bugs / future fixes" for the tracked follow-ups.
v3.1iTone+FX 3.1i — output ceiling, store guard, smoother ratios2 files
Tone+FX 3.1i — output ceiling, store guard, smoother ratios
A six-page master FX suite for the Digitone mk1 — RING · FOLD · TILT · CRUSH · PITCH · STEREO — plus the output meter and the animated TONE+FX boot splash. Everything ships as one elemod.
Install
One file is the whole suite:
tonefx-3.1i.elemodbundles the boot splash plusdigictland the FX mods into a single format-2 mod, so it combines with your other mods. It does not include the core: installcore-dn1-2.0a.elemod(required; elekloader provides it) plus anything else you use.New in 3.1i
- Output ceiling: a final soft limiter keeps the master mix below the 24-bit full scale (transparent below ~-2.5 dBFS, asymptotic max ~-0.7 dBFS), so a hot flanger-feedback / pitch-shift / drive setting cannot hard-clip. The flanger feedback write is clamped too.
- Stock OS events can no longer move a DIGI parameter. The per-pattern sync
now adopts its block only if it still carries the
"DGX1"magic — this fixes the reported TILT/EQ jumping when PAGE (or other keys) are pressed. - Bounds fix (encoder accumulator), and the pitch-shift ratio now glides.
Tested
- Compiles clean (
.run 20904,.bss 25270, imports nothing); link byte-verified (sections 2/4/5/6/7/8; ~86 KB RAM spare, ~1.69 MB flash spare). - Emulator (
dn1-3.1i): boots, settles,dsp_running=2; all six pages present. - Hardware: confirm the EQ-jump fix and that the ceiling is inaudible at normal levels.
v3.1hTone+FX 3.1h — WAVE two pages, true bypass, page art2 files
Tone+FX 3.1h — WAVE two pages, true bypass, page art
Tone+FX is now a six-page master FX suite — RING · FOLD · TILT · CRUSH · PITCH · STEREO — plus the output meter and the animated TONE+FX boot splash. Everything ships as one elemod.
Install
One file is the whole suite:
tonefx-3.1h.elemodbundles the boot splash plusdigictland the FX mods into a single format-2 mod, so it combines with your other mods. It does not include the core: installcore-dn1-2.0a.elemod(required; elekloader provides it) plus anything else you use.New in 3.1h
- WAVE split into two pages: PITCH (WOB / SHFT) and STEREO (FLAN / PAN / WIDE), each with its own mode over one shared delay engine. Flanger feedback capped at 75%.
- Click-free true bypass per section — each page's A off fades out and then stops using CPU (exact passthrough).
- Page art in the leftmost third, frameless, collapsing to a line at neutral. PITCH shows two vertical lines that wobble and intertwine.
- Per-pattern store
"DGX1"v7 (24 params), MIDI CC 20–31. - Fixes: Wobble/Flanger click (fractional, clamped, interpolated delay), Crush bit mapping (amount 0 = identity).
Tested
- Compiles clean (
.run 20528,.bss 25262, imports nothing); link byte-verified (sections 2/4/5/6/7/8; ~86 KB RAM spare, ~1.69 MB flash spare). - Emulator (
dn1-3.1h): boots, settles,dsp_running=2; all six pages present. - Hardware: first passes working (a Digitone mk1). CPU/DSP/dB headroom is not yet formally measured.
v3.0bTone+FX 3.0b2 files
Tone+FX 3.0b — TONE+FX boot splash
Tone+FX is now a three-page master FX suite — RING, FOLD, TILT — plus the output meter and an animated TONE+FX boot splash. The splash and the FX ship as one elemod.
Install
One file is the whole suite:
tonefx-3.0b.elemodbundles the boot splash plusdigictland the four FX mods into a single format-2 mod, so it combines with your other mods. It does not include the core: installcore-dn1-2.0a.elemod(required; elekloader provides it) plus anything else you use.Changes
- Boot splash (
tonesplash): an animated TONE+FX wordmark drawn at the intro, picking one of three animations at random each boot (accelerated particles, a laser trace, or a laser draw + spark bloom). Inert once the UI takes over. - Everything else is unchanged from 3.0a (three pages, fold modes, shelf EQ, meter, MIDI CC).
Tested
- Emulator (
dn1-3.0b-*): boots, settles,dsp_running=2; the intro (splash) runs clean. The 3.0a tests (screenshots, navigation, per-pattern store, MIDI-CC) still pass. - Hardware stress-tested over 3 days: PASS (a Digitone mk1).
- Boot splash (
v3.0aTone+FX 3.0a2 files
Tone+FX 3.0a — three pages, fold modes, shelf EQ
Tone+FX is now a three-page master FX suite: RING (ring modulator), FOLD (wavefolder with four fold modes plus an overdrive) and TILT (low/high shelf EQ), plus the output meter. The stock top status bar stays above every page.
Install
One file is the whole suite:
tonefx-3.0a.elemodbundlesdigictland the four FX mods into a single format-2 mod, so it combines with your other mods. It does not include the core: installcore-dn1-2.0a.elemod(required; elekloader provides it) plus anything else you use.Changes
- Three pages (
FUNC+LFO;LEFT/RIGHTor the on-screen< >rotate the whole master list): RING (A on/off, E depth, F frequency), FOLD (A on/off, D fold type, E/F/G/H amount) and TILT (A on/off, E low shelf, H high shelf). - Fold type is a continuous 0–127 knob spread over four modes — CLEAN (36% fold), MUD (full fold), DIST (36% fold + hard-clip overdrive) and TRSH (full fold + overdrive) — interpolated between modes and capped at CLEAN/TRSH.
- Meter moved to the FOLD page, fixed the stuck-at-0, and it is now on MIDI
CC
68. - MIDI CC now covers every FX parameter: RING
8/11/36, FOLD37/40/41, EQ67/69/96, meter68. - The per-pattern store is v5 (12 params).
Tested
- Emulator (
dn1-3.0a-*): boots, settles,dsp_running=2; the master page tree is[16, 15, 17, 0, 1, 2]. The screenshots, navigation, per-pattern store and MIDI-CC tests all pass. - Hardware pass pending.
- Three pages (
v2.3cTone+FX 2.3c2 files
Tone+FX 2.3c — per-voice filter removed
Tone+FX is now the master ring → EQ → fold chain plus the output meter, with two master pages. The experimental per-voice filter has been removed from the suite and will be replace by new per-track filter types.
Install
One file is the whole suite:
tonefx-2.3c.elemodbundlesdigictland the four FX mods into a single format-2 mod, so it combines with your other mods. It does not include the core: installcore-dn1-2.0a.elemod(required; elekloader provides it) plus anything else you use.Changes
- The
digifiltermod is gone. Tone+FX shipsdigimeter,digieq,digiring,digifoldanddigictlonly. The master pages are now DIGI FX (ring + meter) and DIGI FOLD / EQ — two pages, rotated with LEFT / RIGHT. - digictl 1.9 drops the DIGI FILTER page and the filter MIDI CCs;
CC97,CC100,CC101andCC103are free again. The per-pattern store is now 12 params (version 3). - The MIDI CC map is RING
8/11/36, FOLD37/40, EQ LOW67/69and EQ HIGH68/96. A CC move is saved with the pattern. - Encoder feel (from 2.3b) is retained: one step per detent, stock-like.
- Everything else is unchanged.
Tested
- Emulator (
dn1-2.3c-c763a782): boots, settles anddsp_running=2. The page tree is[16, 15, 17, 0, 1]— the two Tone+FX pages, no filter. The screenshots, per-pattern store and MIDI-CC tests pass (digiemu_fx_screenshots.py,digiemu_pattern_store.py,digiemu_midi_cc.py). Hardware pass
- The
v2.3bTone+FX 2.3b2 files
Tone+FX 2.3b — stock encoder feel
The DIGI FX page encoders now step one value per detent, matching the stock parameter controls.
Install
One file is the whole suite:
tonefx-2.3b.elemodbundlesdigictland every FX mod into a single format-2 mod, so it combines with your other mods. It does not include the core: installcore-dn1-2.0a.elemod(required; elekloader provides it) plus anything else you use.Changes
- digictl 1.8 — the DIGI FX / DIGI FILTER / DIGI FOLD-EQ encoders move one step per encoder detent (stock convention) instead of needing ~4 detents per step. The Digitone panel sends 4 wire counts per detent and the stock 0..127 params move one step per detent; the previous build divided by 16 — which is the encoder driver's dead-zone startup, not the step size — so a full 0..127 sweep took ~4x too many turns.
- The encoder driver's own fast-turn acceleration is unchanged (the flushed delta is clamped to ±30), so a fast turn still moves several steps.
- The MIDI CC control from 2.3a is included. The full CC map is in the README; a CC move is saved with the pattern.
- Everything else is unchanged from 2.3a.
Tested
- Emulator (
dn1-2.3b-abd64ee5): boots, settles anddsp_running=2. Encoder step measured live against the patched FREQ value:+4counts (= one detent) ->+1,+8->+2,+30(fast) ->+7, four+1->+1. The page and persistence tests pass (digiemu_digifilter.py,digiemu_pattern_store.py,digiemu_midi_cc.py,digiemu_fx_screenshots.py). - Hardware pass pending — the encoder feel should be confirmed on a unit.
v2.3aTone+FX 2.3a2 files
Tone+FX 2.3a — MIDI CC control
The DIGI FX now respond to incoming MIDI CC, like the stock parameters, so they can be played and sequenced from an external controller or DAW. A CC move is stored with the pattern, like a page edit.
Install
One file is the whole suite:
tonefx-2.3a.elemodbundlesdigictland every FX mod into a single format-2 mod, so it combines with your other mods. It does not include the core: installcore-dn1-2.0a.elemod(required; elekloader provides it) plus anything else you use.Changes
-
digictl 1.7 hooks the stock central CC router (
0x400ED94E). Only CC numbers the Digitone does not already use are taken:CC parameter CC parameter 8 RING depth 69 EQ LOW gain 11 RING on/off 96 EQ HIGH gain 36 RING rate 97 FILTER on/off 37 FOLD on/off 100 FILTER mode 40 FOLD amount 101 FILTER freq 67 EQ LOW on/off 103 FILTER reso 68 EQ HIGH on/off On/off switches at value 64; EQ gains are 0..127 with 64 = flat; FILTER mode maps the value to BP / BP2 / COMB / TRASH.
-
Everything else is unchanged from 2.2a.
Tested
- Emulator (
dn1-2.2f): the patched router path applies every CC and sets the pattern-store dirty flag (digiemu_midi_cc.py). The raw MIDI-receive path is hardware-validated — digiemu has no MIDI input model. - Real hardware: base suite stress-tested on a Digitone mk1 (2.2a); the CC feature itself should get a hardware pass.
-
v2.2aTone+FX 2.2a8 files
Tone+FX 2.2a — per-pattern settings, stock-scaled controls
The DIGI FX / FILTER / FOLD-EQ settings are saved per pattern, like stock parameters (they follow a pattern switch / reload and travel with a project save), and the RING/FOLD/EQ controls now use the stock 0..127 scale.
Packages
core-dn1-2.0a,digimeter-1.1,digieq-1.1,digiring-1.1,digifold-1.1,digifilter-1.0,digictl-1.6.Changes
- digictl 1.6 keeps the 17 FX parameters in a reserved block inside the saved pattern data. A fresh pattern adopts the current values; a pattern reload that rewrites the block is detected and adopted.
- Stock-scaled parameters: RING depth/rate, FOLD amount and EQ LOW/HIGH are now 0..127 (one step per notch), scaled inside the DSP, instead of the old large ranges. EQ centre 64 = flat; defaults: ring depth 51 / rate 6, EQ low 33 / high 111.
- Page fix: the DIGI FOLD / EQ page title no longer clips the top row, and
the leftover
MODreadout was removed (the LFO destination bridge stays parked, off by default). - No new key or encoder is taken.
Tested
- Real hardware (a Digitone mk1): stress-tested with the full suite — the build boots and holds up under long, busy patterns, and the per-pattern settings survive pattern switches, reloads and power cycles.
- Emulator (
dn1-2.2d, test tags 2.2a…2.2d): boots and settles,dsp_running=2; the master pages and live render run with 0 faults; the fold/EQ layout is clean; the settings persist per pattern (digiemu_pattern_store.py).
Known bugs / future fixes
- Slider behaviour (match the stock parameter widgets), encoder acceleration, per-parameter value readouts and consistent page titles/units.
- LFO destinations for the DIGI parameters remain parked (off, no page control).
- CPU/DSP load is the user's to manage on busy patterns.
v2.1hTone+FX 2.1h8 files
Tone+FX 2.1h — first suite release.
Packaged elekloader mods for the Elektron Digitone mk1 / Digitone Keys (OS 1.43): master ring, EQ, fold, a per-voice multimode filter, output metering and a three-page master UI.
package what core-dn1-2.0a.elemodthe required core (hook bus) — always install digimeter-1.1.elemodoutput level metering digieq-1.0.elemodmaster tone tilt (low / high) digiring-1.0.elemodmaster ring / tremolo (animated page) digifold-1.0.elemodmaster wavefolder (spiral display) digifilter-1.0.elemodper-voice BP / BP2 / COMB / TRASH (max 4 voices) digictl-1.3.elemodthe DIGI pages and all the controls Install
- Get elekloader and your own stock
Digitone_and_Digitone_Keys_OS1.43.syx(Elektron's download). elekloader builds the custom OS on your machine; no firmware is distributed here. - Add the stock
.syx, then install all seven.elemods. - Build, then flash the
.syxwith Elektron Transfer.
See
README.mdin the zip for the full install, use and recovery notes.Notes
- Emulator-tested (boot, settle,
dsp_running=2; UI + live-audio render, 0 faults). Not yet a hardware audio pass. - Load is yours to manage: the Digitone's CPU/DSP is shared between the internal FM voices and these effects; using all of them (especially COMB/TRASH on several voices) will stress it.
- Verify the package with
sha256sum -c SHA256SUMS.
Assets:
Tone+FX-2.1h.zip(the suite) and the individual.elemods.- Get elekloader and your own stock









