
RESOURCE · 30/8/2026
An AI-Powered Practice Companion for Indian Classical Singers

Indian classical singers require live instrumental accompaniment during practice sessions, typically a tanpura drone and a tabla or mrudangam player. This dependency creates real barriers to consistent practice:
No existing application provides intelligent, raga-aware accompaniment for both Hindustani and Carnatic traditions in a single platform. Raga addresses this gap.
Raga is built for:
These users need a practice tool that is musically correct — not a generic metronome or drone app, but one that understands raga grammar and traditional tuning systems.
Raga removes the single biggest logistical barrier to self-directed classical music practice: dependency on another person. By providing an always-available, raga-aware accompanist, it enables:
Raga is a web-based AI-powered practice companion for Indian classical singers, supporting both Hindustani and Carnatic traditions. It provides on-demand instrumental accompaniment, real-time pitch detection, raga validation, and practice session tracking, enabling singers to practice anytime without needing a live accompanist.
Raga's current scope covers four pillars:
Tabla/mrudangam accompaniment, melodic AI (violin/harmonium), gamaka detection, and janya raga support are explicitly out of scope for the current build and are addressed under Future Plans below.
Frontend
Backend
AI/ML
Features built to date (all complete):
Core
AI/ML
What makes Raga unique is the Katapayadi system: the 72 Melakarta ragas are mathematically generated using the ancient Katapayadi encoding system, rather than stored as a manually curated database.
The app computes any raga's scale algorithmically from its number, with no manual database entry required.
ML pitch detection, in more detail:
The YIN algorithm (de Cheveigné & Kawahara, 2002) detects pitch through four steps: a difference function that computes the squared difference between time-shifted copies of the audio buffer; a cumulative mean normalized difference that removes bias toward zero; threshold detection that identifies the first tau below a 0.1 threshold; and parabolic interpolation that refines the period estimate.
The detected frequency is converted to a MIDI note number, then to a semitone offset relative to Sa, then mapped to a Carnatic swara name using raga-context-aware logic that resolves shared semitones (for example, R2=G1).
For raga validation, the sung semitone is checked against a set of allowed semitones derived from the selected Melakarta's Ri, Ga, Ma, Dha, and Ni positions, returning a simple valid/invalid result.
For drift detection, RMS energy tracking detects note onsets; inter-onset intervals are averaged to compute the singer's BPM, which is compared to the app's BPM with a tolerance of plus or minus 5 BPM.
Existing tanpura and metronome apps provide static drone playback or tempo tracking, but none combine raga-aware pitch validation for both Hindustani and Carnatic traditions with an algorithmically generated Melakarta database. Raga's differentiation is structural: because the 72 Melakarta scales are computed rather than hand-entered, the system can validate against any of them from day one, without the manual curation bottleneck competing apps face when trying to cover the full raga system.
Database architecture (Firebase Firestore):
| Collection | Fields | Purpose |
|---|---|---|
| Sessions | userId, shruti, taal, laya, tradition, duration, date | Practice history |
| Favourites | userId, name, shruti, taal, laya, tradition | Saved combinations |
| Users | uid, metronome, drift, hq, streak, lastPracticeDate | Settings and gamification |
| Ragas (Phase 2) | name, melakartaNumber, arohana, avarohana, chakra, vadi, samvadi, pakad | Raga grammar database |
Sample raga record (Phase 2 design):
{
"name": "Mayamalavagowla",
"melakartaNumber": 15,
"chakra": "Agni",
"tradition": "carnatic",
"arohana": ["S", "R1", "G3", "M1", "P", "D1", "N3", "S'"],
"avarohana": ["S'", "N3", "D1", "P", "M1", "G3", "R1", "S"],
"ri": "R1", "ga": "G3", "ma": "M1", "dha": "D1", "ni": "N3",
"equivalentHindustani": "Bhairav",
"pakad": ["S", "R1", "G3", "M1", "P"],
"time": "Early morning",
"mood": "Devotional, serious"
}
Tech stack summary:
| Layer | Technology |
|---|---|
| Frontend Framework | React.js |
| Audio Playback | Tone.js |
| Audio Capture | Web Audio API |
| Pitch Detection | YIN Algorithm + TensorFlow.js |
| Authentication | Firebase Auth (Google Sign-In) |
| Database | Cloud Firestore |
| Deployment | Vercel (planned) |
| Version Control | GitHub |
Challenges and Plan B: Raga validation depends on clean microphone input; in noisy environments, YIN's threshold detection can misfire. The current mitigation is the RMS-based onset detection layer, which filters low-energy input before it reaches the pitch estimator. If ambient noise remains a persistent issue for users, a fallback of user-adjustable sensitivity thresholds is planned.
The current build (tanpura drone, shruti support, Google authentication, practice history, favourites, streaks, drift detection, pitch detection, raga validation, and the Katapayadi circle) is complete. Phase 2 and Phase 3 timelines are outlined below under Future Plans; costs are limited to Firebase/Firestore usage and Vercel hosting, both on free or low-tier plans at current scale.
Phase 2 (pre-launch):
Phase 3 (post-launch):
Raga demonstrates that a combination of traditional music theory (the Katapayadi system, swara sthanas), modern web audio technology (Web Audio API, Tone.js), and machine learning (YIN pitch detection, TensorFlow.js) can solve a real, practical problem for Indian classical musicians. The mathematical elegance of the 72 Melakarta system, where every raga's scale is computable from its number, makes algorithmic raga validation possible without a manually curated dataset. This is Raga's core technical innovation.