Onset runs entirely in the browser and talks directly to the user's DJ controller via the Web MIDI API — no driver install, no app, just plug in and go. Every controller event (jog wheel, faders, cue, EQ knobs) streams into a scoring engine that compares the student's actions against the lesson's expected events on a 60Hz tick.
The lesson engine is where the pedagogy lives. Lessons are structured as small, completable units with explicit scoring rubrics — timing tolerance under 50ms, fader curve, EQ depth — and the engine produces both a numeric score and event-level annotations like 'low end clashed at bar 5' or 'transition late by 1.2 beats.' Sessions are recorded as MIDI events plus audio plus scores, so a student can scrub a take frame-accurately and critique it after the fact.