https://github.com/quentin-piot/piano-pro
Professional piano learning and MIDI visualization tool
https://github.com/quentin-piot/piano-pro
ai audio audio-processing linux macos midi music music-tool piano python rust sheet-music wgpu windows
Last synced: 11 days ago
JSON representation
Professional piano learning and MIDI visualization tool
- Host: GitHub
- URL: https://github.com/quentin-piot/piano-pro
- Owner: Quentin-Piot
- License: gpl-3.0
- Created: 2026-04-06T17:46:54.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2026-05-16T17:15:51.000Z (about 1 month ago)
- Last Synced: 2026-05-16T19:31:06.063Z (about 1 month ago)
- Topics: ai, audio, audio-processing, linux, macos, midi, music, music-tool, piano, python, rust, sheet-music, wgpu, windows
- Language: Rust
- Homepage:
- Size: 71.7 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PianoPro
**Open the web app:** [quentin-piot.github.io/piano-pro/app](https://quentin-piot.github.io/piano-pro/app/)
**Documentation:** [quentin-piot.github.io/piano-pro](https://quentin-piot.github.io/piano-pro/)
PianoPro is a professional piano learning and MIDI visualization tool, inspired by Guitar Pro but designed specifically for piano.
It extends [Neothesia](https://github.com/PolyMeilex/Neothesia), a great open-source MIDI visualizer written in Rust, with the features that serious learners actually need: sheet music display, auto-transcription, structured practice tools, and more.
The goal is a focused, no-nonsense workspace for piano practice and analysis — something closer to what Guitar Pro is for guitarists.
## What this version adds
Neothesia is GPU-accelerated, fast, and clean. This fork keeps all of that and builds the learning layer on top:
| | Neothesia | PianoPro |
|---|---|---|
| MIDI playback & visualization | ✅ | ✅ |
| Track mute / visibility in playback | Partial | ✅ |
| MIDI library with persistence | ❌ | ✅ |
| Audio → MIDI transcription | Partial | ✅ |
| Sheet music display | ❌ | 🚧 Planned |
| Hands-separate practice mode | ❌ | 🚧 Planned |
| Loop section (A/B repeat) | Partial | 🚧 Improving |
| Performance scoring | ❌ | 🚧 Planned |
| Fingering suggestions | ❌ | 🚧 Planned |
## Current Features
- MIDI file import and playback with synchronized piano visualization
- Audio file import with automatic transcription to MIDI (Basic Pitch model)
- MIDI library with persistent storage and piece renaming
- Continue button to instantly resume last played piece
- Per-track controls during playback (mute, auto, human-play modes)
- Track visibility toggle — hides notes from both waterfall and keyboard
- Transport bar always visible: speed control, progress scrubbing, loop markers
- Countdown before playback starts
- Play-along mode with required key detection
- Light-mode UI designed for extended practice sessions
## Web Version
PianoPro also runs directly in the browser:
- **Web app:** [quentin-piot.github.io/piano-pro/app](https://quentin-piot.github.io/piano-pro/app/)
- Uses the same core scenes and playback flow as the desktop app
- Includes MIDI import, playback, browser-persisted library, and built-in audio output
Current web limitations:
- Audio-to-MIDI import is desktop-only
- Custom SoundFont selection is desktop-only
- The browser build is currently best suited to recent desktop browsers
## Roadmap
Features planned or in progress, roughly by priority:
**Sheet music**
- Standard notation display synchronized with MIDI playback
- Scrolling score that follows the current position
- Chord symbol overlay
- Fingering number annotations
**Auto-transcription (in progress)**
- ✅ Audio file → MIDI conversion (WAV, MP3 via Basic Pitch)
- 🚧 Microphone input for real-time note detection and feedback
- 🚧 Chord recognition from audio
**Practice tools**
- Hands-separate mode (left hand / right hand isolation)
- Fine-grained loop control with visual A/B markers
- Practice tempo ramp (auto-increase speed as you hit targets)
- Configurable lead-in and countdown
**Analysis & feedback**
- Performance scoring: timing accuracy, missed notes, early/late statistics
- Session history and progress tracking over time
- Difficulty estimation per section
**Other**
- Fingering suggestion engine
- Metronome with subdivisions
- Export performance replay as video
- Custom color themes per track
## Screenshots
## Building
```bash
# Run the app
cargo run --release --bin neothesia
# Build
cargo build --release --bin neothesia
```
Requires a `default.sf2` soundfont in the project root or a system-installed one for audio playback.
## Credits
Based on [Neothesia](https://github.com/PolyMeilex/Neothesia) by PolyMeilex — a GPU-accelerated MIDI visualizer written in Rust.
## License
GNU GPL v3 — same as the original Neothesia project.