Learn music like Duolingo teaches language.
Mulingo is an interactive web application that makes learning music fun, engaging, and accessible. Just like Duolingo breaks down language learning into bite-sized lessons, Mulingo teaches music theory and piano playing through progressive, gamified exercises with instant feedback.
- Interactive 88-Key Piano: Full-featured virtual piano spanning A0 to C8
- Real-time Sound Generation: Uses Web Audio API for authentic piano sounds
- Progressive Lessons: Structured lessons that build from basics to melodies
- Duolingo-Style Learning: Bite-sized exercises with instant feedback and progress tracking
- Visual Sheet Music: See notes on a staff as you play
- Visual Feedback: Highlights keys, shows note names, and provides exercise feedback
- Multiple Input Methods: Click keys with mouse or use computer keyboard
- Modern UI: Beautiful, responsive design that works on desktop and mobile
- A modern web browser (Chrome, Firefox, Safari, or Edge)
- No installation required - it's a pure web app!
-
Simple Method: Just open
index.htmlin your web browser- Double-click the
index.htmlfile, or - Right-click and select "Open with" your preferred browser
- Double-click the
-
Using a Local Server (Recommended for best experience):
# Using Python 3 python -m http.server 8000 # Using Python 2 python -m SimpleHTTPServer 8000 # Using Node.js (if you have http-server installed) npx http-server
Then open
http://localhost:8000in your browser
- Select a Lesson: Click on any lesson in the sidebar to start
- Start Lesson: Click the "Start Lesson" button to begin exercises
- Play Keys:
- Click keys with your mouse, or
- Use your computer keyboard (A, S, D, F, G, H, J, K, L for white keys)
- Follow Instructions: Read the instructions and complete the exercises
- Progress: Watch your progress bar fill as you complete lessons
- White Keys: A, S, D, F, G, H, J, K, L, ;, '
- Black Keys: W, E, T, Y, U, O, P
- Introduction to Piano Keys - Explore the keyboard layout
- Learning C, D, E - Master the first three white keys
- Learning F, G, A, B - Complete the white keys
- C Major Scale - Play your first scale
- Simple Melody: Twinkle Twinkle - Play your first song
- Chords: C Major - Play your first chord
- Simple Melody: Happy Birthday - Play a familiar tune
- Black Keys Introduction - Learn about sharps and flats
- Playing Sharps - Practice sharp notes (#)
- Playing Flats - Practice flat notes (♭)
- Treble Clef: Spaces then Lines - Memorize treble clef notes (FACE, EGBDF)
- Bass Clef: Spaces then Lines - Memorize bass clef notes (ACEG, GBDF(A))
- White Keys: Natural notes (C, D, E, F, G, A, B)
- Black Keys: Sharps/flats (C#, D#, F#, G#, A#)
- Visual Feedback: Keys highlight when pressed
- Note Labels: Toggle to show/hide note names on keys
- Progressive Learning: Lessons build on previous knowledge
- Exercise Types:
- Sequence: Play notes in order
- Chord: Play multiple notes together
- Melody: Play a complete song
- Real-time Feedback: Get instant feedback on your playing
- Key Highlighting: Keys light up when pressed
- Note Display: See the current note name and symbol
- Progress Tracking: Visual progress bar shows your advancement
- Exercise Completion: Badges show which notes you've played correctly
mulingo/
├── index.html # Main HTML structure
├── styles.css # Styling and layout
├── piano.js # Piano keyboard and sound generation
├── lessons.js # Lesson system and exercises
├── sheetmusic.js # Sheet music display
├── app.js # Main application controller
└── README.md # This file
- ✅ Chrome/Edge (recommended)
- ✅ Firefox
- ✅ Safari
- ✅ Opera
Note: Web Audio API support is required for sound generation. Most modern browsers support this.
- Start Slow: Take your time with each lesson
- Practice Regularly: Consistent practice is key to learning
- Use Both Methods: Try both mouse clicks and keyboard shortcuts
- Listen Carefully: Pay attention to the sounds each key makes
- Follow the Sequence: Complete lessons in order for best results
- Don't Rush: Accuracy is more important than speed
Potential features for future versions:
- More lessons and exercises
- Sheet music display
- Recording and playback
- Metronome
- Multiple instrument sounds
- Progress saving
- Advanced exercises
- Pure JavaScript: No frameworks required
- Web Audio API: For sound generation
- CSS Grid & Flexbox: For responsive layout
- Modern ES6+: Uses classes and modern JavaScript features
This project is open source and available for educational purposes.
Feel free to fork this project and add your own features! Some ideas:
- Additional lessons
- More songs
- Different instrument sounds
- Advanced exercises
- Multi-language support
Mulingo aims to make music education as accessible and engaging as language learning. Just as Duolingo has made learning languages fun and approachable for millions, Mulingo brings the same gamified, progressive learning approach to music theory and piano playing.
Start your musical journey today! 🎵