50% off with discount code EARLY50

MIDI Out

ElkTracker can drive an external synth or MIDI module by adding a MIDI instrument and sending its notes out over a class-compliant USB MIDI interface - useful for triggering hardware synths from your handheld.

Setup

  1. Plug in a class-compliant USB MIDI interface. Most modern USB audio/MIDI interfaces need no extra driver on Linux.
  2. Settings → MIDI OUT — A+←→ cycles through NONE and every detected port; pick yours. The selection is saved and reopens automatically the next time you launch.
  3. Settings → DIAGNOSTICS — dive in, then A on MIDI TEST > to confirm ElkTracker can see your interface. A KERNEL MODULES section is shown for reference only — some devices build USB MIDI support directly into the kernel rather than as a loadable module, so those rows reading n/a is normal and doesn't mean anything's wrong. Trust the MIDI PORTS count and the verdict at the bottom (MIDI READY / NO MIDI PORTS FOUND) instead. The same report is written to MIDI.log in your data root for reference.

Creating a MIDI instrument

Open an instrument slot and cycle TYPE to MIDI (the last of the engine types). Five fields are available:

  • CHAN: the MIDI output channel, 1–16.
  • BANK: bank select MSB (CC 0), 1–128, or --- to skip.
  • PROG: program change (0xC0), 1–128, or --- to skip.
  • SCALE: scale quantize mode, same as other engines: see Scale Mode.
  • ROOT: scale root note (C–B), active when SCALE is set to a specific scale (not PROJECT or OFF).

BANK and PROG are independent, so you can set either one without the other. Neither is sent if it is ---.

Write notes into a phrase against this instrument exactly like any other engine. A note plus this instrument in the INSTR column sends a Note On on CHAN; a Note Off is sent first if the channel's previous MIDI note is still sounding.

Selecting a preset with BANK and PROG

Most synths that respond to bank select follow this sequence:

  1. CC 0 value 0–127 (Bank Select MSB) - specifies bank group
  2. CC 32 value 0 (Bank Select LSB) - ElkTracker always sends 0 here
  3. Program Change value 0–127 - specifies preset within that bank

If your synth only has 128 presets in a single bank, set BANK to --- and just use PROG. If it has more, check the synth manual for which Bank MSB value corresponds to the bank you want.

The bank/program change is sent on every note trigger, so you can switch presets mid-sequence by assigning different MIDI instruments to different phrase steps. Be careful when using this, though - spamming lots of fast program changes is a good way to lock up your MIDI interface! If this happens, just restart ElkTracker.

Usage example

  1. Instrument 01: TYPE → MIDI, CHAN → 1, BANK → ---, PROG → 5.
  2. On channel 2 of a phrase, set INSTR to 01 and enter C-4 on row 00.
  3. Press Start; with an external synth listening on MIDI channel 1, it switches to preset 5 and plays the note in time with the rest of the project.

What works, and what doesn't

MIDI instruments have no built-in voice, so only the commands that make sense for triggering an external device do anything:

Works No effect
Note trigger (NOTE column) PAN, SDA, SDB
VOL → sets Note On velocity PIT, OFS, REV, SLC
KIL (note off on tick) GLI, ARP
RTG (retrigger) LFO1, LFO2, MOD1–4
Note OFF
CHD chord shapes
Chain transpose

A few things worth knowing:

  • VOL sets velocity. Write a VOL FX command on the same row as a note to set the Note On velocity, and the 0x00–0xFF range maps to MIDI velocity 0–127. Without a VOL command, velocity defaults to 127. RTG retriggers on the same row also use the VOL value from that row.
  • Chain transpose shifts the sent MIDI note number up or down by the chain step's transpose value, exactly like any other engine.
  • CHD sends additional Note On messages for each chord tone on the same MIDI channel, and Note Offs when the note ends. The external synth needs to be polyphonic (or in poly mode) to sound all the voices.
  • SCALE / ROOT control which notes the phrase editor steps through when entering notes, they don't re-quantize notes at playback time. Set to PROJECT to follow the song's global scale, or pick a specific scale and root for this instrument.

Panic

Select+Start (or Settings → PANIC) sends MIDI All Notes Off on every channel, alongside silencing local voices.