Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
cff4ec9
feat(player-web): add showpiece moments and a combo zone to the built…
nulltask Sep 28, 2026
9c2430c
feat(player-web): add hit punch, miss drama, launch outros, and an ef…
nulltask Sep 28, 2026
40105d9
feat(player-web): rework Synesthesia as a cosmic particle world with …
nulltask Sep 28, 2026
13137cc
feat(player-web): add fish schools and a roaming camera to Synesthesia
nulltask Sep 28, 2026
be29e99
feat(player-web): add the Lattice built-in skin
nulltask Sep 28, 2026
8456a76
refactor(player-web): clear lint warnings in the Lattice and Synesthe…
nulltask Sep 28, 2026
f3e5978
feat(player-web): cut Phantom showpieces in on torn-paper strips with…
nulltask Sep 28, 2026
8e5594b
fix(player-web): centre built-in skin text on its capitals
nulltask Sep 28, 2026
ec0bb2d
feat(player-web): pass live audio analysis to be-music skins
nulltask Sep 29, 2026
f4f853f
feat(player-web): make the built-in skins react to the music
nulltask Sep 29, 2026
46fb772
feat(player-web): replace the Synesthesia figure with a roaming visua…
nulltask Sep 29, 2026
82063b1
docs(player-web): describe built-in skin inspirations generically [ci…
nulltask Sep 29, 2026
b19343f
feat(player-web): pack skinless lanes edge to edge and draw notes ful…
nulltask Sep 29, 2026
f47d406
feat(player-web): butt the DP 1P and 2P lane banks together
nulltask Sep 29, 2026
55ca45d
feat(player-web): widen the skinless 24 KEY and 48 KEY lanes
nulltask Oct 4, 2026
af63ae2
fix(player-web): keep built-in skin showpieces and type off the notes
nulltask Oct 4, 2026
eeb6a8e
feat(player-web): fix IIDX lane widths across 5 / 7 / 10 / 14 KEY
nulltask Oct 4, 2026
f2b8083
feat(player-web): give white-key lanes their own background
nulltask Oct 4, 2026
8040fe8
feat(player-web): set Phantom judgements as ransom notes
nulltask Oct 4, 2026
69c60cb
feat(player-web): set the Phantom combo as a ransom note and shrink both
nulltask Oct 4, 2026
a9b930d
feat(player-web): make key beams read clearly in the built-in skins
nulltask Oct 4, 2026
58ddce0
feat(player-web): draw key beams as colour lasers instead of edge rails
nulltask Oct 4, 2026
f778ca9
feat(player-web): add per-bus volume and compressor tuning to the aud…
nulltask Oct 5, 2026
51b715b
feat(player-web-demo): add volume and compressor sections to the Debu…
nulltask Oct 5, 2026
7ee6803
feat(player-web): turn Synesthesia bomb sparks into fine powder
nulltask Oct 7, 2026
c21dd95
feat(player-web): set the built-in skin screens on a layout grid
nulltask Oct 7, 2026
b57373c
Merge remote-tracking branch 'origin/devel' into feature/skin-showpieces
nulltask Oct 7, 2026
5a0792b
Merge remote-tracking branch 'origin/devel' into feature/skin-showpieces
nulltask Oct 7, 2026
bc98bbb
perf(player-web): draw Synesthesia light points as GPU particles
nulltask Oct 8, 2026
3035099
perf(player-web): draw the Lattice needle field as particles
nulltask Oct 8, 2026
0ff9da3
perf(player-web): stop re-rasterizing built-in skin text every frame
nulltask Oct 8, 2026
da1c7a8
test(player-web): add benchmark cases for the audio bus helpers
nulltask Oct 8, 2026
c303438
fix(player-web): avoid parameter properties in the particle helpers
nulltask Oct 8, 2026
b024e4c
perf(player-web): skip the compressor merge pass when nothing overrid…
nulltask Oct 8, 2026
4aeb436
Merge remote-tracking branch 'origin/devel' into feature/skin-showpieces
nulltask Oct 8, 2026
fc16c4e
feat(player-web): show pre-play chart facts in the built-in select lists
nulltask Oct 9, 2026
2d77e3e
feat(player-web): lay the built-in skins out on a 16:9 stage
nulltask Oct 9, 2026
c6a38b8
feat(player-web): build the built-in skins on a public skin SDK
nulltask Oct 9, 2026
3283e76
Merge remote-tracking branch 'origin/devel' into feature/skin-showpieces
nulltask Oct 9, 2026
c2f81e4
fix(player-web): keep the Phantom chrome internals out of the public …
nulltask Oct 9, 2026
67ad752
feat(player-web): add canvas skins and the Plain example skin
nulltask Oct 9, 2026
750c47d
fix(player-web): lay out every lane of the chart's play variant
nulltask Oct 9, 2026
c6ce7d7
feat(player-web): split the DP banks and draw the judgement line per …
nulltask Oct 9, 2026
a53f3d9
feat(player-web): drop the speed lines from Synesthesia
nulltask Oct 9, 2026
ebe4476
fix(player-web): show canvas skins dot by dot
nulltask Oct 9, 2026
2271da5
Merge remote-tracking branch 'origin/devel' into feature/skin-showpieces
nulltask Oct 9, 2026
bfb007a
fix(player-web): sharpen Synesthesia notes and tidy the 16:9 layouts
nulltask Oct 9, 2026
955c1d3
feat(player-web): let hosts add skins and stop loading Lattice by def…
nulltask Oct 9, 2026
0d66a74
feat(player-web): default to Synesthesia and preload every registered…
nulltask Oct 9, 2026
cf66d80
feat(player-web): let audio-reactive skin effects swing with the music
nulltask Oct 9, 2026
c54c4b4
docs: add a guide for writing be-music skins [ci skip]
nulltask Oct 9, 2026
82fbe02
feat(player-web): keep the skin SDK free of any rendering framework
nulltask Oct 9, 2026
ae37305
feat(player-web): give every built-in skin Synesthesia's long-note shape
nulltask Oct 9, 2026
65e6577
feat(player-web): show SOUND ONLY on every skin's idle BGA monitor
nulltask Oct 9, 2026
872c26c
feat(skin-sdk): split the skin SDK into its own package
nulltask Oct 9, 2026
51a02ff
docs: add rendering performance techniques to the skin guide [ci skip]
nulltask Oct 9, 2026
06c0450
perf(player-web): lighten the Pixi skin kit's per-frame work
nulltask Oct 9, 2026
69a5a43
fix(player-web): label the gauge's clear-line moment CLEAR LINE
nulltask Oct 9, 2026
9457eb8
feat(player-web): spell out NOTES in the select list rows
nulltask Oct 9, 2026
69a0ff5
feat(player-web): drop horizon lines and ellipse effects from the bui…
nulltask Oct 9, 2026
27fa633
feat(player-web): dash through black space with the title centred on …
nulltask Oct 9, 2026
8647502
feat(player-web): trail the particles through Synesthesia's launch warp
nulltask Oct 9, 2026
3bda2c7
chore: record the skin adjustments in the player-web changeset [ci skip]
nulltask Oct 9, 2026
51ea831
perf(player-web): cache Phantom's static ground and halftone fields
nulltask Oct 9, 2026
89b97e8
perf(player-web): rebuild less of the built-in result screens each frame
nulltask Oct 9, 2026
acd0a2c
feat(player-web): smooth the built-in skins' screen transitions
nulltask Oct 9, 2026
4355869
perf(player-web): project Synesthesia's particle fields without alloc…
nulltask Oct 9, 2026
d31bdf6
perf(player-web): work out Lattice's needle field by row and column
nulltask Oct 9, 2026
2a3db9e
perf(player-web): reuse Plain's beam gradient and font strings
nulltask Oct 9, 2026
5509c48
chore: record the transition and performance work in the changeset [c…
nulltask Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 38 additions & 4 deletions .changeset/be-music-skins.md

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions .changeset/player-variant-lane-channels.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@be-music/player': minor
---

Add `resolvePlayVariantLaneChannels` to `@be-music/player/core/lane-layout`: the full lane set of a chart's play variant (5 / 7 / 9 / 10 / 14 / 24 / 48 KEY) in rendering order, whether or not the chart puts notes on every lane. 9 KEY picks the PMS layout when the chart uses `22..25` and the BME layout otherwise, and lanes in use outside the variant are kept.
5 changes: 5 additions & 0 deletions .changeset/player-web-full-lanes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@be-music/player-web': patch
---

Fix sparse charts playing on only the lanes they use: a chart with notes on a single lane laid out a single lane. Gameplay now lays out every lane of the chart's play variant (5 / 7 / 9 / 10 / 14 / 24 / 48 KEY), so the playfield, key bindings, and skins always show the whole keyboard.
10 changes: 10 additions & 0 deletions .changeset/skin-sdk-package.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@be-music/skin-sdk': minor
---

Add `@be-music/skin-sdk`, the package be-music skins for the browser player are written against. It imports no rendering framework: the player hands a skin a canvas and plain per-frame data, and the skin draws with whatever it brings (the Canvas 2D API, raw WebGL / WebGPU, PixiJS, three.js, …).

- Skin contract: `BeMusicSkin` and its surface and frame types (gameplay, select, result), `defineBeMusicSkin`, `validateBeMusicSkin`, and `BE_MUSIC_SKIN_API_VERSION`. A skin declares its metadata (id, semantic version, author), the canvas context it wants, optional `setup` / `teardown` hooks for its own renderer, and one `draw` per screen.
- Stage and layout: `wideStage` and its BGA placement, `resolveGameplayLayout`, `resolveLaneRuns`, the lane geometry the player lays lanes out with (IIDX lane widths, the double-play gap, keyboard modes), and `resolveBeMusicLaneKind`.
- Play state and sound: judgement words, moments (count-in, combo milestones, the clear line, full combo, combo break), effect levels, the loading caption, and `audioDrive` / `bandLevel` over the `BeMusicAudioFrame` analysis.
- Song and result facts: the song entry types, select-row facts, result lamp and track rows, plus tabular figure layout and motion helpers.
8 changes: 8 additions & 0 deletions README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ TypeScript + pnpm workspaces で構成した BMS/BMSON ツールチェーンで
- `@be-music/player-tui`: autoplay、keyboard play、Music Select、BGA、SEA build を扱う terminal UI と `bms-player` CLI frontend
- `@be-music/lr2-skin`: Lunatic Rave 2 skin parser、asset resolver、theme loader を renderer 非依存で提供する package
- `@be-music/beatoraja-skin`: beatoraja JSON/Lua skin parser、normalizer、theme loader を renderer 非依存で提供する package
- `@be-music/skin-sdk`: browser player 向け be-music スキンを書くための描画フレームワーク非依存の SDK
- `@be-music/player-web`: 選曲、built-in default / LR2 / beatoraja skin 描画、gameplay、result scene、録画を扱う browser PixiJS player core
- `@be-music/player-web-demo`: folder / ZIP drop、LR2 / beatoraja theme、debug control、browser 再生を接続する private Vite demo
- `@be-music/editor`: CLI エディタ (インポート・編集・エクスポート)
Expand Down Expand Up @@ -151,6 +152,13 @@ tag は `@be-music/package-name@x.y.z` 形式で作成されます。
- `property[]`、`filepath[]`、category group、custom offset、wildcard source path、case-insensitive asset を解決
- image、imageset、value、float-value、text、slider、note、judge、gauge、graph、BPM graph、timing graph、song-list、custom event、destination、PM character element を normalize

### be-music skin SDK (`@be-music/skin-sdk`)

- browser player の built-in family 向けスキンの契約。スキンは毎フレームのデータからキャンバスに各画面を描く
- 描画フレームワークを import しない。フレームワークはスキンが持ち込む(Canvas 2D、WebGL / WebGPU、PixiJS、three.js など)
- stage、lane layout、moment、判定表示、audio drive、曲情報、motion の helper
- [be-music スキンの作り方](docs/be-music-skin.ja.md) を参照

### browser player (`@be-music/player-web` / `@be-music/player-web-demo`)

- dropped folder、ZIP、song / LR2 / beatoraja theme 混在 drop を扱う browser song library
Expand Down
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ BMS/BMSON toolchain composed of TypeScript + pnpm workspaces.
- `@be-music/player-tui`: Terminal UI and `bms-player` CLI frontend for autoplay, keyboard play, Music Select, BGA, and SEA builds
- `@be-music/lr2-skin`: Renderer-independent Lunatic Rave 2 skin parser, asset resolver, and theme loader
- `@be-music/beatoraja-skin`: Renderer-independent beatoraja JSON/Lua skin parser, normalizer, and theme loader
- `@be-music/skin-sdk`: Framework-free SDK for writing be-music skins for the browser player
- `@be-music/player-web`: Browser PixiJS player core for song selection, built-in default / LR2 / beatoraja skin rendering, gameplay, result scenes, and recording
- `@be-music/player-web-demo`: Private Vite demo that wires folder/ZIP drops, LR2/beatoraja themes, debug controls, and browser playback together
- `@be-music/editor`: CLI editor (import/edit/export)
Expand Down Expand Up @@ -151,6 +152,13 @@ The semantics helper of the score is separated into `@be-music/chart`, and `@be-
- Resolves `property[]`, `filepath[]`, category groups, custom offsets, wildcard source paths, and case-insensitive assets
- Normalizes image, imageset, value, float-value, text, slider, note, judge, gauge, graph, BPM graph, timing graph, song-list, custom event, destination, and PM character elements

### be-music skin SDK (`@be-music/skin-sdk`)

- Skin contract for the browser player's built-in family: the skin draws each screen onto a canvas from plain per-frame data
- Imports no rendering framework; a skin brings its own (Canvas 2D, WebGL / WebGPU, PixiJS, three.js, …)
- Stage, lane layout, moment, judgement word, audio drive, song fact, and motion helpers
- See [Writing a be-music skin](./docs/be-music-skin.md)

### browser player (`@be-music/player-web` / `@be-music/player-web-demo`)

- Browser song library for dropped folders, ZIPs, and mixed song/LR2/beatoraja theme drops
Expand Down
1 change: 1 addition & 0 deletions docs/README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
- [プレイログ(プレイ履歴)仕様](playlog.ja.md)
- [LR2 skin 実装メモ](lr2-skin.ja.md)
- [beatoraja skin 実装メモ](beatoraja-skin.ja.md)
- [be-music スキンの作り方](be-music-skin.ja.md)
- [BMS/BMSON 中間表現 (`@be-music/json`) 実装仕様](json-spec.ja.md)
- [用語集](glossary.ja.md)

Expand Down
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ This directory is a Markdown collection of specifications used in the `be-music`
- [Play log (play history) specification](./playlog.md)
- [LR2 skin implementation notes](./lr2-skin.md)
- [beatoraja skin implementation notes](./beatoraja-skin.md)
- [Writing a be-music skin](./be-music-skin.md)
- [BMS/BMSON intermediate representation (`@be-music/json`) implementation specification](./json-spec.md)
- [Glossary](./glossary.md)

Expand Down
Loading