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