Repository navigation
feat(settings): Plugins > Drums settings page and end-of-song card - #24
Closed
mattromano wants to merge 4 commits into
Closed
mattromano wants to merge 4 commits into
mattromano wants to merge 4 commits into
Conversation
Score drum charts the way the rhythm games do: assets/engine.js is a JavaScript port of YARG.Core's drums engine (LGPL-3.0, kept as its own replaceable file with LICENSE.LGPL-3.0, LICENSE.GPL-3.0 and NOTICE.md), driven through assets/session.js (MIT) which adds difficulty levels, star power metadata, assists and timing / roll / drum-solo bonuses. - Per-player difficulty Easy..Expert+ (settings, HUD badge, D/Shift+D). Expert drops x2 kicks; lower levels, star power, fills and solos come from the drum tab's feedpak 1.20.0 gameplay metadata (Expert only without it). - Assists: auto kick / auto cymbals up to a difficulty (played on the drum sound at their own volume), timing presets, Pro cymbals, input offset. - The 2D view marks hits / misses from the engine and draws a score HUD (multiplier, score, streak, stars, star power) with Score on. - Drum-tab accents follow the authored `a` flag; x2 kicks map to GM 35. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: mattromano <42412983+mattromano@users.noreply.github.com>
Add assets/highway3d.js, a three.js drum track in the style of the classic drum games (MIT, original code, no artwork from those games): pad lanes and a kick bar, bevelled rectangle pad gems, domed cymbals, strikeline targets, hit flashes and sparks, star power / fill / solo highlighting and a HUD with streak, multiplier, star power, score, stars, accuracy and the difficulty badge. It renders the scoring session from the previous change, through core's vendored three.js. - View setting Auto (3D with WebGL2) / 3D / 2D; the main player swaps renderers on change; feedBackViz_drums3d / _drums2d for hosts. - Keyboard drumming in both views (Keys, default on): B kick, F red, J/K/L toms, Shift or U/I/O cymbals, Enter star power. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: mattromano <42412983+mattromano@users.noreply.github.com>
Closes the third-party load: the WebAudioFont player and its GM drum sets now ship in assets/sounds/ and load from core's plugin assets route, so the synth works offline. Adds a Kit setting with two real multi-sampled acoustic kits (velocity layers, round-robins, hi-hat chokes) played by assets/kits.js: Crocell (rock, CC BY 4.0, new default) and Virtuosity (jazz, CC0), plus four GM kits (JCLive, FluidR3 GM, SB Live!, Chaos). tools/build_sample_kit.py rebuilds the sampled kits; licences and credits are in NOTICE.md (~12 MB total). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: mattromano <42412983+mattromano@users.noreply.github.com>
Add a settings screen (screen.html, nav entry Plugins > Drums) with every drum setting on one page, a pad tester that lights the lane each pad counts as (Learn works there), a MIDI status line (hits received, last note, why a hit was dropped) and a reset. It shares its controls with the player's settings panel through the same setters. When a played song ends, an end-of-song card shows the final score with bonuses, stars, accuracy, streak / full combo and where the points came from, and keeps the best score per song and difficulty in this browser; the settings page lists them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: mattromano <42412983+mattromano@users.noreply.github.com>
|
Important Review skippedToo many files! This PR contains 110 files, which is 10 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configuration
⛔ Files ignored due to path filters (256)
📒 Files selected for processing (110)
You can disable this status message by setting the
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Refs #1, partly: (best score per song + difficulty; a full history is still open). Stacked on #23 (on #22 on #20) — this PR's own change is the last commit.
screen.html+naventry → Plugins → Drums): difficulty & assists, drum sounds (kit, ▶ Play test, volume), your kit (MIDI input, channel, pad tester, pad mapping with Learn), display & controls (view, offset, keyboard, 2D options), best scores, and Reset drum settings (keeps MIDI input, mapping and scores). Same per-browser settings as the ⚙ panel, kept in sync. While shown it registers a pseudo-instance so MIDI routes to the pad tester; per-visit setup comes from core'sscreen:changedevent (no MutationObserver)._learnConsume()used by the player and the page.song:ended(both views, only if the player hit something): final score with bonuses, stars, accuracy, notes hit, best streak / FC, chips for notes × multiplier, star power, dynamics, spot-on timing, rolls, solos; best score per song and difficulty inlocalStorage(drums_best_v1:<song>|<difficulty>) with NEW BEST SCORE. Closes on button / Esc / Enter / next song. z-index 40 (popover layer of the v3 chrome).Dropped from the custom version: the page's Clone Hero kit-profile / velocity-threshold hints and MIDI auto-pick (custom 0.2.9-era features, not part of this port).
Screenshots
Settings page top, MIDI + pad tester, best scores + reset, and the end-of-song card:
(b4-settings-top.jpg, b4-settings-pad-tester.jpg, b4-settings-best-scores.jpg, b4-end-card.jpg)
Tests
node tests/screen.test.js— 26 pass (+ best-score key/record, MIDI status counting before routing, Learn assignment)node --checkall JSsong:ended(synth volume set to 0; no audio played).🤖 Generated with Claude Code