Digi Expression for Elektron Digitakt
Pitch bend, aftertouch, the mod wheel, breath and velocity from MIDI IN play a MIDI track's synth and the Digitakt's own audio tracks, with each track's routings on an EXPRESSION page in SETTINGS.
Module version 0.13.0-experimental. Base firmware: 1.54.
About this module
Stock, the Digitakt passes the notes of an external keyboard through to the synth a MIDI track plays, but drops pitch bend, aftertouch and the mod wheel. Each track can now pass them on and route them: on the AUTO CHANNEL to the active track, and on a track's own TRACK CHANNEL to that track. A MIDI track with THRU ON adds them to its own PB, AT and MW (its knob, parameter locks and LFO), within the MIDI limits, on its CHAN out of MIDI OUT. An audio track bends its TUNE and moves parameters of its choice. Out of the box nothing is switched on, so a fresh install plays as stock. Each track's settings are on the EXPRESSION page: SETTINGS > EXPRESSION, YES, and TRK + trig picks the track. The settings are saved with the project as text files, and kept as presets (a 1-second push of knob A). For live playing: the live values are not recorded into the sequencer.
- Play a synth through a MIDI track with pitch bend, aftertouch, the mod wheel and breath, added to the track's own values.
- Route the wheel, aftertouch and velocity to any value the MIDI LFO reaches (PB, AT, MW, BC, CC VAL 1-8), or to any SRC, FLTR, AMP or LFO amount of an audio track.
- Two values on one CC number are merged into one, so the synth never jumps between them.
- Velocity sensitivity per track on what plays, live or recorded; the sequencer keeps the velocity as played.
- A stock-looking EXPRESSION page from SETTINGS that follows the active track.
How to use it
- Connect a keyboard to MIDI IN on the Digitakt's AUTO CHANNEL, and a synth to MIDI OUT.
- Select MIDI track A (TRK + trig 9), switch its CHAN on (SRC page, FUNC + knob A) and set the synth's channel.
- Open SETTINGS, go down to EXPRESSION and press YES, then turn knob A to set THRU ON.
- Play: pitch bend, aftertouch, the mod wheel and breath reach the synth with the notes.
- For an audio track: press TRK + its trig with the page up, then set BEND and the routes.
Controls
- BEND
- Audio track, knob A: OFF to 12.00 semitones of TUNE, in fine steps; FUNC + turn snaps to whole semitones. Default OFF.
- THRU
- MIDI track, knob A: ON adds the input's pitch bend, aftertouch, mod wheel (CC 1) and breath (CC 2) to the track's own PB, AT, MW and BC. Default OFF.
- V.SNS
- Knob B: 0-100 %, how much velocity counts in what plays, live or from the sequencer; 50 % plays 0-127 as 64-127, 0 % plays every note full. The sequencer records the velocity as played, so V.SNS can be changed afterwards. Default 100 %.
- MW / VEL / AT
- Knobs C, E, G: what the wheel, the velocity and aftertouch move. Audio track: an SRC, FLTR, AMP or LFO amount. MIDI track: the MIDI LFO page's list (PB, AT, MW, BC, CC VAL 1-8 on its SEL's CC number), then the track's own LFO Speed, Multiplier, Fade, Start Phase and Depth. VEL is the velocity of the last note the track played, live or from the sequencer. Default none.
- M.DEP / V.DEP / A.DEP
- Knobs D, F, H: -64.00 to +64.00, how far, as finely as the LFO page's DEP, in the stock LFO's scale. Default 0.
- PRESETS
- Knob A pushed for a second: LOAD, SAVE, RESET TO DEFAULT and SELECT DEFAULT, with 64 audio-track and 64 MIDI-track presets. UP/DOWN or LEVEL move, YES or a knob push chooses, NO goes back, a page key leaves. SAVE names a preset as SAVE PROJECT AS names a project, with the letter grid on FUNC. SELECT DEFAULT picks the preset new projects and RESET TO DEFAULT use (FACTORY: the mod's own defaults).
Compatibility notes
- Built for OS 1.54 only.
- Settings are saved per project slot as text files on the +Drive (/cfw/expression), not inside the project: copying a sound or track does not copy them (a preset does). Each file is written to /cfw/expression/_temp first; a broken file is skipped for its copy, then the defaults.
- Sends where OUTPUT TO says (MIDI OUT, USB or both), with the track's own values, through the MIDI tracks' own task.
- Not recorded: the sequencer never sees the live values; recorded notes keep their velocity as played.
- With Digi Slicer 1.0 KB of RAM is left: the two fit, with no room for a third mod of any size.
- Avoid a MIDI loop: a synth echoing MIDI OUT back into MIDI IN on the same channel feeds the mod's output back as input.
- Two values a MIDI track sends on one CC number are merged while anything live is aimed at them; the track's own value is the one that changed last.
- Writing a settings file holds the UI for a moment; the power-on file is written only while the sequencer is stopped and nothing has been played for 2 seconds.
Test evidence
Host unit tests (about 2.44 million checks, also under AddressSanitizer and UBSan, with 3,000 random broken files); the digiemu emulator on the firmware (MIDI-track sums and merging, saving and loading, the SETTINGS row and the page, the preset menu, heap and CPU use); a link check with every other Modwerk Digitakt module. Hardware: the full hwqual.py run on 0.12.4 over DIN and USB (TESTING.md); 0.13.0's SETTINGS row, factory defaults and power-on file passed on the unit (hwqual.py v013, 11 of 11).
Module source and documentation