An interactive web application that helps users learn to play piano anywhere, anytime through real-time feedback and guided practice.
This application uses computer vision to detect hand movements and provides real-time feedback on piano playing technique. It displays sheet music with fingering annotations and gives feedback based on performance accuracy.
- Interactive Sheet Music: Display of treble and bass clef notes with proper musical notation
- Fingering Annotations: Visual indicators for which fingers to use on each note
- Hand Detection: Real-time webcam tracking of hand positions
- Practice Modes: Options to practice with left hand, right hand, or both hands
- Performance Feedback: Emotional feedback on your playing accuracy
- Chat Log: History of feedback messages for tracking progress
- Music Generation: AI-based generation of new practice pieces
- Metronome: Adjustable tempo for practice sessions
- Demo Mode: Listen to how the piece should sound
- Next.js (React framework)
- TypeScript
- TailwindCSS
- VexFlow (for sheet music rendering)
- TensorFlow for hand tracking
- Node.js (v14 or later)
- npm or yarn
- A webcam for hand tracking functionality
-
Clone the repository:
git clone [repository-url] cd [repository-name] -
Install dependencies:
npm install # or yarn install -
Create a
.env.localfile in the frontend folder with your API keys:cd frontend touch .env.localAdd the following to your
.env.localfile:COHERE_API_KEY=your_cohere_api_key_here GEMINI_API_KEY=your_gemini_api_key_here -
Start the development server:
npm run dev # or yarn dev -
Open your browser and navigate to
http://localhost:3000
- Select Practice Mode: Choose to practice with left hand, right hand, or both hands
- Play the Notes: Follow the highlighted notes and fingerings on the sheet music
- Get Feedback: Receive AI-backed feedback on your performance accuracy
- Generate New Music: Click "Generate New Music" to practice different pieces
- Use Demo: Click the "Demo" button to hear how the piece should sound
- Adjust Tempo: Use the metronome controls to set your preferred practice speed

