- Add Prime genre section (6 beginner songs: Twinkle Twinkle, Mary Had a Little Lamb, Happy Birthday, Chopsticks, Lavender's Blue, Shortnin' Bread) - Update genre count from 16 to 17 - Update synth piece count from 91 to 97 - Update line count from ~3000 to ~4500 https://claude.ai/code/session_01FNZw4curZbJp38HFUaPXwR
225 lines
8.0 KiB
Markdown
225 lines
8.0 KiB
Markdown
# Drum Rhythm Game
|
|
|
|
A browser-based drum rhythm game. Notes scroll down the screen and you hit the matching drum pad in time — like Rock Band, but it runs entirely in your browser with no server, no dependencies, no install. Just open `index.html`.
|
|
|
|
Works with **keyboard**, **Wii Rock Band drums**, **Xbox/PS Rock Band drums**, **Guitar Hero drums**, or any USB gamepad. Includes a **Remap Pads** button to configure any controller.
|
|
|
|
## How to Play
|
|
|
|
1. Open `index.html` in Chrome or Edge
|
|
2. Pick a genre and song
|
|
3. Adjust speed/volume sliders if desired
|
|
4. Click **Start**
|
|
5. Hit the pads when notes reach the line:
|
|
- **F** = Red (Tom)
|
|
- **G** = Yellow (Snare)
|
|
- **H** = Blue (Hi-hat)
|
|
- **J** = Green (Tom)
|
|
- **Space** = Kick (Bass drum)
|
|
- **Escape** = Pause
|
|
6. **Right-click** any genre tab or song to hide it
|
|
|
|
## Features
|
|
|
|
- **17 Genres** across two modes: synth orchestra songs + drum beat patterns
|
|
- **97 synth pieces** with full synthesized orchestra background
|
|
- **120 drum patterns** across 8 genres
|
|
- **Drums or Orchestra mode** — choose whether pad hits play drum sounds or the actual melody note
|
|
- **Speed control** — slow down to 50% for practice or speed up to 150%
|
|
- **Volume control** — adjustable master volume
|
|
- **Pause/Resume** — press Escape or the pause button mid-song
|
|
- **Gamepad Remap** — configure any USB drum kit with the Remap Pads button
|
|
- **Hide genres/songs** — right-click to hide, "Show All" to restore, saved across sessions
|
|
- **Multiplayer** — take turns, scores compared at the end
|
|
- **Pad Toggles** — turn pads on/off to adjust difficulty
|
|
- **Preview** — hear any song before playing
|
|
- **Leaderboard** — scores saved locally
|
|
- **Settings persistence** — speed, volume, gamepad mapping, hidden items all saved to localStorage
|
|
- **Math-protected reset** — Reset All Data requires solving a math problem to prevent accidents
|
|
|
|
## Song List
|
|
|
|
### Prime (6 songs)
|
|
- Twinkle Twinkle Little Star (Traditional, 1760s)
|
|
- Mary Had a Little Lamb (S.J. Hale, 1830)
|
|
- Happy Birthday (P.S. Hill, 1893)
|
|
- Chopsticks (Euphemia Allen, 1877)
|
|
- Lavender's Blue (English Traditional, 1670s)
|
|
- Shortnin' Bread (Traditional, 1900s)
|
|
|
|
### Singalong (20 songs)
|
|
- Drunken Sailor (Sea Shanty)
|
|
- Wellerman (NZ Sea Shanty, 1860s)
|
|
- Molly Malone (Irish, 1880s)
|
|
- Whiskey in the Jar (Irish Traditional)
|
|
- The Parting Glass (Irish/Scots Traditional)
|
|
- Leave Her Johnny (Sea Shanty)
|
|
- Blow the Man Down (Sea Shanty)
|
|
- Randy Dandy Oh (Sea Shanty)
|
|
- South Australia (Sea Shanty)
|
|
- Roll the Old Chariot Along (Sea Shanty)
|
|
- Haul Away Joe (Sea Shanty)
|
|
- Spanish Ladies (Royal Navy, 1790s)
|
|
- The Skye Boat Song (Scottish, 1884 — Outlander)
|
|
- Bella Ciao (Italian Partisan Folk — Money Heist)
|
|
- Amazing Grace (1779)
|
|
- Auld Lang Syne (1788)
|
|
- When the Saints Go Marching In (Spiritual)
|
|
- Oh My Darling, Clementine (1884)
|
|
- Scarborough Fair (English Medieval)
|
|
- My Bonnie Lies Over the Ocean (Scottish, 1881)
|
|
|
|
### Christmas (10 songs)
|
|
- Jingle Bells (1857)
|
|
- Silent Night (1818)
|
|
- Deck the Halls (1862)
|
|
- We Wish You a Merry Christmas (1500s)
|
|
- O Christmas Tree (1824)
|
|
- The First Noel (1823)
|
|
- Joy to the World (1719)
|
|
- Away in a Manger (1885)
|
|
- 12 Days of Christmas (1780)
|
|
- Hark the Herald Angels Sing (1840)
|
|
|
|
### Folk (8 songs)
|
|
- Oh! Susanna (Stephen Foster, 1848)
|
|
- Greensleeves (English, 1580)
|
|
- Camptown Races (Stephen Foster, 1850)
|
|
- Red River Valley (American, 1870s)
|
|
- Home on the Range (American, 1870s)
|
|
- Yankee Doodle (American, 1770s)
|
|
- Turkey in the Straw (American, 1820s)
|
|
- Danny Boy (Irish, 1910s)
|
|
|
|
### Spirituals (8 songs)
|
|
- Swing Low, Sweet Chariot (1862)
|
|
- Go Down Moses (Traditional)
|
|
- Wade in the Water (Traditional)
|
|
- Kumbaya (Traditional)
|
|
- Michael Row the Boat Ashore (1860s)
|
|
- He's Got the Whole World (Traditional)
|
|
- Nobody Knows the Trouble I've Seen (Traditional)
|
|
- Battle Hymn of the Republic (1861)
|
|
|
|
### World (8 songs)
|
|
- Hava Nagila (Jewish/Israeli, 1918)
|
|
- La Cucaracha (Mexican Traditional)
|
|
- Frere Jacques (French, 1780s)
|
|
- Cielito Lindo (Mexican, 1882)
|
|
- Waltzing Matilda (Australian, 1895)
|
|
- 'O Sole Mio (Italian, 1898)
|
|
- Take Me Out to the Ball Game (American, 1908)
|
|
- She'll Be Coming Round the Mountain (American, 1890s)
|
|
|
|
### Classical (26 pieces)
|
|
- Beethoven's 5th (Opening)
|
|
- Hall of the Mountain King (Grieg)
|
|
- O Fortuna (Orff)
|
|
- Ride of the Valkyries (Wagner) — Apocalypse Now
|
|
- Mars, Bringer of War (Holst)
|
|
- Toccata & Fugue in D Minor (Bach)
|
|
- William Tell Overture — Gallop (Rossini) — The Lone Ranger
|
|
- Bolero (Ravel)
|
|
- Also Sprach Zarathustra (R. Strauss) — 2001: A Space Odyssey
|
|
- Barber of Seville Overture (Rossini) — Bugs Bunny
|
|
- The Blue Danube (J. Strauss II) — 2001: A Space Odyssey
|
|
- Sabre Dance (Khachaturian)
|
|
- Night on Bald Mountain (Mussorgsky) — Fantasia
|
|
- Sorcerer's Apprentice (Dukas) — Fantasia
|
|
- Swan Lake Theme (Tchaikovsky)
|
|
- Morning Mood (Grieg)
|
|
- Flight of the Bumblebee (Rimsky-Korsakov)
|
|
- Dance of the Sugar Plum Fairy (Tchaikovsky)
|
|
- 1812 Overture Finale (Tchaikovsky)
|
|
- Habanera from Carmen (Bizet)
|
|
- Spring from Four Seasons (Vivaldi)
|
|
- Fur Elise (Beethoven)
|
|
- Canon in D (Pachelbel)
|
|
- Hungarian Dance No. 5 (Brahms)
|
|
- Ode to Joy (Beethoven)
|
|
- William Tell Overture — Storm (Rossini)
|
|
|
|
### Video Games (5 pieces)
|
|
- Korobeiniki / Tetris Theme (Russian Folk, 1861)
|
|
- Turkish March (Mozart)
|
|
- Hungarian Rhapsody No. 2 (Liszt)
|
|
- Can-Can (Offenbach)
|
|
- Kalinka (Russian Folk, 1860)
|
|
|
|
### Chiptune Originals (6 pieces, composed by Claude.ai)
|
|
- Pixel Quest (Platformer)
|
|
- Starfield (Space Shooter)
|
|
- Dragon's Keep (RPG Overworld)
|
|
- Turbo Dash (Racing)
|
|
- Dungeon Crawl (Dark Adventure)
|
|
- Victory Fanfare (Boss Defeated)
|
|
|
|
### Drum Patterns (120 patterns)
|
|
- **Rock** (15): Basic Rock, Classic Rock, Punk Rock, Arena Rock, and more
|
|
- **Metal** (15): Double Bass, Thrash, Doom Metal, Blast Beat, and more
|
|
- **Jazz** (15): Jazz Ride, Bebop, Bossa Nova, Fusion, and more
|
|
- **Hip Hop** (15): Boom Bap, Trap, Lo-Fi, Drill, and more
|
|
- **Funk** (15): Classic Funk, Ghost Notes, P-Funk, Afrobeat, and more
|
|
- **Latin** (15): Samba, Salsa, Reggaeton, Cumbia, and more
|
|
- **Electronic** (15): Four on the Floor, Breakbeat, DnB, Dubstep, and more
|
|
- **Country** (15): Two-Step, Bluegrass, Rockabilly, Gospel, and more
|
|
|
|
## USB Drum Kit Compatibility
|
|
|
|
The Gamepad API works with any USB controller. Use the **Remap Pads** button to configure your kit.
|
|
|
|
| Kit | Connection |
|
|
|-----|-----------|
|
|
| Wii Rock Band drums | USB dongle (default mapping) |
|
|
| Xbox 360 Rock Band drums | USB wired |
|
|
| PS3/PS4 Rock Band drums | USB |
|
|
| Guitar Hero drums | USB |
|
|
| Roland/Alesis/Donner | USB-MIDI adapter |
|
|
| Any USB gamepad | Remap to configure |
|
|
|
|
## Data Storage
|
|
|
|
All data is saved to **localStorage** in your browser — nothing is lost when you close the page.
|
|
|
|
| Key | What's Stored | How to Clear |
|
|
|-----|--------------|-------------|
|
|
| `drgame5` | Leaderboard scores | Clear button on Leaderboard |
|
|
| `drgameSettings` | Speed + volume | Reset button in Settings |
|
|
| `drgameGpMap` | Gamepad button mapping | Reset All Data |
|
|
| `drgameHidden` | Hidden genre tabs | Right-click → Show All |
|
|
| `drgameHiddenSongs` | Hidden songs per genre | Show N hidden button |
|
|
|
|
**Reset All Data** clears everything but requires solving a math problem first.
|
|
|
|
## Synthesizer
|
|
|
|
All sounds are generated in real-time using the Web Audio API — no audio files needed:
|
|
|
|
| Sound | Method |
|
|
|-------|--------|
|
|
| Kick | Sine oscillator, 180Hz to 40Hz sweep |
|
|
| Snare | Highpass noise burst + 180Hz tone |
|
|
| Hi-hat | Highpass noise burst, very short |
|
|
| Toms | Sine oscillator pitch sweep |
|
|
| Strings | Sawtooth + lowpass filter |
|
|
| Brass | Square + lowpass filter |
|
|
| Woodwind | Triangle oscillator |
|
|
| Bass | Sine oscillator, low frequency |
|
|
| Timpani | Sine frequency sweep |
|
|
| Choir | Multiple detuned sine oscillators |
|
|
| Chiptune | Square wave with pulse bass |
|
|
|
|
## Tech
|
|
|
|
- Pure vanilla JavaScript — no libraries, no build step, no server
|
|
- Single `index.html` file (~4500 lines)
|
|
- Web Audio API for all sound synthesis
|
|
- Canvas 2D for the note highway
|
|
- Gamepad API for drum kit input
|
|
- localStorage for all persistent data
|
|
- Works on Windows, Linux, and Mac
|
|
|
|
## License
|
|
|
|
[MIT](LICENSE)
|