Skip to content

Releases: nulltask/be-music

@be-music/utils@0.3.0

Choose a tag to compare

@github-actions github-actions released this 14 Jun 05:07
1d606bc

Minor Changes

  • ca1012c: Add the @be-music/utils/optional-node-module subpath with loadOptionalNodeModule, a loader for optional dependencies (native addons, large wasm packages) that falls back to createRequire resolution anchored next to the executable, the directory named by the BE_MUSIC_OPTIONAL_NODE_MODULE_DIR environment variable, and the working directory. Inside a Node single executable application (SEA), import() of a bare specifier always fails, so this lets SEA binaries load such modules from a node_modules directory shipped alongside them or extracted from embedded assets.

@be-music/stringifier@0.3.1

Choose a tag to compare

@github-actions github-actions released this 14 Jun 05:07
1d606bc

Patch Changes

  • b9922cf: Support the beatoraja bmson long-note type extensions: info.ln_type and per-note t (1: LN, 2: CN, 3: HCN) are preserved in the IR, round-trip through JSON and bmson output, and drive the player's long-note mode (per-note t wins over info.ln_type). Charts that specify neither now default to LN (no tail release judgment, matching the LR2-aligned BMS default) instead of always being treated as CN.
  • Updated dependencies [b2c4f9b]
  • Updated dependencies [b9922cf]
  • Updated dependencies [4d5a89e]
  • Updated dependencies [cdc42a1]
  • Updated dependencies [ca1012c]
    • @be-music/parser@0.2.3
    • @be-music/json@0.2.2
    • @be-music/utils@0.3.0
    • @be-music/chart@0.3.2

@be-music/player@0.5.0

Choose a tag to compare

@github-actions github-actions released this 14 Jun 05:07
1d606bc

Minor Changes

  • 7bbf052: HARD / EASY / DEATH gauges now follow the LR2 tables (beatoraja GaugeProperty HARD_LR2 / EASY_LR2 / HAZARD_LR2): HARD recovers +0.1/+0.1/+0.05 with damage scaled by the #TOTAL multiplier table and softened ×0.6 under 30%; EASY damages -3.2/-4.8/-1.6 and clears at 80%; DEATH drains -10 on an empty POOR instead of dying and recovers +0.15/+0.06. Survival gauges collapse to 0% (FAILED, no recovery) below 2%, and raw deltas such as mine damage bypass the guts/TOTAL modifiers.
  • 811cdfc: Judge windows are now the measured LR2 tables instead of IIDX-baseline linear scaling: #RANK 0/1/2/3 map to ±8/±15/±18/±21ms PGREAT (±24/±30/±40/±60 GREAT, ±40/±60/±100/±120 GOOD), #RANK 4 is treated as NORMAL, the BAD gate is fixed at ±200ms for every rank, and #DEFEXRANK / #EXRANKxx / bmson judge_rank interpolate piecewise-linearly between the rank anchors (lr2oraja JudgeWindowRule.LR2 model) without ever exceeding the BAD gate.
  • d0bb321: Mines now follow the LR2 detonation model: a mine explodes while its lane's key is ON and the mine is within the GOOD window of the judge line — covering both presses with a mine in range and holding through a passing mine; a mine passing with the key up is harmless. Explosions only drain the gauge (raw base36 value as the damage percent, matching LR2 / beatoraja, instead of the nanasi value/2 rule) and play #WAV00 — no BAD verdict, no combo break, and mines no longer swallow presses aimed at nearby notes. Mine damage bypasses the HARD guts softening and #TOTAL multiplier; ZZ instantly fails survival gauges.

Patch Changes

  • b9922cf: Support the beatoraja bmson long-note type extensions: info.ln_type and per-note t (1: LN, 2: CN, 3: HCN) are preserved in the IR, round-trip through JSON and bmson output, and drive the player's long-note mode (per-note t wins over info.ln_type). Charts that specify neither now default to LN (no tail release judgment, matching the LR2-aligned BMS default) instead of always being treated as CN.

  • 254e213: Empty POORs (空 POOR) now follow the LR2 trigger condition: a phantom press charges only when a note on the same lane lies within the next 1 second (early side only, fixed window). Presses after a note or on lanes with no upcoming note are harmless keysound presses — previously every phantom press drained the gauge regardless of note proximity.

  • ebfdba7: Bump the node-web-audio-api runtime dependency from 1.0.9 to 2.0.0 (semver-major). The Node audio sink now runs on the 2.x WebAudio backend with no change to the player's public API.

  • ca1012c: Load node-web-audio-api through the SEA-aware optional-module loader. In a single executable application the bare-specifier import always fails, which permanently disabled audio playback; the player can now pick the module up from a node_modules directory next to the executable (or the working directory) before falling back to silent playback.

  • 6ce9173: Missing, undefined, or undecodable #WAVxx references are now silent by default, matching LR2 / beatoraja. The synthesized sine fallback tone is opt-in: pass fallbackToneSeconds to the audio-renderer APIs or missingSampleToneSeconds to the player engine when a debugging tone is wanted.

  • 7802f98: Fix four spec-compliance deviations found by the BMS spec audit:

    • HARD / DEATH gauges now report FAILED when they bottom out at 0 % (previously isGrooveGaugeCleared treated 0 % as cleared).
    • Dynamic #EXRANKxx (channel A0) values now go through the same RANK 2 = 100 unit conversion as #DEFEXRANK, so #EXRANK 100 restores exactly the NORMAL judgment width instead of widening it by 4/3.
    • bmson key_channels[].notes[].damage is now applied as the mine's gauge damage, taking precedence over the BMS value / 2 rule.
    • #SPEEDxx now holds the first keyframe's value before its beat (Bemuse reference semantics) instead of ramping linearly from 1.0.
  • Updated dependencies [b2c4f9b]

  • Updated dependencies [b9922cf]

  • Updated dependencies [4d5a89e]

  • Updated dependencies [6ce9173]

  • Updated dependencies [cdc42a1]

  • Updated dependencies [ca1012c]

    • @be-music/parser@0.2.3
    • @be-music/json@0.2.2
    • @be-music/audio-renderer@0.2.3
    • @be-music/utils@0.3.0
    • @be-music/chart@0.3.2

@be-music/player-web@0.6.2

Choose a tag to compare

@github-actions github-actions released this 14 Jun 05:07
1d606bc

Patch Changes

  • f07ff77: Match the LR2 groove gauge bar rendering: remove the peak-hold / afterimage bead (LR2 has none — the bar tracks only the live value) and suppress the green clear-zone split for survival gauges (HARD / DEATH render the whole bar red in LR2, since they have no 80% clear border). GROOVE / EASY keep the green ≥80% zone. The per-bead cell selection is now the pure, tested resolveGrooveGaugeBeads helper.
  • 99324e8: #xxx97 / #xxx98 dynamic volume changes in the WebAudio session now apply only to voices triggered after the event, matching the documented semantics and the Node engine. Previously the web runtime wrote the new gain onto the shared bus mixers, retroactively changing the volume of already-playing voices.
  • Updated dependencies [b2c4f9b]
  • Updated dependencies [b9922cf]
  • Updated dependencies [4d5a89e]
  • Updated dependencies [254e213]
  • Updated dependencies [7bbf052]
  • Updated dependencies [811cdfc]
  • Updated dependencies [d0bb321]
  • Updated dependencies [ebfdba7]
  • Updated dependencies [ca1012c]
  • Updated dependencies [6ce9173]
  • Updated dependencies [7802f98]
  • Updated dependencies [cdc42a1]
  • Updated dependencies [ca1012c]
    • @be-music/parser@0.2.3
    • @be-music/json@0.2.2
    • @be-music/player@0.5.0
    • @be-music/audio-renderer@0.2.3
    • @be-music/utils@0.3.0
    • @be-music/chart@0.3.2
    • @be-music/lr2-skin@0.1.4
    • @be-music/beatoraja-skin@0.1.2

@be-music/player-web-demo@0.3.1

Choose a tag to compare

@github-actions github-actions released this 14 Jun 05:07
1d606bc

Patch Changes

  • Updated dependencies [f07ff77]
  • Updated dependencies [99324e8]
    • @be-music/player-web@0.6.2
    • @be-music/lr2-skin@0.1.4
    • @be-music/beatoraja-skin@0.1.2

@be-music/player-tui@0.3.0

Choose a tag to compare

@github-actions github-actions released this 14 Jun 05:07
1d606bc

Minor Changes

  • ca1012c: Make the TUI player work as a Node single executable application (SEA).

    • Gameplay, UI, and BGA-video workers are now spawned from an embedded copy of the SEA bundle (eval workers dispatched by the new sea-main entry on a workerData role marker); previously the worker URL resolution threw under SEA and playback silently never started.
    • The CLI entry refuses to start from a worker thread, since inside SEA workers process.argv[1] still equals process.execPath.
    • @uwx/libav.js-fat (video BGA) loads through the SEA-aware optional-module loader, so a node_modules directory next to the executable now works.
    • SEA binaries embed node-web-audio-api (with its dependency closure, filtered to the target platform's native addon) and @uwx/libav.js-fat (filtered to the wasm build actually used at runtime), extracting them once into ~/.be-music/sea-embedded-modules at startup, so audio playback and video BGA work out of the box; a node_modules directory next to the executable still takes precedence.

Patch Changes

  • Updated dependencies [b2c4f9b]
  • Updated dependencies [b9922cf]
  • Updated dependencies [4d5a89e]
  • Updated dependencies [254e213]
  • Updated dependencies [7bbf052]
  • Updated dependencies [811cdfc]
  • Updated dependencies [d0bb321]
  • Updated dependencies [ebfdba7]
  • Updated dependencies [ca1012c]
  • Updated dependencies [6ce9173]
  • Updated dependencies [7802f98]
  • Updated dependencies [cdc42a1]
  • Updated dependencies [ca1012c]
    • @be-music/parser@0.2.3
    • @be-music/json@0.2.2
    • @be-music/player@0.5.0
    • @be-music/audio-renderer@0.2.3
    • @be-music/utils@0.3.0
    • @be-music/chart@0.3.2

@be-music/parser@0.2.3

Choose a tag to compare

@github-actions github-actions released this 14 Jun 05:07
1d606bc

Patch Changes

  • b2c4f9b: decodeBmsText now implements the full documented encoding-detection pipeline: UTF-16LE / UTF-16BE BOMs are recognized (such charts previously decoded as garbled shift_jis and lost every event), BOM-less files that strictly validate as UTF-8 decode as UTF-8, and remaining files are scored across shift_jis / utf-8 / euc-jp / iso-8859-1 instead of unconditionally falling back to shift_jis.
  • b9922cf: Support the beatoraja bmson long-note type extensions: info.ln_type and per-note t (1: LN, 2: CN, 3: HCN) are preserved in the IR, round-trip through JSON and bmson output, and drive the player's long-note mode (per-note t wins over info.ln_type). Charts that specify neither now default to LN (no tail release judgment, matching the LR2-aligned BMS default) instead of always being treated as CN.
  • 4d5a89e: Accept the real-world control-flow spelling variants #END IF, bare #END, and #ELSE IF n as #ENDIF / #ELSEIF n. Previously such charts left the #IF block unterminated, so a non-matching #RANDOM roll silently dropped every line after the misspelled directive.
  • cdc42a1: BMS object data lines (#mmmcc:data) are now truncated at the first whitespace character. Trailing text no longer fabricates note events (e.g. junk becoming JU/NK objects) or inflates the position denominator of the legitimate tokens before it.
  • Updated dependencies [b9922cf]
  • Updated dependencies [ca1012c]
    • @be-music/json@0.2.2
    • @be-music/utils@0.3.0
    • @be-music/chart@0.3.2

@be-music/lr2-skin@0.1.4

Choose a tag to compare

@github-actions github-actions released this 14 Jun 05:07
1d606bc

Patch Changes

  • Updated dependencies [b9922cf]
  • Updated dependencies [ca1012c]
    • @be-music/json@0.2.2
    • @be-music/utils@0.3.0
    • @be-music/chart@0.3.2

@be-music/json@0.2.2

Choose a tag to compare

@github-actions github-actions released this 14 Jun 05:07
1d606bc

Patch Changes

  • b9922cf: Support the beatoraja bmson long-note type extensions: info.ln_type and per-note t (1: LN, 2: CN, 3: HCN) are preserved in the IR, round-trip through JSON and bmson output, and drive the player's long-note mode (per-note t wins over info.ln_type). Charts that specify neither now default to LN (no tail release judgment, matching the LR2-aligned BMS default) instead of always being treated as CN.
  • Updated dependencies [ca1012c]
    • @be-music/utils@0.3.0

@be-music/editor@0.2.3

Choose a tag to compare

@github-actions github-actions released this 14 Jun 05:07
1d606bc

Patch Changes

  • Updated dependencies [b2c4f9b]
  • Updated dependencies [b9922cf]
  • Updated dependencies [4d5a89e]
  • Updated dependencies [cdc42a1]
  • Updated dependencies [ca1012c]
    • @be-music/parser@0.2.3
    • @be-music/json@0.2.2
    • @be-music/stringifier@0.3.1
    • @be-music/utils@0.3.0
    • @be-music/chart@0.3.2