Play a real sampled Indian classical harmonium directly in your browser. No plugins, no installation. Use your keyboard or MIDI device to learn ragas, explore Sargam notation, and add reverb effects. Built with Web Audio API.
- ๐น Keyboard Playing - Use your computer keyboard to play Indian classical ragas
- ๐๏ธ MIDI Support - Connect any MIDI device (keyboards, controllers) for authentic control
- ๐ Sargam Notation - Real-time Sargam notation logging as you play
- ๐ Reverb Effects - Add realistic acoustic space and depth
- ๐ผ Multi-Octave - Explore 7 different octaves
- ๐ต Extra Reeds - Layer harmonics (0-6 stacked notes)
- ๐ฑ Mobile Ready - Fully responsive design with landscape support
- โก No Installation - Pure browser-based, no plugins needed
- ๐ Secure - HTTPS ready with security headers
- ๐ฒ PWA Ready - Installable as a progressive web app
# 1. Clone the repository
git clone https://github.com/devchauhann/harmoniumweb.git
cd harmoniumweb
# 2. Open in browser (no build required!)
# Option A: Open index.html directly
open index.html
# Option B: Use a local server (recommended)
python3 -m http.server 8000
# Then visit http://localhost:8000Live Demo: harmoniumweb.vercel.app
White Keys (Natural Notes):
` q w e r t y u i o p [ ] \
Black Keys (Sharp Notes):
1 2 4 5 7 8 9 - =
Tab- Add comma (rest) to notationBackspace- Delete last characterDelete- Clear entire notation
| Control | Function | Range |
|---|---|---|
| Volume | Adjust sound level | 0-100% |
| Reverb | Toggle acoustic effect | On/Off |
| Transpose | Change root note | -11 to +11 semitones |
| Octave | Select octave | 0-6 |
| Extra Reeds | Layer harmonics | 0-6 notes |
| MIDI Device | Connect MIDI hardware | Auto-detect |
harmoniumweb/
โโโ index.html # Main application (single file)
โโโ manifest.json # PWA configuration
โโโ robots.txt # SEO crawler directives
โโโ sitemap.xml # Desktop sitemap
โโโ sitemap-mobile.xml # Mobile sitemap
โโโ README.md # This file
โโโ og-image.png # Social media preview (1200x630)
โโโ harmonium.wav # Harmonium audio sample
โโโ reverb.wav # Reverb impulse response
โโโ .htaccess # Server configuration
โโโ favicon/ # App icons (all formats)
โโโ favicon.ico
โโโ favicon.svg
โโโ favicon-16x16.png
โโโ favicon-32x32.png
โโโ favicon-96x96.png
โโโ apple-touch-icon.png
โโโ browserconfig.xml
โโโ manifest.webmanifest
โ
Comprehensive Meta Tags - Title, description, keywords, author
โ
Open Graph Tags - Optimized for social media sharing
โ
Twitter Card - Special formatting for Twitter/X
โ
Schema Markup - JSON-LD for Google Rich Snippets
โ
Sitemaps - Desktop & mobile sitemaps for crawlers
โ
Favicon - Multi-format icons for all platforms
โ
PWA Manifest - Progressive Web App configuration
โ
Mobile Optimized - Responsive design with media queries
โ
Performance - Gzip compression, browser caching, HTTP/2
โ
Security - HSTS, CSP, X-Frame-Options headers
- "web harmonium"
- "online harmonium"
- "Indian classical music"
- "Sargam notation"
- "harmonium player"
- "MIDI harmonium"
- "music education"
| Browser | Min Version | Status |
|---|---|---|
| Chrome | 90+ | โ Fully Supported |
| Firefox | 88+ | โ Fully Supported |
| Safari | 14+ | โ Fully Supported |
| Edge | 90+ | โ Fully Supported |
| Mobile Safari | 14+ | โ Landscape Mode |
| Chrome Mobile | 90+ | โ Landscape Mode |
- Frontend - HTML5, CSS3 (variables, media queries, animations)
- Audio - Web Audio API, MIDI API, Sampled harmonium sounds
- State - localStorage for persistence
- PWA - Service Worker, Manifest, Installable
- Performance - Gzip, browser caching, resource preconnection
- Deployment - Vercel (free tier)
- Load Time - < 1 second (optimized assets)
- FCP - First Contentful Paint < 800ms
- LCP - Largest Contentful Paint < 1.2s
- CLS - Cumulative Layout Shift < 0.1
- Performance Score - 95+/100 (Lighthouse)
# No build step required! Just serve the files
python3 -m http.server 8000
# Or with Node.js
npx http-server
# Or with Live Server (VS Code extension)
# Install: "Live Server" by Ritwick Dey
# Right-click index.html > Open with Live ServerThe entire app is in a single index.html file for simplicity:
- CSS variables are at the top for easy theming
- Audio parameters are easily adjustable
- Keyboard mapping can be modified
- Add your own effects or samples
Contributions are welcome! Here's how:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Test in multiple browsers
- Commit with clear messages (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Found a bug? Report it
- Have an idea? Suggest it
This project is licensed under the MIT License - see the LICENSE file for details.
Dev Chauhan
- GitHub: @devchauhann
- Twitter: @devchauhann
If you find this project useful:
- โญ Star the repository
- ๐ Report bugs
- ๐ก Suggest features
- ๐ Share with friends
- ๐ข Follow on social media
Last Updated: April 1, 2026
Current Version: 1.0.0
Status: โ
Production Ready
