An open-source app to practice piano chords, arpeggios, and scales.
Project Details
Piano fitness app - focusing on technique to supplement your repertoire practice. MIDI keyboard exercises, progress tracking. For piano students and teachers. Built with Flutter.
Piano Fitness: Building Musical Fluency Through Comprehensive Technical Practice
Background and Motivation
Through piano instructors like Warren McPherson and Kevin Connolly, I learned a fundamental truth: mastering technical foundations across all keys creates the muscle memory essential for musical freedom. To excel in improvisational styles like gospel and jazz, you need comprehensive knowledge of scales, modes, arpeggios, and chord progressions in every key.
When I looked for tools to support this technical development, I discovered a gap. Most piano applications focus on repertoire (teaching specific songs) or sight-reading skills. Apps like Simply Piano and Flowkey demonstrate the power of responsive sheet music with real-time feedback, but apply this primarily to repertoire rather than systematic technical training. Traditional method books provide structure but lack interactive feedback.
Piano Fitness addresses this gap by focusing exclusively on building technical proficiency across all keys. Rather than competing with repertoire apps, it’s a complementary tool for systematic technical development that creates the keyboard fluency necessary for musical freedom.
The Solution
Piano Fitness is a MIDI-connected practice application that provides interactive exercises for scales, modes, arpeggios, and chord progressions across all keys. The app connects to any standard MIDI keyboard and provides real-time visual feedback as you practice.
Current features:
- Interactive piano interface with color-coded hand assignments
- Finger number guidance above keys
- Real-time feedback showing played notes with letter names
- Integrated metronome for tempo practice
- Single-hand exercise library (scales, arpeggios, chord patterns)
- Support for 2-4 octave practice ranges (accommodates 88-key instruments)
Educational approach: Exercises build proper technique from the foundation with single-hand patterns before progressing to two-handed work. This reduces cognitive load and allows focus on proper execution. The interface uses game-like progress tracking to maintain motivation while students develop muscle memory for essential patterns.
Technical Implementation
Platform Choice: Flutter
Why Flutter:
- Cross-platform support (desktop and mobile potential)
- Strong support for real-time graphics and animations
- Active community and growing ecosystem
Alternatives considered:
- Web-based: Inconsistent Web MIDI support across browsers, especially mobile
- Godot: MIDI functionality wasn’t fully cross-platform
MIDI vs. Audio Input
Physical MIDI keyboard required rather than microphone-based pitch detection. This decision prioritizes user experience over hardware convenience:
- MIDI provides: Precise note data with minimal latency, enabling immediate feedback
- Audio detection challenges: Computational complexity, latency issues, difficulty detecting multiple simultaneous notes with piano overtones
- Result: Clean, responsive practice experience using mature, standardized protocol
Current Architecture
Technology stack:
- Flutter: Core platform and MIDI processing
- Dart: Application logic and exercise definitions
- MIDI protocol: Keyboard communication
Interface design:
- Color-coded keys for hand assignment
- Finger numbers for proper technique
- Letter names for theory reinforcement
- Clean, focused layout avoiding information overload
Challenges and Solutions
Balancing Technique with Engagement
Technical exercises risk monotony. Solution: Game-like progress tracking with visual improvement indicators, plus exercises incorporating meaningful musical patterns rather than purely mechanical motions.
Effective Visual Feedback
Multi-layered approach provides comprehensive guidance without overwhelming: color-coding for hand assignments, finger numbers for technique, letter names for theory understanding.
Structured Progression
Starting with single-hand exercises before two-handed patterns allows solid muscle memory development one hand at a time, creating a structured learning pathway from fundamental to complex.
Open-Source Sustainability
Committed to open-source core for accessibility and community contribution while exploring optional premium lesson packs for sustainable development support.
Development Status
Current State (Working Prototype)
Functional features:
- Responsive piano interface with visual feedback
- Integrated metronome
- Single-hand exercise library across multiple keys
- Real-time MIDI input processing
- Progress tracking foundation
Current use: Developed as a tool for my own practice needs, ensuring it addresses real practice challenges. Already provides valuable support for developing muscle memory across scales, modes, and chord patterns.
Immediate Roadmap
- Exercise expansion: Comprehensive two-handed patterns
- Practice timer: Track technical practice time
- Quality metrics system: Monitor legato playing and accuracy (not just completion)
- Metrics visualization: Help students track progress over time
- Structured progression: Guide users from basic to advanced proficiency
Quality Over Speed
Planned metrics system will discourage rushing. Rather than simply tracking completion, the system will monitor:
- Legato: How smoothly notes connect
- Accuracy: Error tracking during exercises
- Principle: Slow, accurate practice leads to better long-term results
Long-Term Vision
Evolving into a comprehensive technical training platform with:
- Open-source core enabling community contributions
- Optional premium content for specialized training (different styles, advanced techniques)
- Integration with traditional instruction as a complementary tool
- Standard resource for developing keyboard fluency
Personal Reflections
Developing Piano Fitness demonstrates the value of “scratch your own itch” software creation. Identifying gaps based on personal experience often reveals opportunities that market research alone might miss. As both developer and user, I evaluate features based on practical utility in real practice situations rather than abstract metrics.
The project reinforces the complementary nature of different learning approaches. By focusing specifically on systematic technical development rather than trying to create a comprehensive “do everything” application, Piano Fitness can integrate seamlessly with existing repertoire apps and traditional instruction.
From a technical perspective, selecting Flutter based on specific needs (real-time MIDI, cross-platform support) rather than general popularity has significantly streamlined development. This allowed focus on educational content rather than infrastructure, proving the importance of matching tools to requirements.
As Piano Fitness evolves, I aim to contribute to the broader piano education ecosystem by addressing the specific aspect that enables musical freedom: comprehensive technical foundations across all keys. This complements rather than competes with existing approaches, helping students develop keyboard fluency necessary for creative expression across musical styles.