A magical music box for MIDI — play, explore, and watch your music.
midimi is a native desktop MIDI player and visualizer built with Tauri v2 (Rust backend) and SvelteKit + Svelte 5 (frontend). Drop in a .mid file and watch it come alive: a full-screen "Cosmic Aurora" visualization reacts to every note in real time, while a bundled General MIDI soundfont renders the audio entirely in Rust — no browser audio engine, no drift. Transport controls let you play, pause, seek, adjust tempo and volume. Recent files and settings persist across launches. Licensed Apache-2.0.
# 1. Fetch the bundled soundfont (~31 MB, one-time download)
./scripts/fetch-soundfont.sh
# 2. Install JS dependencies
npm install
# 3. Launch in dev mode (hot-reload frontend, Rust recompiles on change)
npm run tauri devnpm run tauri buildProduces a platform-native installer in src-tauri/target/release/bundle/.
src/ SvelteKit frontend (SPA, SSR off)
routes/+page.svelte Root page — state, playhead listener, file open
lib/
ipc.ts Typed wrappers for every Tauri invoke + event
types.ts Shared TS interfaces (Note, MidiData, Playhead, …)
theme.ts Three built-in themes (Cosmic, Nebula Rose, Abyss)
VizCanvas.svelte Canvas host + note scheduler
visualizations/
types.ts Visualization plugin interface
cosmic-aurora.ts Bundled aurora visualization (Canvas 2D)
Transport.svelte Play/pause/seek/tempo/volume controls
TrackList.svelte Track name list
SoundfontPicker.svelte SF2 loader + switcher
ThemePicker.svelte Theme selector
src-tauri/src/ Rust backend
lib.rs App setup, resource resolution, 60 Hz playhead loop
commands.rs Tauri command handlers
midi.rs MIDI parser → note timeline
audio.rs AudioEngine, render thread, rtrb ring buffer, cpal
analysis.rs Hann-windowed FFT, 16 log-spaced bands, RMS
db.rs Turso embedded SQLite cache
assets/soundfonts/ GeneralUser GS license
scripts/ fetch-soundfont.sh
docs/
ARCHITECTURE.md Data flow, module map, Visualization plugin contract
DECISIONS.md ADR log (8 decisions)
- Architecture — data flow, module map, Visualization plugin contract
- Design Decisions — ADR log
Apache-2.0 — see LICENSE.
GeneralUser GS v2.0 by S. Christian Collins
A permissive General MIDI soundfont bundled with midimi for out-of-box audio playback.
License: assets/soundfonts/GeneralUser-GS-LICENSE.txt
Source: https://github.com/mrbumpy409/GeneralUser-GS