Documentation
Complete guide for using and developing with KeysBattle
π KeysBattle Overview
KeysBattle is a web-based piano learning application that combines the fun of gaming with music education. Play with your MIDI keyboard or computer keyboard, track your progress, and compete on global leaderboards.
Key Features
- β Full MIDI keyboard support via Web MIDI API
- β 4 game modes: Listening, Learn, Practice, and Arcade
- β Presentation modes: Falling Notes (available), Sheet Music (coming soon)
- β Advanced scoring system with accuracy, combos, and timing
- β AI-powered smart hand separation (in development - accuracy improvements coming)
- β Optimal fingering suggestions (coming soon)
- β Detailed progress tracking and statistics
- β Global and per-song leaderboards
- β Extensive music library
Tech Stack
Frontend: SvelteKit 2.0, Svelte 5 (Runes), TypeScript, Tailwind CSS
Rendering: Pixi.js 7.3 (WebGL), OpenSheetMusicDisplay
Audio/MIDI: Web MIDI API, @tonejs/midi, Tone.js
Backend: Supabase (PostgreSQL, Auth, Storage)
Deployment: Vite, Vercel/Netlify compatible
π Resources
Internal Documentation
- β’ README.md: Project overview
- β’ CLAUDE.md: Guide for AI assistants
- β’ Setup guides: Supabase, Google OAuth, Admin
- β’ AUDIO_SYSTEM.md: Detailed audio system
- β’ NOTESEPARATION.MD: Hand separation
- β’ SHEET_MUSIC_MODE.md: Sheet music mode
External Links
- β’ SvelteKit: kit.svelte.dev
- β’ Pixi.js: pixijs.com
- β’ Supabase: supabase.com/docs
- β’ Web MIDI: developer.mozilla.org/en-US/docs/Web/API/Web_MIDI_API
- β’ OpenSheetMusicDisplay: opensheetmusicdisplay.github.io