Using miditool with GarageBand
GarageBand has no per-track MIDI input selection: it listens to every MIDI source on the system at once. Out of the box that means it hears your raw keyboard and miditool’s output, so every note plays twice, once untransformed. This page fixes that.
The fix
Section titled “The fix”On macOS, miditool can hide the raw keyboard from every other app while it runs. Add hide=true to the input node:
input "Roland" hide=trueoutput virtual="miditool Out"
shuffle-lock seed=42velocity-curve gamma=0.8While miditool run is active, the raw keyboard is invisible to GarageBand and everything else; only miditool Out remains. GarageBand hears exactly one stream: the transformed one.
When miditool exits, the keyboard reappears. Nothing about the device or the system is permanently changed.
Start order matters
Section titled “Start order matters”GarageBand scans MIDI sources at launch and keeps whatever it found. So:
- Start miditool first:
miditool run - Then open GarageBand.
If GarageBand was already open, quit and relaunch it once while miditool runs. The same applies after any change to which ports exist.
If a run is killed hard
Section titled “If a run is killed hard”miditool restores the hidden keyboard on any normal exit, including Ctrl-C. If the process is ever killed outright (a force quit, a power cut), the keyboard can stay hidden. One command recovers it:
miditool unhideWithout an argument it restores every hidden source; pass a name substring to restore one.
When something seems off
Section titled “When something seems off”miditool doctordoctor checks the pieces this page depends on: it lists your MIDI ports, warns about sources that look hidden, validates the config, and warns if GarageBand or Logic Pro is already running (and therefore holding the pre-miditool port list). A typical healthy report:
ok midi backend: 1 input (Roland FP-30 MIDI IN), 1 output (Roland FP-30 MIDI OUT)ok config miditool.kdl: parses, 2 top-level effectsok no MIDI sources look hiddenwarn GarageBand is running; apps started before miditool keep hearing the raw keyboard until relaunchedok Logic Pro is not runningElsewhere than GarageBand
Section titled “Elsewhere than GarageBand”Hiding is a CoreMIDI feature, so hide=true is macOS only; other platforms ignore it with a note. DAWs with per-track input selection do not need it at all: see Other DAWs.