digireel, image 1 from its README
1/7
Mod

digireel

Rising75/100

A time-warp pedal for the Digitone mk1's audio inputs, tape speed, reverse, hold and stutter: an elekloader mod (core-dn1 3.2)

digireel is a mod for the Elektron Digitone, by @irpina. Open source under GPL-2.0, 2 stars on GitHub.

forElektron Digitone·by@irpina

Unclaimed. Is this yours? Sign in with GitHub as @irpina to claim it.

Downloads
0
Stars
2
Forks
0
Commits
3
Last commit
Download v0.2

Betadigireel-0.2-os1.44.elemod· 132 KB· +6 files

GPL-2.0· irpina/digireel·downloads come from the creator’s GitHub releases

3
Commits
3
Releases
3 commits and 3 releases in the last year
Activity · last 12 months

DigiReel

A time-warp pedal for the Digitone mk1's audio inputs: the inputs go onto a tape that always listens, and a head plays it back at -2x to +2x, backwards included, in windows in time with the Digitone's tempo; the pitch follows the speed (TAPE) or stays apart from it (STRETCH); HOLD loops a window, TAPE STOP brings the tape to a stop, random events change the speed, the pitch or the direction or stutter on the beat, and a step slicer gates the result. DigiReel is an elekloader mod on fxkit (core-dn1 4.1).

Its MIDI CCs follow the Red Panda Tensor's published CC chart, so a controller set up for that pedal works with it too. DigiReel is not affiliated with Red Panda and uses none of its code.

DIGIREEL is an entry in core-dn1's Mod Menu (hold a track key). While it is the active effect DigiReel owns the audio engine, as DigiSwarm and DigiPrism do (fxkit's core_audio owner): the synths are silent, the Digitone's own effects are off, and what you hear is the inputs through the pedal. NO turns it off and gives the audio and the screen back. The sequencer keeps running, so PLAY, STOP and TEMPO still work and the clock can follow the Digitone's tempo. BYPASS (trig 16) passes the inputs through dry, with the tape's tail.

DigiReel is one of the pedals on the pedal shell (pedal.h, pedal_dsp.inc, pedal_ui.inc, pedal_tables.py, the same in each), which gives them the same page, keys, SETUP, TAP, BYPASS, CPU guard and project data, on fxkit.

DigiReel 0.2 is a beta (a pre-release). It is an effect on fxkit: a MIXER on AMP (the inputs' levels and pans, as loud as the Digitone's own input), two LFOs on the stock LFO page aimed at its controls, p-locks kept in the pattern (RECORD, then hold a trig and turn a control), and MIDI hands the screen to the stock UI for the MIDI tracks while it keeps playing. Presets are gone: the project keeps its controls, mixer and LFOs, and a project saved with 0.1 opens it at its defaults. 0.2 was tested on a Digitone mk1 by its author (built before the effects' rename, which changed only names); it was also checked in digikit's emulator (digiemu) on OS 1.43 and 1.44. Not yet run on a Digitone Keys. Its source is also in elekloader, as mods/digireel-dn1.

DIGIREEL in core-dn1's Mod Menu Page 1 Page 2 Page 3 The MIXER (AMP) LFO 1 (LFO), as the stock LFO page SETUP

The screenshots are from the emulator, which has no DMA timer 0, so the C at the top right (the render's share of each block) does not read true there.

Install

The easiest way is elekloader's web page: tick DigiReel and the + beside its Needs fxkit; the page takes the core it needs. To build it yourself you need:

  • elekloader from its main branch, with Python 3.9 or newer (see its README). DigiReel keeps 2 MB of buffers in the Digitone profile's bulk area, which the 0.4.0 app does not know: it refuses DigiReel.
  • This mod, fxkit and their core, from this repository's releases: digireel-0.2.elemod, fxkit-0.1.elemod and core-dn1-4.1.elemod for OS 1.43, or the three -os1.44 files for 1.44. DigiReel needs core-dn1 4.1 or newer and fxkit; every effect on fxkit (DigiSwarm, DigiPrism, DigiTide, DigiTriad, DigiReel, DigiHoard, DigiHalo) fits in one build with them.
  • The stock OS file: Digitone_and_Digitone_Keys_OS1.44.syx or ..._OS1.43.syx, from Elektron's Digitone downloads. elekloader recognises the file by its hash.

Build your OS on the command line (or in elekloader's window, run from source: + Install from file... the three files and tick digireel):

python -m elekloader.patch --stock Digitone_and_Digitone_Keys_OS1.44.syx \
    --mod core-dn1-4.1-os1.44.elemod --mod fxkit-0.1-os1.44.elemod \
    --mod digireel-0.2-os1.44.elemod \
    --out Digitone_OS1.44-digireel.syx --version RE02

--version is the 4 characters the unit will show. Flash the .syx with Elektron Transfer, as for any OS update: connect the unit over USB, select it in Transfer and Connect, drag the .syx onto Drop files here, and press YES on the unit. Don't turn it off until the upgrade is done.

Recovery: elekloader never changes the bootloader, so the stock OS file always restores the unit. Hold FUNC while powering on for the startup menu, and press TRIG 4 for OS UPGRADE. Then send the stock .syx with Transfer.

Opening it: hold a track key on its own for the Mod Menu, then pick DIGIREEL with its trig key (or YES). NO turns it off and gives the synths back.

0.2: on fxkit

From 0.2 DigiReel is an effect on fxkit (../fxkit-dn1), as every effect in the build is: one at a time is active. Its Mod Menu entry makes it the active effect and opens its page; while it is active it owns the audio, page or no page, and opening another effect's entry hands that one the audio.

keyon DigiReel's page
SYN1, SYN2, FLTRits three pages (page 1, 2 and 3)
AMPthe MIXER: IN L, IN R (the inputs' levels, as the stock mixer's: 32 unity, up to +24 dB), L PAN, R PAN (where each input sits), BAL, VOL, WDTH (the output's width)
LFOLFO 1, pressed again LFO 2: the stock LFO page (its knobs, WAVE and SPH as one wave, a turned knob's value under it), at the stock rates; turning DEST opens its list (DigiReel's controls and the mixer's), YES picks, NO closes
RECORDLOCK mode: hold a trig and turn a control, and that step has a p-lock of it (the title bar shows the 16 steps, filled where DigiReel has a lock); FUNC + a trig clears the step; PAGE the next 16 steps. RECORD again (or NO) leaves it
MIDIthe stock UI, for the MIDI tracks and the rest, with DigiReel playing on; its Mod Menu entry brings the page back
NODigiReel off: the synths again

The p-locks are the pattern's: they are kept in one synth track's lock table (SETUP's LOCK TRACK, T4 unless you pick another), saved and copied with the pattern, and play on their steps; that track should play nothing of its own (no notes, no arpeggiator) in a pattern with DigiReel's locks, or its trigs go astray. 0.1's presets are gone: the project keeps DigiReel's controls, mixer and LFOs (tag DTEN, 52 bytes).

The page

Drawn like the Digitone's own parameter pages: the tempo in the box at the top left, the page in the title bar, HOLD's state (a dot while it takes a window in, hollow while it waits for the beat, a play arrow while it loops), a square while the tape is stopped, or the direction, with the random event playing (R, or S, P, V, U: speed, pitch, reverse, stutter) and B while bypassed, and the output's meter on the left. LEFT and RIGHT, or PAGE, move between the pages; holding FUNC shows page 2; pushing a knob sets its default (a setting: its next value).

PageKnobs A-DKnobs E-H
1 ReelSPED: the speed, -2x (left) through a stop (middle) to 1x (96) and 2x (right); PTCH: -24 to +24 semitones (STRETCH only); TIME: the window, 1/32 to 2 bars in time, 30 ms to 4 s free; BLND: the dry against the tapeRAND: how likely a random event is at each point; GLID: how slowly the speed follows the knob (and TAPE STOP); TONE: dark (left) or thin (right); SLIC: the slicer's depth
2 SecondaryGRAN: STRETCH's grains, 20-150 ms; XFAD: the crossfade at a jump or a loop's seam, 2-40 ms; RSPD, RPCH: the random events' weightsRREV, RSTU: the same for reverse and stutter; WIDE: the tape's stereo width; OUT: the output level
3 ModesMODE: TAPE or STRT(ETCH); DIR: FWD, REV, ALT (back and forth); HOLD: MOM(entary) or LTCH (latching); CAPT: LAST (the window just played) or NEXT (the window from the press)QNT: HOLD on the next beat; PATN: the slicer's pattern, P1-P8; RAND: random events at each WIN(dow) or each BEAT
ControlOn DigiReel
SPEED, PITCH, BLEND, TIMEpage 1
HOLD (momentary or latching, LAST or NEXT)T1 (HOLD and CAPT on page 3)
ReverseT2: tap to flip the direction, hold for a momentary flip; DIR on page 3
Tape stopT3 held: the tape slows to a stop over GLIDE (in STRETCH a freeze: the grains hold the moment)
RANDOMT4: tap to turn the random events on or off; held, an event at every point
Tap tempotrig 15 (CLOCK becomes TAP)
Bypasstrig 16 (with the tail; SETUP's BYPASS: TRAILS or CUT)
Presetsnone from 0.2: the project keeps the pedal, and p-locks (RECORD) follow the pattern
TIME and SPEEDtrig 1-10: TIME's divisions, 1/32 to 2 bars; trig 11-14: SPEED -1x, 0.5x, 1x, 2x
SETUPYES opens SETUP: INPUT (STEREO, or MONO from input L), CLOCK (FREE, DIGITONE, TAP), BYPASS (TRAILS, CUT), MIDI CC (auto channel or any), CC CLOSED

How it plays

The tape holds 10.9 s and always records, bypassed too, so HOLD with CAPT LAST can loop what just went by. The head reads the tape at the speed. At 1x it plays the present; slower (or backwards) it falls behind, and once it is a window behind it jumps forward a window; faster it catches up with the present and jumps back one: at -1x you hear each window backwards, at 0.5x each window at half speed. Each jump crossfades over XFADE. In STRETCH two grains read the tape at the pitch while the head moves at the speed, so the pitch and the time are apart: a stopped tape becomes a freeze. HOLD loops the window (the tape stops recording while it loops), at the speed and the pitch, forwards, backwards or back and forth (DIR ALT); its seam fades over XFADE. Random events happen at each window, or each beat (RAND: BEAT), with RAND's chance: a speed (0.25x to 2x of the knob's), a pitch (-12, -7, -5, +5, +7, +12), a reverse or a stutter (a window, a half or a quarter of one, over and over), each until the next point, picked by the four weights on page 2. The slicer gates the tape's sound in one of eight 16-step patterns a bar (or four windows, free).

MIDI

On the auto channel while the page is open (or any channel, or with the page closed, in SETUP):

CCCC
20SPEED (0 reverse, 64 stop)27MODE: TAPE below 64
21TIME28CAPTURE: NEXT 0-42, LAST above
22PITCH (64 unison)29DIR: FWD, REV, ALT by thirds
23BLEND30PATTERN by eighths
24RANDOM31GLIDE
25TONE85HOLD on from 64
26SLICE86REVERSE from 64
87TAPE STOP from 6488RANDOM on from 64
93TAP102the pedal on from 64, bypassed below

How it works

  • The tape: 2^19 frames (10.9 s) of stereo 16-bit at half scale in its region of the profile's bulk area (0x47700000-0x47900000); the UI clears it once before the first block.
  • Fixed point: as the shell's, positions on the tape in frames Q8.
  • CPU: the whole render 23-28% of a block with the pedal open (the emulator's cycle model), of which the Digitone's own part, with the synths muted, is about 17%.

Build

python -m elekloader.sdk.build . --stock Digitone_and_Digitone_Keys_OS1.43.syx   # out/digireel-0.2.elemod
python -m elekloader.sdk.build . --stock Digitone_and_Digitone_Keys_OS1.44.syx   # out/digireel-0.2-os1.44.elemod

It names no firmware address, so its 1.44 port is empty. It needs fxkit and core-dn1 4.1. gentables.py makes tables.h.

Checked

In digikit's emulator, OS 1.43 and 1.44, and with the render's own code compiled for a computer and fed test signals:

  • On a unit: tested on a Digitone mk1 by its author: it loads and works as expected. It is still a beta.

  • The firmware. A build with the released core-dn1 3.2 and DigiReel passes every stage of the emulator's check against stock on 1.43 and 1.44, with every screen identical.

  • INPUTS. With plucked notes on the inputs and the factory pattern playing: closed, the synths; open, the plucks through the pedal and the synths silent (rms 0 against the synths' 1819), the whole render 25.8% of a block (the most 28.2%) in STRETCH, 22.7% in TAPE (the stock render with the synths playing: 57%); after NO the synths again.

  • The page and the keys. The three pages, SETUP, a knob turn, a preset saved as P5 and recalled with FUNC + trig 5, T1-T4 tapped and held, HOLD looping while T1 is down and off after, TAPE STOP, trig 11 (-1x: sound backwards), MODE on page 3, BYPASS on trig 16.

  • MIDI. On 1.43, the chart's CCs on the auto channel (SPEED, PITCH, BLEND, GLIDE, MODE, CAPTURE (0-42 for NEXT), DIR, RANDOM, the pedal on and bypassed) set DigiReel and stopped at core's site; a CC outside the chart went on to the Digitone.

  • The sound (the render on a computer): STRETCH's pitch an octave up and down (440 Hz in: 892 and 214 Hz measured by zero crossings), TAPE at 2x an octave up; reverse, half speed, HOLD LAST and NEXT (a burst loops on after the input stops), HOLD released (the loop stops), TAPE STOP to silence, STRETCH's freeze holding a note, random events, ALT, the slicer (P1 at 120 BPM: 125 ms on, 125 ms off), TONE both ways, WIDTH, BYPASS with and without trails, the CPU guard's trip. The jumps crossfade: no step in a sine's output larger than the sine's own.

Not yet

  • An expression pedal input and program changes.
  • CAPTURE's NEXT and LAST in every combination with the random events (a stutter always loops the window just played).

Licence

GPL-2.0-or-later, as the rest of elekloader (LICENSE).