Linux desktop app for live MIDI piano play, recording, editing, and falling-note practice.
- Live USB MIDI input to audio output (headphones/speakers)
- Three synth backends:
SFZ (sfizz)SF2 (FluidSynth)Simple Synth(built-in fallback)
- Instrument presets:
Acoustic Grand PianoClean Electric Guitar
- MIDI import/edit/save in a piano-roll editor
- WAV and MIDI recording
- Falling-note view with 88-key keyboard visualization
- MIDI library browser with filtering/sorting
- Built-in metronome with BPM and count-in controls
From repository root:
makepkg -siOr:
bash scripts/install_arch.shbash scripts/install_linux.shOptional installer flags:
bash scripts/install_linux.sh --no-default-soundfonts
bash scripts/install_linux.sh --no-system-audio-depspython main.pyIf installed through package/launcher, run piano-player from your app menu or terminal.
- MIDI library folder:
~/.config/piano-player/MIDI - Preferred sampled backend:
SFZ (sfizz)when available - Fallback sampled backend:
SF2 (FluidSynth)when SFZ is unavailable - Final fallback: built-in
Simple Synth
You can use your own .sfz and .sf2 files.
Ways to load files:
Synthmenu -> load per-instrument file- Place files in
soundfonts/ - Set environment variables:
PIANO_PLAYER_SFZPIANO_PLAYER_SOUNDFONTSOUNDFONT_PATH- Per-instrument overrides:
PIANO_PLAYER_SFZ_PIANOPIANO_PLAYER_SFZ_GUITARPIANO_PLAYER_SOUNDFONT_PIANOPIANO_PLAYER_SOUNDFONT_GUITAR
To fetch the default bundled-quality instrument sets in a source checkout:
bash scripts/download_default_soundfonts.shFile > Open MIDI...- Double-click piano roll to add a note
- Right-click/Delete selected notes to remove
- Drag notes to move/resize
File > Save MIDI...
- No audio:
- Verify output device in
Settings - Ensure
python-sounddeviceandportaudioare installed
- Verify output device in
- SF2 not loading:
- Install
fluidsynthandpython-pyfluidsynth
- Install
- SFZ not loading:
- Install
sfizz(sfizz-libon Arch)
- Install
- Crackle/dropouts:
- Increase buffer size:
PIANO_PLAYER_BUFFER_SIZE=512 python main.py- Or force low-latency profile:
PIANO_PLAYER_AUDIO_LATENCY=low python main.py- Project code:
MIT(LICENSE) - Bundled instruments include
CC-BY-3.0andCC0-1.0 - Third-party/license summary:
THIRD_PARTY_LICENSES.md