
- Project
- SONIQRA
- Sector
- Own product · Music education
- Services
- SaaS product, Audio engine, Assessment engine, Interactive sheet music
- Year
- 2026
A music teaching platform that listens to the student play and tells the teacher where they improved and where they got stuck.
The music teacher sends a voice note on WhatsApp asking the student to practise a song for Sunday. Between that message and the rehearsal, they know nothing: not whether the student practised, not where they got stuck, and they find out on the day, when it is too late to fix.
On the other side, the student practises alone repeating the same mistake, because nothing tells them the F sharp is coming out natural. SONIQRA exists to close that gap.
The challenge
- Actually listen to the instrument: turn the microphone signal into note, pitch in cents, onset and duration, accurately enough to become an assessment.
- Not lie about its own accuracy. A MIDI keyboard and a guitar picked up by a phone do not allow the same promise.
- Never punish the student for an equipment limitation: if the detection was not sure, that cannot become their mistake.
- Read real notation, not a drawing: MusicXML and MIDI with voices, tablature, anacrusis, transposing instruments, lyrics and chord symbols.
- Measure the equipment's delay before judging rhythm, because a Bluetooth headphone lags more than the difference being measured.
The solution
The chain is complete: interactive sheet music, real instrument capture, assessment, pedagogical diagnosis, study recommendation and teacher follow-up. The engine finds the pattern, not the isolated slip: when the student misses the same F sharp several times, the system points at the note, not at the session.
Honesty is an architectural rule, not marketing copy. The platform declares across four levels what it can assess for each combination of instrument and input, and shows that to the student before they begin. A low-confidence event drops out of the maths entirely, neither as a hit nor as a miss. And a metric that cannot be measured comes out undefined, never zero: drums have no pitch, so the tuning card simply does not exist on that screen.












Result
The technical core is complete and covered by 322 automated tests, 104 of them in the music theory layer alone. TypeScript in strict mode, with exactOptionalPropertyTypes.
Stack
- Next.js 16
- React 19
- TypeScript
- Supabase
- PostgreSQL
- Zod
- Web Audio API
- Web MIDI
- Vitest
- Tailwind v4
The promise changes with the technology
There are four declared levels. MIDI is level A: note, onset, duration, velocity and pedal, exact. One note at a time over audio is level B: note, pitch in cents, onset and stability. A chord over a microphone is level C: chord class and change, with confidence. Acoustic percussion is level D: onsets, rhythm and subdivision. A piano over MIDI is A; the same piano over a microphone is C, and the interface says so before the student starts.
The bug a test found
A pitch detector fed 880 Hz reported 176 Hz with maximum confidence: it had locked onto the subharmonic. That error does not show up by ear, it shows up by measurement. Hence the subharmonic guard in the engine and the benchmark harness that runs against synthesised signal on every change.
Calibrate before judging rhythm
Latency is measured by median and median absolute deviation, not by a single point, and the engine refuses to compensate when the measurement is not reliable. Swapping wired headphones for Bluetooth invalidates the profile, because the delay changes and the rhythm measurement would go with it.




