Checking your session…
{{ signInReason }}
{{ authError }}
By continuing, you agree to the Terms and Privacy Policy.
You're set up as a teacher — here's what you can do
Welcome to NoteHeads — which path do you want to take?
{{ onboardingHint }}
{{ onboardingSummary }}
For beginners & amateurs{{ learnInstrumentSuffix }}
{{ openStep.instructions }}
{{ openStep.instructions }}
Grammar for each raag — aaroh, avroh, pakad, vadi & samvadi — pulled from the same reference data NoteCheck AI grades against. Open NoteSwar afterward to work with what you've learned.
Loading raags…
{{ raagLibraryError }}
No raags available right now.
Loading…
{{ selectedRaagError }}
{{ selectedRaagAaroh }}
{{ selectedRaagAvroh }}
{{ selectedRaagPakad }}
{{ selectedRaagVadi }}
{{ selectedRaagSamvadi }}
NoteSwar opens with this raag's aaroh ready to play. NoteCheck grades you singing it.
Your account, emails and plan in one place.
Plus and Pro renew automatically each billing cycle until you cancel — pay by card/UPI below, or email us to settle up another way and redeem the code we send in Profile.
₹0
{{ plusPrice }}{{ proPriceUnit }}
{{ plusStatus }}
{{ proPrice }}{{ proPriceUnit }}
{{ proStatus }}
Custom/seat
{{ mySubscriptionLabel }} — renews {{ mySubscriptionRenewsOn }}.
{{ mySubscriptionLabel }} — cancelled, won't renew. You keep access until {{ mySubscriptionRenewsOn }}.
{{ subscriptionStatusMessage }}
Anything still in progress finishes on its own — you can close this page.
No payments yet — once you have one, receipts and refund requests show up here.
Email socials.noteheads.in@gmail.com or soundcheck@noteheads.in
{{ refundStatus }}
{{ planSummary }}
{{ planGrantLabel }}
Sold in {{ noteCheckBlockLabel }} blocks, charged on the length of what you record — never on how long the analysis takes.
Each code is single use. A student redeems it to join your roster. Orders of {{ bulkCodeThreshold }} or more are quoted individually — and earn you full access for free.
{{ codeOrderMessage }}
Tell us a little about your group and we will reply to {{ userEmail }}. You can also email {{ quotationEmail }} directly.
{{ issuedCodesText }}
Also emailed to you.
{{ displayNameStatus }}
Receipts, access codes and replies to your own requests always reach {{ userEmail }}. The only optional email is below.
{{ emailStatus }}
Got a one-time code from your school or from us? Enter it here — an institution code joins your school, a Plus or Pro code unlocks that plan straight away.
{{ redeemMessage }}
Only applies to email accounts, not Google sign-in.
Deleting your account removes your saved sessions and compositions. This cannot be undone.
Owner-only overview. Payment keys and OAuth secrets belong on the server, never in this browser.
Wraps the whole app in a phone-width frame so you can check the mobile layout without leaving your laptop.
Off. Billing shows plans, but checkout is disabled until Razorpay is connected.
Every account that has signed in with Google (or email) at least once, newest first.
{{ adminUsersError }}
No users yet.
Sends one email per matching recipient through the configured email provider (Brevo/Resend).
{{ campaignSendError }}
{{ campaignSendResultLabel }}
{{ campaignsError }}
No campaigns sent yet.
Stored server-side only. A variable already set shows its last 4 characters as a hint — leave the value blank to keep it unchanged.
No students match "{{ inst.searchQuery }}".
No requests yet — institutions can ask for codes from their portal.
No refund requests. This lists tickets, not the actual refund — issue the money back from your Razorpay/Dodo dashboard, then mark it here.
One-time fix for subscription payments credited before a bug in ticket creation was fixed — those were billed and granted correctly, they just never showed up as a receipt. Safe to run more than once.
{{ backfillStatus }}
Generate single-use codes a school can hand out to students, each redeemable once for a free seat.
Kill switch for all checkout flows (Razorpay + Dodo). Turning this off blocks new orders and webhooks immediately, even if a provider is configured.
Ships off: while off, usage is measured but nobody is ever refused. Turning it on enforces the minutes below — a learner is topped up once per calendar month, then billed against a code once spent.
Kill switch for graded, scored attempts site-wide. Turning this off forces every attempt into practice mode on the server, regardless of what a student's toggle says — no numeric score is computed or shown anywhere, not even a rough one. Practice feedback keeps working either way.
{{ integ.desc }}
{{ integ.testHint }}
{{ integ.testResult }}
{{ integrationsError }}
Values are saved server-side only (never rendered back into the browser). A field that's already set shows a masked hint via its placeholder — leave it blank to keep the current value.
{{ gaOverviewError }}
No tool_id events reported yet for this range.
Every server error — a route that threw, an unhandled promise rejection, a crash — lands here the moment it happens. Check this before asking anyone to reproduce a bug: the message, route, and request id it needs are usually already sitting in this list.
{{ errorLogMessage }}
Nothing logged — either it's quiet, or metadata hasn't loaded yet.
Sell a subscription however you like — bank transfer, cash, invoice — then hand over a code. Redeeming it grants the plan straight away, with no payment terminal in the loop. Each code works once.
A label becomes the code's own prefix — e.g. buying through Marik mints codes like MARIK-A1B2C3 — so a reseller's batch is recognisable at a glance below.
{{ codeGenMessage }}
{{ generatedCodesText }}
Every code ever issued, newest first — whether it's been activated, when, and by whom.
{{ codesListMessage }}
No codes match this filter yet.
| Code | Label | Plan | Created | Status | Redeemed |
|---|---|---|---|---|---|
| {{ row.code }} | {{ row.label }} | {{ row.plan }} | {{ row.createdLabel }} | {{ row.statusLabel }} | {{ row.redeemedInfo }} |
Lessons and tools come straight from the codebase (the curriculum and the tool list), so there is nothing to type in. Re-index after the curriculum or the extra videos change so Prof's search stays current.
{{ profStatus }}
{{ profVideosError }}
Upload an XML file with one <lesson> element per lesson, each carrying track (hindustani-music / western-music), level (beginner / intermediate), label, and url attributes. Matches the noteheads.in site export format.
{{ lessonXmlStatus }}
These merge into the Theory Hub library alongside the built-in catalogue.
Add your students, set work and see how they are doing.
Students join by email or with a class code you share. It is free to add students. Only upgrades cost money.
{{ wb.subtitle }}
Share this code. Students enter it in Settings under "Redeem an access code". Joining is free.
Buy codes now and pay instantly, ask NoteHeads to approve a request by hand, or pay per seat at ₹{{ myInstitutionPortal.pricePerSeat }}/seat/mo.