Skip to content

A browser-based harmonium built with JavaScript and Web Audio API. Supports keyboard and MIDI input, realistic sound playback, and touch interaction—ideal for Indian classical music practice.

Notifications You must be signed in to change notification settings

MrAkbari91/web-harmonium

Repository files navigation


🎹 Web Harmonium

A Modern Digital Indian Classical Music Experience

Experience the magic of the traditional Indian harmonium in your browser! A responsive, feature-rich implementation with authentic sounds, modern UI, and mobile-first design.

Web Harmonium Next.js TypeScript Tailwind CSS


✨ Key Features

🎵 Authentic Musical Experience

  • 🎶 High-quality audio samples – professional harmonium recordings
  • 🎼 Dual notation system – Indian Sargam (Sa Re Ga Ma) + Western notes
  • Real-time audio processing – ultra-low latency via Web Audio API
  • 🎹 Triple notation – keyboard shortcuts, Sargam, and Western notes
  • 🌟 Animated loader – harmonium-themed loading experience

🎨 Modern UI/UX

  • 🧭 Compact header with logo, status badges & theme toggle
  • 🎨 Music-inspired gradients & glassmorphism throughout
  • 📱 Fully responsive – desktop, tablet & mobile
  • Smooth animations and interactive hover effects
  • 📝 Interactive guide system – with local storage memory

🎹 Professional Harmonium Interface

  • 🖥️ Non-scrollable layout – perfect desktop fit
  • 📏 Authentic proportions for realistic digital feel
  • 🪕 Clean key design – focus on readability and playing
  • 🎼 Triple notation system for easy learning

🎛️ Advanced Controls

  • 🔊 Gradient volume control with live feedback
  • 🌌 Concert-hall quality reverb with instant toggle
  • 🎵 Smart transpose system with semitone counter
  • 🎚️ Full 7-octave range (0–6) with register descriptions
  • 🎶 Reed layering system for rich harmonium sound
  • 🎹 Full MIDI support – device selection, velocity sensitivity

📚 Learning & Education

  • 📖 Popup guide on first visit + always accessible button
  • 🎼 Detailed Sargam system + Western scale theory
  • 🎶 Popular Ragas guide (Yaman, Bhairav, Kafi, Malkauns)
  • 🎹 Advanced techniques – Meend, Gamak, Kan, Andolan
  • 🎛️ MIDI & setup tips for learners and professionals

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • Browser with Web Audio API
  • (Optional) MIDI keyboard

Installation

# 1. Clone
git clone https://github.com/mrakbari91/web-harmonium.git
cd web-harmonium

# 2. Install
npm install
# or yarn install
# or bun install
# or pnpm install

# 3. Start dev server
npm run dev
# or yarn dev
# or bun run dev
# or pnpm dev

Open 👉 http://localhost:3000

Production Build

npm run build
npm start
# bun run build
# bun run start

🎼 Play the Harmonium

Keyboard Layout

Black Keys:  1  2     4  5     7  8  9     -  =
White Keys: ` q w e r t y u i o p [ ] \

Indian Notation (Sargam)

  • Sa (S) → Foundation / Tonic
  • Re (R) → Movement / Emotion
  • Ga (G) → Harmonic Color
  • Ma (M) → Bridge to upper tetrachord
  • Pa (P) → Dominant & stable
  • Dha (D) → Subdominant depth
  • Ni (N) → Leading tone → Sa

🛠️ Technical Architecture

├── app/
│   ├── page.tsx              # Main harmonium interface
│   ├── layout.tsx            # App layout & theme
│   └── globals.css           # Global styles & animations
├── components/
│   ├── ui/                   # Shadcn UI components
│   └── theme-provider.tsx    # Theme management
├── public/
│   ├── harmonium.wav         # HQ harmonium sample
│   └── reverb.wav            # Convolution reverb sample
└── README.md                 # Documentation

Tech Stack

  • Next.js 15 (App Router + server components)
  • 🟦 TypeScript (strict mode)
  • 🎨 Tailwind CSS (animations, gradients, responsive UI)
  • 🎵 Web Audio API – low-latency sound engine
  • 🎹 WebMIDI API – full MIDI controller support

🌐 Browser Support

✅ Chrome 66+ ✅ Firefox 60+ ✅ Safari 14+ ✅ Edge 79+


🙏 Acknowledgments

  • 🎶 Traditional musicians preserving harmonium art
  • 🎛️ Audio engineers for HQ sample recordings
  • 🌐 Open-source community for tools & libraries
  • 👨‍🏫 Music teachers & cultural preservationists

🎵 Support the Project

If you enjoy Web Harmonium: ⭐ Star the repo • 🐛 Report bugs • 💡 Suggest features • 🔄 Share with friends • 💻 Contribute code


👨‍💻 Developer

Dhruv Akbari Full Stack Developer & Music Tech Enthusiast

🌍 GitHubCodepenLinkedInInstagramFacebookX

💌 Email: [email protected]


© 2025 Web Harmonium Bridging Tradition with Technology, Built with ❤️ for Music Lovers


About

A browser-based harmonium built with JavaScript and Web Audio API. Supports keyboard and MIDI input, realistic sound playback, and touch interaction—ideal for Indian classical music practice.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published