Desktop app
Midi Stroke runs as a native app on macOS, Windows and Linux, built with Tauri. This is the way to run it: MIDI is handled by the operating system itself, so no browser support question arises, hot-plugging a controller works, and the trainer runs offline.
Install
Section titled “Install”Every release ships a signed macOS universal dmg, a Windows installer, a Debian package and an AppImage — all attached to the GitHub releases (the latest release is always the one to grab). What each version ships is recorded in the changelog.
macOS — Homebrew
Section titled “macOS — Homebrew”One universal build for Apple Silicon and Intel, signed and notarized:
brew install --cask vibetuned/tap/midi-strokeUpdates arrive with brew upgrade. (You can also download the .dmg
directly from the GitHub releases.)
Windows — winget
Section titled “Windows — winget”winget install Vibetuned.MidiStrokeOr download the *-setup.exe installer from the
GitHub releases — it
bootstraps the WebView2 runtime automatically if it’s missing.
Debian / Ubuntu — apt
Section titled “Debian / Ubuntu — apt”The site hosts a signed apt repository:
sudo curl -fsSL https://ms.vibetuned.com/apt/midi-stroke.asc -o /etc/apt/keyrings/midi-stroke.ascecho "deb [signed-by=/etc/apt/keyrings/midi-stroke.asc] https://ms.vibetuned.com/apt stable main" | sudo tee /etc/apt/sources.list.d/midi-stroke.listsudo apt update && sudo apt install midi-strokeOther Linux
Section titled “Other Linux”Grab the .AppImage from the
GitHub releases, make
it executable and run it.
What the native app gives you
Section titled “What the native app gives you”- MIDI is native — the shell connects every MIDI input port directly (CoreMIDI on macOS, WinMM on Windows, ALSA on Linux) and streams notes, velocity and breath control to the trainer. No Web MIDI needed, no permission prompt, and no Safari or Firefox dead end.
- Everything else is identical: same scores, same modes, same imports (ZIP collections work and persist), same stats. Note that stats and imported collections are stored per app — the desktop app and your browser each have their own.
- Lesson videos need network (they stream from YouTube), and the piano sound samples download on first use.
Building from source
Section titled “Building from source”npm installnpm run tauri dev # dev shell with hot reloadnpx tauri build --bundles app,dmg # release build (macOS example)Requires the Rust toolchain. Releases are built automatically by CI when a version tag is pushed.