Skip to content

Getting started

  • A MIDI instrument — a keyboard for piano, a pad controller (built for the Yamaha FGDP-50) for drums, or a wind controller (built for the TravelSax) for saxo. Theory works without one.
  • Midi Stroke — the desktop app on macOS, Windows or Linux, or the web app in a browser with Web MIDI.

This is the way to run it. MIDI is handled by the operating system (CoreMIDI, WinMM, ALSA), so no browser support question arises, hot-plugging a controller works, and everything runs offline.

Terminal window
brew install --cask vibetuned/tap/midi-stroke # macOS
winget install Vibetuned.MidiStroke # Windows

On Debian and Ubuntu there is a signed apt repository, and an AppImage for everything else — see the desktop app page for both, and for what each release ships.

ms.vibetuned.com/app runs the same trainer in Chrome, Edge or Opera. Safari and Firefox don’t ship the Web MIDI API, so on those the desktop app is the only option.

Either way, plug your instrument in first (so it’s detected right away), then pick an instrument card.

  1. Start — the first click boots the audio engine (one gesture is needed before any app may make sound).
  2. Piano only: calibrate your keys — press the lowest and the highest key of your keyboard once. The virtual keyboard then only draws keys you actually have.
  3. Pick a piece — collections on the left, pieces on the right. The badge on a piece shows your best precision so far.
  4. Play. The score scrolls under a fixed cursor; the virtual instrument at the bottom (or the fingering chart, for saxo) glows the notes to play.
Mode What happens
Rhythm Playback runs in time. Each note has a hit window; late, missed or wrong notes count against your precision.
Practice Playback pauses at every note (or chord) and waits until you press exactly the right keys, then moves on. Wrong presses are counted but never block you.

Every song starts with a one-beat count-in so you’re never ambushed by the first note.

  • Tempo — slider from 30 to 120 BPM; everything (score scroll, practice pauses, hit windows) scales musically with it.
  • Seek — drag the score itself, click/drag the minimap strip at the top (piano & saxo), or use the arrow keys.
  • Hand selection (piano) — L / R / both; the inactive staff dims and its notes stop being expected.
  • Stats — precision, combos and history are kept per piece and per mode, on the device. The 📊 button in the header opens the history. The desktop app and your browser keep separate histories, since each stores its own.

Next to the transport is a playback selector with three kinds of setting:

  • Playback off — the score stays silent and only your own playing sounds, which is how the trainer has always worked.
  • Play in sound — the score plays as it scrolls, on the same instrument you are practising: the piano samples, the saxo reed tone, or the drum kit.
  • MIDI → your device — instead of sounding locally, playback sends note-on and note-off to that output, so your own synth, module or DAW plays the part. Drums go out as General MIDI pads on channel 10.

The setting is remembered, and the exercise builders share it: each has a ▶ Listen button that plays the exercise you just built before you commit to practising it.

The pill in the top-right shows whether MIDI is live and how many input devices are connected. All connected inputs are listened to at once — no device picking needed.

In the desktop app the connection is native, so a device plugged in mid-session appears on its own. In the browser the first session asks for the Web MIDI permission, and the pill stays red until it is granted.