metronomicon, image 1 from its README
Mod

metronomicon

Loud81/100

Metronome, polyrhythm and rhythm-pattern plug-in for the Expert Sleepers Disting NT

metronomicon is a mod for the Expert Sleepers Disting NT, by @intowhite. Open source under MIT, latest release v1.10 (October 2026), 2 stars on GitHub.

forExpert Sleepers Disting NT·by@intowhite

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

Downloads
0
Stars
2
Forks
0
Commits
9
Last commit
Download v1.10

metronomicon.o· 37 KB

MIT· intowhite/metronomicon·downloads come from the creator’s GitHub releases

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

Metronomicon for Disting NT

Metronomicon — metronome, polyrhythms and rhythm patterns for the Disting NT

Metronomicon is a sample-accurate metronome plug-in for the Expert Sleepers Disting NT. It follows MIDI clock, CV clock or its own tempo, counts you in, arms your sampler or looper on the bar line, and adds a polyrhythm layer, 59 rhythm patterns and MIDI drum output, with CV outputs for everything.

Built for playing and recording against a sequencer (e.g. Squarp Hermod+) without relying on quantisation: patch the clock in, press play, hear clicks that sit exactly on the grid.

Contents: Features · Install · Quick start · Manual · Build · Project layout · License


Features

Clock & transport

  • Follows MIDI clock (24 PPQN) with Start / Stop / Continue, or clock-only
  • Follows CV clock at 24, 4, 2 or 1 PPQN, or one pulse per bar
  • Or runs on its own tempo (20–300 BPM) with tap tempo and play/stop on the encoder, a mappable parameter, a gate or a trigger
  • Clicks land on the exact sample of a CV edge; subdivisions between clock pulses are interpolated and re-anchored on every pulse, so there's no drift and nothing keeps running on a stale tempo
  • Clear status: stopped / waiting / acquiring / running / clock lost / count-in

Metronome

  • 11 time signatures with correct beat grouping: 4/4, 3/4, 6/8, 2/4, 12/8, 2/2, 5/4, 7/8, 9/8, 5/8, 7/4
  • Clicks on beats, 1/4, 1/8 or 1/16, with distinct downbeat / beat / subdivision sounds and levels
  • Two click sounds: Classic (woody) and Soft (lower, drier)
  • Toggle the click on/off from a trigger input

Count-in & recording (when Metronomicon is the master clock)

  • Count-in of 1–4 bars on its own sound
  • Arms samplers and loopers: a record trigger or gate (plus an optional MIDI note) exactly on bar 1; open-ended takes end on the next bar line, or fixed 1–16-bar takes end by themselves
  • MIDI clock + Start/Stop out and a Run gate, so other gear follows

Polyrhythm

  • Any X:Y from 1–16 against Y quarter notes, plus presets (3:2, 2:3, 3:4, 4:3, 6:4, 5:4, 4:5, 5:3, 7:4, 3:8)
  • Accent on the cycle start; its own clock and reset outputs

Rhythm patterns — 59 patterns in 9 groups

  • Afro-Cuban/African, Odd meter, Swing/shuffle, Jazz/practice, Indian tala, Middle Eastern, Brazilian, Caribbean, Funk/electronic
  • Accents, normal hits and ghost notes; trigger, accent, ghost, velocity-CV and reset outputs

Outputs

  • Each layer has its own audio bus, level and on/off; audio mutes never stop CV
  • MIDI drum output: every click as a note, per-voice note numbers, velocity from levels
  • Every layer keeps its own cycle — a 3:2 polyrhythm or a 6-quarter bell pattern runs against 3/4 without being reset by the bar — and all of them realign on start or reset

Install

  1. Download metronomicon.o from Releases.
  2. Copy it to /programs/plug-ins/ on the Disting NT's SD card. If you had an older metronome.o, delete it, or both will load.
  3. Add the Metronomicon algorithm (Utility category). Its screen shows the version (e.g. v1.10) above the BPM.

Requires Disting NT firmware 1.18 or newer.


Quick start

Follow a CV sequencer (e.g. Hermod+)

  1. Sequencer CLOCK OUT (24 PPQN) → NT input 1; RESET OUT → NT input 2.
  2. Clock source = CV, CV clock res = 24 PPQN, CV transport = RESET (or RUN if your sequencer sends a run gate). These are the defaults.
  3. Press play on the sequencer.

Follow MIDI clock

  1. Sequencer or DAW MIDI out → NT MIDI in, sending clock and transport.
  2. Clock source = MIDI.
  3. Press play on the sequencer.

Be the master clock

  1. Clock source = Internal, set Internal BPM (or tap the right encoder).
  2. Press the left encoder to play/stop.
  3. Optional: MIDI clock out = On and/or patch Run out + Base clock out to slave other gear.

Record a loop with a count-in into a sampler or looper

  1. Be the master clock (above). Set Count-in = 1 bar.
  2. Patch Rec out to the device's record input; pick Rec out mode = Trigger (press-to-start, press-to-stop devices) or Gate (records while high).
  3. Turn on Rec arm and press play: 1 2 3 4, recording starts on bar 1.
  4. Press stop (or turn Rec arm off to keep playing): the take ends on the next bar line.

Manual

The display

AreaShows
Top leftClock source: CV / MIDI / INTERNAL (and "clock only" for MIDI clock-only)
Top rightStatus (below)
Large textTempo in BPM; during a count-in, IN 2, IN 1 = bars left
BoxesBeats of the bar; the current beat is filled, the downbeat box is brighter; ? = bar position unknown
Small linePolyrhythm ratio and current pulse; current pattern (dimmed when that layer's audio is off)
BottomTime signature, click division, and REC 2/4, REC END, ARMED, MUTED or metro off
HintL:play R:tap (Internal clock)
VersionSmall version number (e.g. v1.10) above the BPM — the build that's loaded

Status: STOPPED (transport stopped) · WAITING (playing, waiting for the first clock) · ACQUIRING (measuring tempo / finding the bar) · RUNNING · CLOCK LOST (clock stopped arriving while playing) · COUNT-IN.

Encoders (Internal clock only, on the Metronomicon display): left press = play/stop, right press = tap tempo. With MIDI or CV clock they keep their normal function.

Some parameters appear on two pages; they are the same parameter, so changing one changes both. Parameters that don't apply to the current setup are greyed out.

Clock & Transport page

ParameterValues (default)What it does
Clock sourceCV / MIDI / Internal (CV)Where tempo and position come from.
MIDI syncTransport / Clock only (Transport)Transport: follows Start, Stop, Continue and Song Position. Clock only: starts on the first clock (bar 1), stops when clock stops — for sources that send no transport messages.
CV clock inputinput (Input 1)The clock input. Rising edge above 1 V, released below 0.5 V.
CV clock res24 PPQN / 4 PPQN (1/16) / 2 PPQN (1/8) / 1 PPQN (1/4) / 1 per bar (24 PPQN)How much musical time each clock pulse is worth. With 1 per bar, the bar length follows the time signature.
CV transport ininput (Input 2)The transport input.
CV transportRUN / RESET / NONE / TOGGLE (RESET)CV clock: RUN = playing while the gate is high, bar 1 on the first clock after it rises; RESET = a trigger makes the next clock bar 1 (a reset up to 3 ms after a clock edge counts for that edge), stopping is detected from clock loss; NONE = the first clock pulse is bar 1, clock loss stops; TOGGLE = each trigger starts/stops. Internal clock: RUN = gate high plays, low stops; TOGGLE = each trigger plays/stops; RESET = restart at bar 1 while playing; NONE = ignore the input.
Internal BPM20.0–300.0 (120.0)Tempo of the internal clock. Tapping writes here.
PlayStop / Play (Stop)Internal clock transport. Shown here only when the source is Internal (also on the Count-in & Rec page). Always Stop after loading a preset.
Tap inputinput (None)Each trigger is a tap (Internal clock).
Tap—Turn right to tap — every step is a tap, so keep turning; left does nothing. Map a button, gate or MIDI note to it for one tap per press.

Tap tempo averages up to the last five taps; a gap longer than 2.5 s starts over. The new tempo applies immediately and is written to Internal BPM, so it's saved with the preset.

Count-in & Rec page

Play, Count-in and Count-in clock apply to the Internal clock (Metronomicon as master). Recording and Run out work with any clock source — with MIDI or CV clock, an armed take starts on the next bar line, and stopping the sequencer ends it. MIDI clock out works with the internal or CV clock.

ParameterValues (default)What it does
PlayStop / Play (Stop)Start/stop. Starting always begins at bar 1 (after the count-in, if on).
Count-inOff / 1 / 2 / 3 / 4 bars (Off)Bars of count before bar 1, in the current time signature, on a distinct high "tick" (first beat of each bar accented). Heard even when Metro audio is off; only Mute all silences it. During the count nothing else runs: no polyrhythm, pattern, CV outputs or MIDI notes. Stopping during the count cancels it.
Count-in clockWait / Run (Wait)Wait: MIDI clock and the base CV clock start on bar 1. Run: they run through the count so receivers lock to the tempo first; MIDI Start is still sent exactly on bar 1.
MIDI clock outOff / On (Off)Sends 24 PPQN MIDI clock, Start on bar 1 and Stop on stop (a reset while playing sends Stop then Start). Works with the internal clock and re-transmits a CV clock; never sent when following MIDI. Turning it on also turns MIDI out on (and sets MIDI layers to None if MIDI out was off, so you get clock without drum notes). Also on the Output page.
MIDI out dest(see Output page)Shown here while MIDI clock out is on.
Rec armOff / On (Off)Arms the next take. Armed while stopped: recording starts on bar 1. Armed while playing: starts on the next bar line (punch-in). Switch it off while recording to end the take on the next bar line and keep playing. Switches itself off when a take ends.
Rec lengthManual / 1 / 2 / 4 / 8 / 16 bars (Manual)Manual: the take runs until you disarm or press stop, and ends on the next bar line — stop is quantized only while recording. Fixed: the take ends by itself after exactly that many bars; playback continues so you hear the loop come round.
Rec outoutput (None)CV output to the sampler/looper's record input.
Rec out modeTrigger / Gate (Trigger)Trigger: a 5 ms pulse at the start and another at the end — for press-to-start, press-to-stop devices. Gate: high for the whole take.
Rec MIDI noteOff / 0–127 (Off)A note sent at the start and end of a take (Trigger) or held for the take (Gate), on MIDI out channel. Setting a note turns MIDI out on, like MIDI clock out.
Run outoutput (None)Gate high from bar 1 until stop, with any clock source — a RUN signal for downstream sequencers.

Typical setups:

  • Device with no tempo (sampler, looper, recorder): Count-in 1 bar, Rec out to its record input, Rec length Manual or the loop length. Arm, press play.
  • Device with a tempo (drum machine, sequencer, DAW): add MIDI clock out and/or Run out
    • Base clock out; set Count-in clock to Run if it needs to lock before bar 1.

Metronome page

ParameterValues (default)What it does
Time signature4/4, 3/4, 6/8, 2/4, 12/8, 2/2, 5/4, 7/8, 9/8, 5/8, 7/4 (4/4)Changes take effect at the next bar line. Beat grouping below.
Click divisionBeats / 1/4 / 1/8 / 1/16 (Beats)Beats: clicks only on the meter's beats. Otherwise beats plus subdivision ticks on that grid. For compound meters (6/8, 9/8, 12/8) use 1/8.
Metro audioOff / On (On)The metronome's click. Off doesn't affect timing, CV, MIDI or the count-in.
Metro toggle ininput (None)Each trigger flips Metro audio. Works with every clock source. Bounce and noise are ignored.
Downbeat vol0–100 % (100)Level of beat 1.
Beat vol0–100 % (65)Level of the other beats.
Subdiv vol0–100 % (25)Level of the subdivision ticks.
Metro outoutput (Output 1)Audio output for the click.
Metro out modeAdd / Replace (Add)Mix into the bus, or replace it. Layers sharing a bus are summed.
Base clock outoutput (None)Clock pulses from bar 1.
Base clock res1/4 / 1/8 / 1/16 / 24 PPQN (1/16)Pulse rate of Base clock out.
Base reset outoutput (None)Reset trigger. When assigned, the clock outputs trail it by 1 ms so downstream modules see the reset first.
Base reset modeBar / Start only (Bar)Reset on every bar line, or only when playback starts.

Beat grouping

MeterBeats per barGrouping
4/4, 3/4, 2/4, 5/4, 7/44, 3, 2, 5, 7quarter notes
2/22half notes
6/8, 9/8, 12/82, 3, 4dotted quarters (3+3…)
7/832+2+3 eighths
5/823+2 eighths

Polyrhythm page

X evenly spaced pulses over Y quarter notes, e.g. 3:4 = three pulses across four beats. The cycle realigns with the beat every Y quarters, independent of the bar.

ParameterValues (default)What it does
Poly enableOff / On (Off)Turns the layer on. Joins in phase if switched on while playing.
Ratio presetCustom, 3:2, 2:3, 3:4, 4:3, 6:4, 5:4, 4:5, 5:3, 7:4, 3:8 (3:2)A shortcut that writes X and Y. Editing X or Y shows the matching preset, or Custom. 3:2 and 6:4 stay distinct (different cycle length and accents).
Pulses (X)1–16 (3)Pulses per cycle.
Host beats (Y)1–16 (2)Cycle length in quarter notes.
Poly audioOff / On (On)The polyrhythm's sound (a metallic bell-like click).
Poly vol0–100 % (70)Level.
Poly accentOff / On (On)Stronger sound on the first pulse of each cycle.
Poly out / modeoutput (Output 1), Add / ReplaceAudio output.
Poly clock outoutput (None)A pulse for every polyrhythm pulse.
Poly clock res1 / 4 / 24 per pulse (1)Clock multiplication — 24 per pulse turns the polyrhythm into a 24 PPQN clock for another sequencer.
Poly reset outoutput (None)Reset trigger.
Poly reset modeCycle / Start only (Cycle)Reset at every cycle start, or only on start.

Ratio and clock-resolution changes take effect at the next cycle boundary, so there are no uneven transition pulses.

Pattern page

ParameterValues (default)What it does
Pattern enableOff / On (Off)Turns the layer on.
Pattern group9 groups (Afro-Cuban/African)Choosing a group jumps to its first pattern.
Patternthe group's patternsChanges take effect at the end of the current cycle.
Swing50–75 % (50)For the swing patterns only (greyed otherwise): 50 = straight, 66 = triplet swing, 75 = dotted.
Pattern audioOff / On (On)The pattern's sound (clave-like).
Pattern vol0–100 % (70)Level. Ghost notes play at 40 % of it.
Pattern accentOff / On (On)Use the strong sound for accented hits.
Pattern out / modeoutput (Output 1), Add / ReplaceAudio output.
Pattern trig outoutput (None)A trigger for each hit.
Pat trig modeAll hits / No ghosts (All hits)Whether ghost notes fire Pattern trig out.
Pat accent outoutput (None)A trigger on accented hits only.
Pat ghost outoutput (None)A trigger on ghost notes only.
Pat velocity outoutput (None)Stepped CV set at each hit and held: 5 V accent, 3.5 V hit, 1.5 V ghost. It changes before the hit's trigger, so it can feed a VCA, a drum's level input or a sample & hold.
Pattern reset outoutput (None)Reset trigger.
Pat reset modeCycle / Start only (Cycle)Reset at every cycle start, or only on start.

Patterns — X accent, x hit, g ghost, . rest. Cycle length in quarter notes.

GroupPatternStepsGridQuarters
Afro-Cuban/AfricanTresilloX..x..x.1/84
Afro-Cuban/AfricanSon clave 3-2X..x..x...x.x...1/88
Afro-Cuban/AfricanSon clave 2-3..x.x...X..x..x.1/88
Afro-Cuban/AfricanRumba clave 3-2X..x...x..x.x...1/88
Afro-Cuban/AfricanRumba clave 2-3..x.x...X..x...x1/88
Afro-Cuban/AfricanCinquilloX.xx.xx.1/84
Afro-Cuban/AfricanHabaneraX..xx.x.1/162
Afro-Cuban/AfricanCascaraX.x.xx.xX.xx.x.x1/88
Afro-Cuban/AfricanStd bell (bembe)X.x.xx.x.x.x1/86
Afro-Cuban/AfricanBell 5-strokeX.x.x..x.x..1/86
Afro-Cuban/African6/8 short bellX.x.xx1/83
Odd meter5/8 2+3Xgxgg1/82.5
Odd meter5/8 3+2Xggxg1/82.5
Odd meter7/8 2+2+3Xgxgxgg1/83.5
Odd meter7/8 2+3+2Xgxggxg1/83.5
Odd meter7/8 3+2+2Xggxgxg1/83.5
Odd meter9/8 3+3+3Xggxggxgg1/84.5
Odd meter9/8 2+2+2+3Xgxgxgxgg1/84.5
Odd meter9/8 2+2+3+2Xgxgxggxg1/84.5
Odd meter9/8 2+3+2+2Xgxggxgxg1/84.5
Odd meter11/8 3+3+3+2Xggxggxggxg1/85.5
Odd meter11/8 2+2+3+2+2Xgxgxggxgxg1/85.5
Odd meter11/8 3+2+3+3Xggxgxggxgg1/85.5
Swing/shuffle8th swingXgxgxgxg1/84 · swing
Swing/shuffle16th swingXgxgxgxgxgxgxgxg1/164 · swing
Swing/shuffleTriplet shuffleX.gx.gx.gx.g1/8 triplet4
Swing/shuffleHalf-time shufflex.gx.gX.gx.g1/8 triplet4
Jazz/practice2 and 4.X.X1/44
Jazz/practice8th offbeats.x.x.x.x1/84
Jazz/practice16th offbeats (e).x...x...x...x..1/164
Jazz/practiceDisplaced (a)...x...x...x...x1/164
Jazz/practiceCharlestonX..x....1/84
Jazz/practiceJazz rideX..x.xx..x.x1/8 triplet4
Jazz/practiceJazz ride + 2/4x..X.xx..X.x1/8 triplet4
Jazz/practiceHalf-time backbeat..X.1/44
Indian talaTeentaal 16Xgggxggg.gggxggg1/416
Indian talaJhaptal 10Xgxgg.gxgg1/410
Indian talaRupak 7Xggxgxg1/47
Indian talaDadra 6Xgg.gg1/46
Indian talaKeherwa 8Xggg.ggg1/48
Middle EasternMaqsumXx.xX.x.1/84
Middle EasternBaladiXX.xX.x.1/84
Middle EasternSaidiXx.XX.x.1/84
Middle EasternMalfufX..x..x.1/162
Middle EasternSamai thaqil 10/8X..x.XXx..1/85
Middle EasternAksak 9/8X.x.x.X..1/84.5
BrazilianBossa novaX..x..x...x..x..1/88
BrazilianSambaxggxXggx1/162
BrazilianPartido alto.X..x.x.x..x..x.1/164
BrazilianBaiaoX..Xx...1/162
BrazilianMaracatuX..x..x.X..x..x.1/164
CaribbeanDembowX..xX.x.X..xX.x.1/164
CaribbeanOne drop.x.xXx.x1/84
CaribbeanSteppersX.x.X.x.X.x.X.x.1/164
Funk/electronicSyncopated 16thsX..x...x..x.x...1/164
Funk/electronicFunk backbeatx...X..g.gx.X..g1/164
Funk/electronicHalf-time groovex.....g.X..g..g.1/164
Funk/electronicFour on the floorxgXgxgXg1/84
Funk/electronicAccent cycleXggXggXgggXggXgg1/164

Notes: odd-meter patterns accent each group start, strongest at the cycle start. Tala: sam = accent, claps = hits, waves (khali) = rests, other counts = ghosts. Middle Eastern: D = accent, T = hit. Several Brazilian and Caribbean entries are reduced guide patterns rather than full arrangements.

Output page

ParameterValues (default)What it does
Master volume0–100 % (60)Overall level of all layers. Full scale is 5 V peak.
Mute allOff / On (Off)Silences all audio including the count-in. CV and MIDI keep running.
Click soundClassic / Soft (Classic)Classic: woody, ringing. Soft: lower, shorter, drier. Applies to all layers; timing is identical.
MIDI outOff / On (Off)Master switch for all MIDI output: notes, clock, count and rec note.
MIDI out destUSB / Breakout / Select Bus / Internal / USB + Breakout / All (USB)Where MIDI goes.
MIDI clock outOff / On (Off)See the Count-in & Rec page.
MIDI out channel1–16 (10)Channel for notes (10 = GM drums).
MIDI layersAll / Metronome / Polyrhythm / Pattern / Metro + Poly / Metro + Pattern / Poly + Pattern / None (All)Which layers send notes. None = clock/rec note only. MIDI ignores the audio switches and Mute all, so you can silence the NT and drive only an external kit.
MIDI count outOff / On (Off)Also send the count-in as notes (downbeat / beat notes).
Downbeat note0–127 (76, hi wood block)
Beat note0–127 (77, low wood block)
Subdiv note0–127 (42, closed hi-hat)
Poly note0–127 (56, cowbell)
Poly accent note0–127 (56)First pulse of each cycle (when Poly accent is on) — e.g. ONE on one sound, two–five on another.
Pattern note0–127 (75, claves)
Pat accent note0–127 (75)
Pat ghost note0–127 (75)Send ghosts to a quieter kit piece.

Note velocity follows the voice levels (at defaults: downbeat 127, beat 83, subdivision 32; accents boosted to 127; ghosts ≈ 36). Note-offs follow 15 ms later. Notes are sent with the audio block containing the click.

How timing works

Position is counted at 24 PPQN. Every clock event (MIDI clock, CV edge or internal tick) anchors the timeline; subdivisions, polyrhythm pulses at fractional positions and (swung) pattern steps before the next clock event are scheduled to the sample from the measured clock period. When the next clock arrives, anything pending fires and the timeline re-anchors — no drift, and nothing runs on after the clock stops.

  • CV clicks start on the exact sample of the clock edge. MIDI events take effect at the next audio block, because the plug-in API doesn't timestamp MIDI.
  • With coarse CV clocks (1 PPQN, 1 per bar) the tempo is unknown until the second pulse, so events in the very first interval fire together on that pulse.
  • Clock loss is detected after about 2.5 clock periods (CV) or 4 clock periods (MIDI).
  • If the bar position can't be known (e.g. a RUN gate already high when the plug-in loads), the display shows ? and no downbeat accent is played until the next reset or start.
  • The internal clock uses a double-precision accumulator: no drift over hours.

Build

Needs the Arm GNU Toolchain (arm-none-eabi) and the Disting NT API at the tag matching your firmware (firmware 1.18 → v1.18.0). A plug-in built against a newer API than the module's firmware shows failed on the plug-ins page.

# macOS / Linux
git clone --branch v1.18.0 https://github.com/expertsleepersltd/distingNT_API.git
make NT_API=distingNT_API          # -> plugins/metronomicon.o
make test                          # host test suite (any C++11 compiler)
# Windows (no make needed): unzip the API next to this folder, then
.\build.ps1

Pushing a tag v* runs the GitHub Actions workflow, which runs the tests, builds metronomicon.o and attaches it to a release.

Patterns are written as strings in tools/gen_patterns.py; run it to regenerate src/patterns.h.


Project layout

src/metronome_engine.h   timing + sound engine (platform-independent, header-only, no allocation)
src/patterns.h           pattern table (generated)
src/metronome.cpp        Disting NT glue: parameters, pages, MIDI, display, custom UI
tests/test_engine.cpp    host test suite with simulated CV/MIDI clocks
tools/gen_patterns.py    readable pattern list -> src/patterns.h
docs/banner.svg / .png   README banner
CHANGELOG.md             version history

License

MIT — see LICENSE.