Skip to content

Tone+FX 4.0b

Choose a tag to compare

@DigiAlchemydsp DigiAlchemydsp released this 20 Oct 17:07
· 3 commits to master since this release

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.elemod Digitone mk1 / Keys 1.43 core-dn1-4.0.elemod
tonefx-4.0b-os1.44.elemod Digitone mk1 / Keys 1.44 core-dn1-4.0-os1.44.elemod
tonefx-4.0b-dt.elemod Digitakt mk1 1.53 core-4.0.elemod
tonefx-4.0b-dt-os1.54.elemod Digitakt mk1 1.54 core-4.0-os1.54.elemod

Install the matching core (elekloader provides it), tick the core and tonefx,
set the OS version tag and BUILD FIRMWARE; flash with Transfer. Or use
tools/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.md in the repository.