diff --git a/CLAUDE.md b/CLAUDE.md index 9272dd1..92bb952 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -27,6 +27,11 @@ Webcam pose detection app using MediaPipe Tasks Vision. Vite + React 19 + TypeSc - Site: https://hackhackrevolution.xyz - Vercel project: `project-zcx72` under `jorqsrazes-projects` +## Song Sources + +- Fraxtil's Beast Beats [SM5] — 20 songs bundled with the game +- Just Dance (Lady Gaga) — simfile from https://zenius-i-vanisher.com/v5.2/viewsimfile.php?simfileid=35263 + ## Code guidelines - **Modular architecture**: each file should have a single, clear responsibility. Extract logic into separate modules rather than growing large files. diff --git a/public/songs/just-dance/bg.png b/public/songs/just-dance/bg.png new file mode 100644 index 0000000..d364a62 Binary files /dev/null and b/public/songs/just-dance/bg.png differ diff --git a/public/songs/just-dance/bn.png b/public/songs/just-dance/bn.png new file mode 100644 index 0000000..08c3c98 Binary files /dev/null and b/public/songs/just-dance/bn.png differ diff --git a/public/songs/just-dance/cdtitle.png b/public/songs/just-dance/cdtitle.png new file mode 100644 index 0000000..a14ab0f Binary files /dev/null and b/public/songs/just-dance/cdtitle.png differ diff --git a/public/songs/just-dance/chart.ssc b/public/songs/just-dance/chart.ssc new file mode 100644 index 0000000..83c4800 --- /dev/null +++ b/public/songs/just-dance/chart.ssc @@ -0,0 +1,1921 @@ +#VERSION:0.83; +#TITLE:Just Dance feat. Colby O'Donis; +#SUBTITLE:; +#ARTIST:Lady Gaga; +#TITLETRANSLIT:; +#SUBTITLETRANSLIT:; +#ARTISTTRANSLIT:; +#GENRE:Dance; +#ORIGIN:; +#CREDIT:; +#BANNER:Just Dance-bn.png; +#BACKGROUND:Just Dance-bg.png; +#PREVIEWVID:; +#JACKET:Just Dance-jacket.png; +#CDIMAGE:; +#DISCIMAGE:; +#LYRICSPATH:; +#CDTITLE:cdtitle.png; +#MUSIC:just dance.ogg; +#OFFSET:-0.004000; +#SAMPLESTART:47.903000; +#SAMPLELENGTH:16.000000; +#SELECTABLE:YES; +#BPMS:0.000=119.000; +#STOPS:; +#DELAYS:; +#WARPS:; +#TIMESIGNATURES:0.000=4=4; +#TICKCOUNTS:0.000=4; +#COMBOS:0.000=1; +#SPEEDS:0.000=1.000=0.000=0; +#SCROLLS:0.000=1.000; +#FAKES:; +#LABELS:0.000=Song Start; +#BGCHANGES:-0.004=just dance.avi=1.000=1=0=0=StretchNoLoop==CrossFade==, +99999=-nosongbg-=1.000=0=0=0 // don't automatically add -songbackground- +; +#KEYSOUNDS:; +#ATTACKS: +; + +//---------------dance-single - ---------------- +#NOTEDATA:; +#CHARTNAME:X-Scale 10; +#STEPSTYPE:dance-single; +#DESCRIPTION:; +#CHARTSTYLE:; +#DIFFICULTY:Hard; +#METER:8; +#RADARVALUES:0.439852,0.455847,0.119960,0.079973,0.043985,385.000000,370.000000,15.000000,10.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.439852,0.455847,0.119960,0.079973,0.043985,385.000000,370.000000,15.000000,10.000000,0.000000,0.000000,0.000000,0.000000,0.000000; +#CREDIT:; +#NOTES: +// measure 0 +0000 +0000 +0000 +0000 +, // measure 1 +0000 +0000 +0000 +0000 +, // measure 2 +2000 +0000 +3002 +0100 +, // measure 3 +0203 +0000 +0010 +0320 +0000 +0000 +0100 +0030 +, // measure 4 +0110 +0100 +0001 +0100 +, // measure 5 +1000 +0000 +0100 +0001 +0010 +0100 +0010 +0001 +, // measure 6 +1000 +0000 +0001 +1000 +0001 +0000 +0010 +0100 +, // measure 7 +0010 +0000 +0100 +1000 +0100 +0000 +1000 +0001 +, // measure 8 +0101 +0000 +0001 +0000 +1000 +0001 +1000 +0001 +, // measure 9 +1000 +0000 +0010 +0100 +0000 +0100 +0000 +0100 +, // measure 10 +0001 +0000 +1000 +0000 +0100 +0010 +0100 +1000 +, // measure 11 +0100 +0000 +1000 +0001 +1000 +0000 +0001 +0000 +, // measure 12 +0011 +0000 +1000 +0000 +0001 +0100 +1000 +0000 +, // measure 13 +1000 +0100 +0001 +0010 +0100 +0010 +0001 +1000 +, // measure 14 +0001 +0000 +0010 +0000 +0001 +0000 +1000 +0010 +, // measure 15 +1000 +0000 +0100 +0010 +0000 +0010 +0000 +0010 +, // measure 16 +0110 +0010 +0001 +0000 +1000 +0010 +1000 +0000 +, // measure 17 +0001 +0100 +0001 +0000 +1000 +0100 +0010 +0100 +, // measure 18 +1000 +0010 +0100 +0001 +0010 +1000 +0010 +0100 +, // measure 19 +1000 +0001 +0100 +0010 +0100 +0001 +0010 +0100 +, // measure 20 +1000 +0001 +1000 +0000 +0100 +0010 +0100 +0000 +, // measure 21 +1000 +0000 +0001 +0100 +1000 +0100 +0001 +0100 +, // measure 22 +0010 +1000 +0001 +1000 +0100 +0010 +0001 +0010 +, // measure 23 +0100 +0010 +0100 +0100 +0010 +0000 +0001 +0000 +, // measure 24 +1001 +0000 +0000 +0000 +1000 +0000 +0001 +1000 +0001 +0000 +0100 +0000 +0001 +0000 +0000 +0000 +, // measure 25 +1000 +0001 +1000 +0001 +0100 +0010 +1000 +0010 +, // measure 26 +1000 +0000 +0001 +0100 +1000 +0010 +0001 +0000 +, // measure 27 +0100 +0010 +0001 +0010 +0100 +0000 +0001 +0000 +, // measure 28 +0101 +0000 +0000 +0000 +0001 +0000 +1000 +0001 +1000 +0000 +0010 +0000 +1000 +0000 +0000 +0000 +, // measure 29 +0001 +0100 +1000 +0100 +0001 +0100 +1000 +0100 +, // measure 30 +0001 +0000 +0100 +0010 +0100 +0000 +0001 +1000 +, // measure 31 +0001 +0000 +0010 +0000 +0100 +0100 +0100 +0000 +, // measure 32 +0110 +0000 +0100 +0100 +1000 +0000 +0100 +0100 +, // measure 33 +0010 +0000 +0100 +1000 +0100 +0000 +1000 +0000 +0001 +0000 +0100 +0000 +0001 +0000 +0000 +0000 +, // measure 34 +2001 +3000 +0001 +0001 +1000 +0000 +0001 +0001 +, // measure 35 +0100 +0001 +0100 +0000 +0001 +0000 +0100 +0000 +0010 +0000 +1000 +0000 +0100 +0000 +0000 +0000 +, // measure 36 +1010 +0000 +0100 +0010 +0100 +0000 +0001 +0100 +, // measure 37 +0001 +0100 +0010 +0100 +0001 +0100 +0010 +0000 +0100 +0000 +0001 +0000 +1000 +0000 +0000 +0000 +, // measure 38 +1020 +0030 +0100 +0010 +0100 +0000 +0001 +1000 +, // measure 39 +0001 +0100 +1000 +0100 +0001 +0010 +0100 +0000 +, // measure 40 +0110 +0100 +1000 +0000 +0001 +0100 +0001 +0000 +, // measure 41 +1000 +0010 +0001 +0010 +1000 +0100 +0010 +0001 +, // measure 42 +1000 +0000 +0001 +0100 +1000 +0010 +0001 +0010 +, // measure 43 +0100 +1000 +0100 +0000 +1000 +0000 +0010 +0000 +, // measure 44 +0110 +0100 +0001 +0000 +1000 +0010 +1000 +0000 +, // measure 45 +0001 +0100 +1000 +0100 +0001 +0010 +0100 +1000 +, // measure 46 +0001 +0000 +0010 +0000 +0100 +0000 +0010 +0100 +0010 +0000 +0100 +0000 +1000 +0000 +0001 +0010 +, // measure 47 +0001 +0010 +0100 +1000 +0001 +0000 +0010 +0000 +, // measure 48 +0002 +0000 +0000 +0000 +0023 +0000 +0000 +0100 +, // measure 49 +0230 +0000 +0000 +2300 +0100 +0000 +0010 +0000 +, // measure 50 +3100 +0000 +1000 +0100 +0001 +0010 +1000 +0010 +, // measure 51 +1000 +0100 +0010 +0100 +0010 +0000 +0001 +0100 +, // measure 52 +0101 +0000 +0000 +0000 +1000 +0000 +0001 +1000 +0001 +0000 +0100 +0000 +0001 +0000 +0000 +0000 +, // measure 53 +1000 +0100 +1000 +0100 +0010 +0000 +0001 +0000 +, // measure 54 +1000 +0000 +0001 +0010 +1000 +0100 +0001 +0000 +, // measure 55 +0001 +0100 +0010 +0100 +0001 +0000 +1000 +0000 +, // measure 56 +1001 +0000 +0000 +0000 +0001 +0000 +0010 +0100 +0010 +0000 +0001 +0000 +1000 +0000 +0000 +0000 +, // measure 57 +0001 +0010 +1000 +0010 +0001 +0100 +0010 +1000 +, // measure 58 +0001 +0000 +0100 +0010 +0100 +0000 +0001 +1000 +, // measure 59 +0001 +0000 +1000 +0000 +0100 +0100 +0100 +0000 +, // measure 60 +1100 +0000 +0000 +0000 +; + +//---------------dance-single - ---------------- +#NOTEDATA:; +#CHARTNAME:X-Scale 8; +#STEPSTYPE:dance-single; +#DESCRIPTION:; +#CHARTSTYLE:; +#DIFFICULTY:Medium; +#METER:6; +#RADARVALUES:0.339315,0.335887,0.079973,0.175941,0.000000,297.000000,287.000000,10.000000,22.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.339315,0.335887,0.079973,0.175941,0.000000,297.000000,287.000000,10.000000,22.000000,0.000000,0.000000,0.000000,0.000000,0.000000; +#CREDIT:; +#NOTES: +0000 +0000 +0000 +0000 +, +0000 +0000 +0000 +0000 +, +0002 +0000 +0203 +0000 +, +0320 +0000 +0000 +2030 +0000 +0000 +0000 +0000 +, +3010 +0100 +0001 +1000 +, +0020 +0000 +0130 +0020 +0000 +0001 +0030 +0010 +, +1000 +0000 +1000 +0100 +1000 +0000 +0001 +0010 +, +0001 +0000 +1000 +0100 +1000 +0000 +0010 +0000 +, +1010 +0000 +0100 +0000 +1000 +0000 +0001 +1000 +, +0100 +0000 +0100 +0010 +0000 +0010 +0000 +0010 +, +0100 +0000 +1000 +0000 +0001 +0000 +0100 +0010 +, +0100 +0000 +0100 +0010 +0100 +0000 +0001 +0000 +, +1000 +0000 +0010 +0000 +1000 +0100 +0010 +0000 +, +0001 +0000 +0010 +0000 +0100 +0010 +0100 +1000 +, +0100 +0000 +1000 +0000 +0001 +0000 +0100 +0010 +, +0100 +0000 +0001 +0010 +0000 +0010 +0000 +0010 +, +0011 +0000 +0001 +0000 +0001 +0010 +0001 +0000 +, +0100 +0000 +0001 +0000 +0010 +0000 +0100 +0010 +, +0001 +0000 +1000 +0000 +0100 +0010 +0100 +0000 +, +1000 +0000 +0010 +0100 +0010 +0000 +1000 +0100 +, +1100 +0000 +1000 +0000 +1000 +0010 +1000 +0000 +, +0010 +0000 +0100 +0000 +0001 +0010 +0100 +0000 +, +1000 +0000 +0100 +0000 +0010 +0100 +1000 +0000 +, +0001 +0010 +0001 +0001 +0010 +0000 +0100 +0000 +, +0110 +0000 +1000 +0000 +0001 +0100 +0001 +0000 +, +1000 +0001 +0000 +0001 +0100 +0000 +0010 +0000 +, +0010 +0000 +1000 +0000 +0010 +0100 +0001 +0000 +, +1000 +0100 +1000 +0100 +1000 +0000 +0010 +0000 +, +0010 +0000 +0100 +0000 +0001 +0010 +0001 +0000 +, +1000 +0200 +0300 +0200 +0301 +0200 +0300 +0200 +, +1300 +0100 +1000 +0001 +, +0010 +0000 +0100 +0000 +0010 +0100 +0010 +0000 +, +0110 +0000 +0000 +0100 +0001 +0000 +1000 +0010 +, +1000 +0000 +0000 +0010 +1000 +0010 +1000 +0001 +, +1000 +0000 +0000 +0100 +0010 +0000 +0100 +0010 +, +0001 +0000 +0000 +0100 +0010 +0100 +1000 +0100 +, +0010 +0000 +0000 +0100 +0001 +0000 +0001 +0100 +, +0001 +0000 +0000 +0100 +0010 +1000 +0100 +0010 +, +0100 +0000 +0000 +0100 +0010 +0000 +0010 +0001 +, +0100 +0000 +0001 +0100 +0001 +0010 +0100 +0000 +, +0110 +0000 +0100 +0000 +0010 +0100 +0010 +0000 +, +0001 +0000 +1000 +0000 +0100 +0010 +0001 +0010 +, +0100 +0000 +1000 +0100 +1000 +0000 +0001 +0100 +, +0001 +0100 +0100 +0010 +, +0010 +0000 +1000 +0000 +0001 +0010 +0001 +0000 +, +1000 +0000 +0010 +0000 +0100 +1000 +0100 +0010 +, +0100 +0001 +0100 +0010 +, +1000 +1000 +0100 +0100 +0010 +0000 +0010 +0000 +, +0020 +0000 +0230 +0000 +, +2300 +0000 +0000 +3020 +0000 +0000 +0000 +0000 +, +0230 +0000 +0000 +0001 +0302 +0000 +0000 +0010 +, +0023 +0000 +0000 +0031 +0000 +1000 +0000 +0001 +, +1001 +1000 +2000 +0001 +, +0010 +0000 +0100 +0000 +0010 +0000 +0001 +3000 +, +1001 +0000 +1000 +0000 +0001 +0010 +0100 +0000 +, +1000 +0000 +0010 +0100 +0001 +0000 +0010 +0000 +, +0011 +0000 +0001 +0000 +0100 +0010 +0100 +0000 +, +0001 +0020 +0030 +0020 +1030 +0020 +0030 +0020 +, +0031 +0000 +0100 +0010 +0100 +0000 +0010 +1000 +, +0010 +0000 +1000 +0000 +1000 +0100 +1000 +0000 +, +1100 +0000 +0000 +0000 +; + +//---------------dance-single - ---------------- +#NOTEDATA:; +#CHARTNAME:X-Scale 4; +#STEPSTYPE:dance-single; +#DESCRIPTION:; +#CHARTSTYLE:; +#DIFFICULTY:Easy; +#METER:3; +#RADARVALUES:0.213642,0.263911,0.039987,0.087970,0.000000,187.000000,182.000000,5.000000,11.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.213642,0.263911,0.039987,0.087970,0.000000,187.000000,182.000000,5.000000,11.000000,0.000000,0.000000,0.000000,0.000000,0.000000; +#CREDIT:; +#NOTES: +0000 +0000 +0000 +0000 +, +0000 +0000 +0000 +0000 +, +2000 +0000 +0010 +0000 +, +3020 +0000 +0000 +0001 +0000 +0000 +0000 +0000 +, +0130 +0000 +0010 +0000 +, +1000 +0000 +0000 +0000 +0001 +0010 +0000 +0010 +, +0100 +0000 +1000 +0000 +, +0010 +0000 +0100 +0000 +, +0101 +0000 +0001 +0000 +, +0100 +0000 +0000 +0001 +0000 +0001 +0000 +0001 +, +1000 +0000 +0100 +0000 +, +0010 +0000 +0010 +0100 +, +1000 +0000 +0100 +0010 +, +0001 +0000 +0010 +0100 +, +1000 +0000 +0001 +0000 +, +0100 +0000 +0000 +0010 +0000 +0010 +0000 +0010 +, +0110 +0200 +0300 +0002 +, +0003 +0020 +0031 +1000 +, +0010 +0000 +1000 +0000 +, +0001 +0000 +0000 +0100 +0000 +0100 +0000 +0100 +, +0010 +2000 +3000 +0010 +, +0020 +0030 +0001 +0010 +, +1000 +0000 +0010 +1000 +, +0001 +0000 +0000 +0010 +0000 +0010 +0000 +0010 +, +0011 +0000 +0001 +0100 +, +0010 +0000 +1000 +0010 +, +1000 +0000 +0000 +0000 +0100 +0010 +0100 +0000 +, +1000 +0001 +0000 +0001 +1000 +0000 +0010 +0000 +, +1000 +0000 +1000 +0010 +, +1000 +0010 +0000 +0100 +0000 +0010 +0000 +0100 +, +0001 +0000 +0000 +0010 +0100 +0000 +0000 +1000 +, +0010 +0000 +0100 +0000 +0100 +0001 +0100 +0000 +, +0101 +0000 +0001 +0000 +, +1000 +0000 +0001 +0010 +0000 +0010 +0000 +0010 +, +0100 +0000 +0010 +0000 +, +0001 +0000 +0000 +0100 +0000 +0100 +0000 +0100 +, +0010 +0000 +1000 +0000 +, +0001 +0000 +0000 +0010 +0000 +0010 +0000 +0010 +, +0100 +0000 +0010 +0000 +, +0001 +0000 +0000 +0100 +0000 +0100 +0000 +0100 +, +1000 +0000 +0100 +0000 +, +0001 +1000 +0001 +0010 +, +0100 +0000 +0010 +0000 +, +1000 +0010 +0001 +0010 +, +0100 +0000 +1000 +0000 +, +0001 +0000 +0010 +1000 +, +0010 +0000 +0001 +0000 +, +1000 +0000 +0001 +0010 +0000 +0010 +0000 +0010 +, +0002 +0000 +0100 +0000 +, +0203 +0000 +0000 +0010 +0000 +0000 +0000 +0000 +, +0320 +0000 +1000 +0000 +, +2030 +0000 +0000 +0001 +0000 +0000 +0000 +0000 +, +3001 +0000 +1000 +0100 +, +0010 +0000 +0010 +0100 +, +1000 +0000 +0000 +0000 +0100 +0010 +0100 +0000 +, +0010 +0000 +0001 +0100 +, +0001 +0000 +1000 +0100 +, +1000 +0100 +0000 +0010 +0000 +0100 +0000 +0010 +, +0001 +0000 +0000 +0001 +0100 +0000 +0000 +0100 +, +0010 +0000 +1000 +0000 +1000 +0001 +1000 +0000 +, +1001 +0000 +0000 +0000 +; + +//---------------dance-single - ---------------- +#NOTEDATA:; +#CHARTNAME:X-Scale 2; +#STEPSTYPE:dance-single; +#DESCRIPTION:; +#CHARTSTYLE:; +#DIFFICULTY:Beginner; +#METER:1; +#RADARVALUES:0.149664,0.167944,0.071976,0.119960,0.000000,131.000000,122.000000,9.000000,15.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.149664,0.167944,0.071976,0.119960,0.000000,131.000000,122.000000,9.000000,15.000000,0.000000,0.000000,0.000000,0.000000,0.000000; +#CREDIT:; +#NOTES: +0000 +0000 +0000 +0000 +, +0000 +0000 +0000 +0000 +, +0001 +0000 +0000 +0000 +, +1000 +0000 +0000 +0000 +, +1001 +0000 +1000 +0000 +, +1000 +0000 +0001 +0000 +, +0001 +0000 +0010 +0000 +, +0100 +0000 +0010 +0000 +, +0110 +0000 +0001 +0000 +, +0100 +0000 +0001 +0000 +, +1000 +0000 +0100 +0000 +, +0010 +0000 +0100 +0000 +, +1000 +0000 +0001 +0000 +, +0100 +0000 +0010 +0000 +, +1000 +0000 +0100 +0000 +, +0010 +0000 +0001 +0000 +, +0011 +0002 +0003 +0020 +, +0030 +0002 +1003 +0000 +, +0001 +0000 +0010 +0000 +, +0100 +0000 +1000 +0000 +, +1100 +2000 +3000 +0010 +, +2000 +3000 +0001 +0000 +, +1000 +0000 +0010 +0000 +, +0100 +0000 +0001 +0000 +, +0101 +0000 +0001 +0000 +, +1000 +0000 +0100 +0000 +, +1000 +0000 +0010 +0000 +, +1000 +0000 +0100 +0010 +, +0100 +0000 +1000 +0000 +, +0000 +0010 +0000 +0100 +0000 +0010 +0000 +0200 +, +0000 +0300 +0000 +0002 +0000 +0003 +0000 +0020 +, +0000 +0030 +0100 +0000 +1000 +0000 +0100 +0000 +, +1100 +0000 +0001 +0000 +, +1000 +0000 +0010 +0000 +, +0100 +0000 +0001 +0000 +, +1000 +0000 +0100 +0000 +, +0010 +0000 +0100 +0000 +, +1000 +0000 +0001 +0000 +, +0100 +0000 +0010 +0000 +, +0100 +0000 +0001 +0000 +, +0101 +0000 +0100 +0000 +, +0001 +0000 +1000 +0000 +, +0100 +0000 +0010 +0000 +, +0001 +0000 +2000 +3000 +0002 +0003 +2000 +3000 +, +0002 +0003 +0000 +0000 +1000 +0000 +0000 +0000 +, +0010 +0000 +0100 +0000 +, +0001 +0000 +0100 +0000 +, +0010 +0000 +0100 +0000 +, +0100 +0000 +0000 +0000 +, +0010 +0000 +0000 +0000 +, +1000 +0000 +0000 +0000 +, +0001 +0000 +0000 +0000 +, +1001 +0000 +1000 +0000 +, +0010 +0000 +0100 +0000 +, +0001 +0000 +1000 +0000 +, +0010 +0000 +1000 +0000 +, +0001 +0000 +0010 +0000 +, +0000 +0010 +0000 +0100 +0000 +0010 +0000 +0200 +, +0000 +0300 +0000 +0002 +0000 +0003 +0000 +2000 +, +0000 +3000 +0010 +0000 +0100 +0000 +0001 +0000 +, +0101 +0000 +0000 +0000 +; diff --git a/src/features/song-select/song-data.ts b/src/features/song-select/song-data.ts index 9540e21..7e5ed27 100644 --- a/src/features/song-select/song-data.ts +++ b/src/features/song-select/song-data.ts @@ -15,6 +15,20 @@ export const SONGS: Song[] = [ bgUrl: '/songs/get-lucky/bg.png', bannerUrl: '/songs/get-lucky/bn.png', }, + { + id: 'just-dance', + title: 'Just Dance', + artist: 'Lady Gaga ft. Colby O\'Donis', + bpm: 119, + difficulty: 3, + duration: '2:05', + genre: 'Pop', + color: '#E91E63', + chartUrl: '/songs/just-dance/chart.ssc', + audioUrl: '/songs/just-dance/audio.ogg', + bgUrl: '/songs/just-dance/bg.png', + bannerUrl: '/songs/just-dance/bn.png', + }, { id: 'axion', title: 'Axion',