Repository navigation
feat(sounds): bundled sampled drum kits and offline GM kits - #23
Closed
mattromano wants to merge 3 commits into
Closed
mattromano wants to merge 3 commits into
mattromano wants to merge 3 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>
|
Important Review skippedToo many files! This PR contains 109 files, which is 9 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 (109)
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
Closes #3. Stacked on #22 (which is stacked on #20) — this PR's own change is the last commit.
drums_kit_v1) with six sounds, only the chosen one loaded:assets/kits.js(MIT) — kit.json validation, velocity-layer pick, per-layer gain, fetch + decode, and a voice player (round-robin, chokes) on plainAudioBufferSourceNodes for low latency. A broken kit falls back to JCLive.assets/sounds/and load from core's plugin assets route instead ofsurikov.github.io— nothing loads from third-party sites.tools/build_sample_kit.pyrebuilds the sampled kits from the source libraries (picks/trims/fades/levels hits, encodes Ogg Vorbis, writes kit.json).NOTICE.mdandassets/sounds/README.md.Size: the whole sound set is ~12.0 MB (sampled kits 8.4 MB, GM files + player ~3.6 MB), under the ~15 MB threshold, so the samples are committed rather than fetched from a release asset at first use.
Licence note:
assets/sounds/WebAudioFontPlayer.jsis GPL-3.0 (unmodified upstream file, loaded at runtime only for the GM kits; GPL text inLICENSE.GPL-3.0). Upstream 4.0.0 already used it, from the CDN; bundling means the repo now distributes it. MIT code may be combined with GPL code, and GPL-3.0 is compatible with feedBack's AGPL-3.0, so this is fine, but the combined plugin as distributed is subject to the GPL for that file. If maintainers prefer an all-permissive repo, the GM kits could be dropped (the two sampled kits don't use it).Screenshots
Settings panel with the Kit picker (Crocell loaded from
/api/plugins/drums/assets/sounds/kits/crocell/, 46 samples, zero requests to surikov.github.io): (b3-kit-picker.jpg)Tests
node tests/kits.test.js— 6 pass (every kit resolves to bundled files for every GM note the synth uses, kit.json validation, layer pick, gain slope, round-robin + choke player, saved kit validation)node --checkall JSapplication/json,.ogg200audio/oggvia the assets route; the default kit decodes on renderer init; no CDN requests. Sound not auditioned (audio is never played in these tests) — the kits are byte-identical to the ones in the user's custom build.🤖 Generated with Claude Code