Skip to content

Remove the synthesized piano; lessons and examples use grandpiano (0.11.0) - #38

Merged
snakajima merged 3 commits into
mainfrom
remove-piano
Oct 23, 2026
Merged

snakajima merged 3 commits into
mainfrom
remove-piano

Conversation

@snakajima

Copy link
Copy Markdown
Contributor

The synthesized piano is removed, and lessons and examples now use grandpiano, the recorded Steinway. This is a breaking change, so both packages go to 0.11.0.

What changes for a score

  • A track or custom instrument whose base is "piano" now fails checkScore with:
    "piano" was removed in 0.11.0; use "grandpiano" instead.
    getInstrument and jinglescript instruments piano say the same.
  • A score may still define its own instrument called "piano".
  • In sheet music, a grand-piano part with no name is printed "Piano".

Where the synth went

  • It is now tests/piano-synth.ts. Its only use is to make the stand-ins for the grand piano's recordings (tests/sample-fixture.ts).
  • So tests stay offline, and every existing grandpiano golden hash still holds.

Examples, guide, tests

  • Seven examples move to grandpiano, with new golden hashes: three lessons (C major scale, Twinkle, Happy Birthday), layered-hit, lyrics-hatena, piano-ukulele-claps and riser-reveal.
  • a-piano.json is deleted, since a-grandpiano.json already shows the piano.
  • None of the non-lesson examples gives a len, so their notes still ring out as before. The lessons give len, so the dampers now end each note there.
  • The guide now says grandpiano is the piano, and its custom-layer and sheet-music examples use it.
  • Tests that used the piano as a ringing coded instrument use grandpiano with the stand-ins. Tests where the instrument doesn't matter use a vibraphone or marimba.
  • The smoke test renders the lyrics example without its grand-piano track, so it stays offline.

Measured, with the real recordings

example LUFS (grand piano / old piano) true peak (dBTP)
learn-c-major-scale −14.0 / −14.0 −1.8
learn-twinkle −14.0 / −14.1 −1.8
learn-happy-birthday −14.0 / −14.0 −1.8
layered-hit −14.4 / −14.5 −1.8
lyrics-hatena −14.0 / −14.0 −1.8
piano-ukulele-claps −14.1 / −14.3 −1.8
riser-reveal −15.6 / −16.2 −1.7

riser-reveal is held below the loudness target by the peak ceiling. That was already the case with the old piano.

Verification

  • format, lint, typecheck: pass
  • Root tests: 714 passed, 100 skipped
  • Plugin: typecheck and 192 tests pass
  • smoke.sh: pass
  • Not yet: listening to the renders (out/grandpiano/, with the old piano in out/old-piano/)

🤖 Generated with Claude Code

work in jinglescript

snakajima and others added 3 commits October 23, 2026 06:46
…11.0)

The user does not like the synthesized piano's sound. It leaves the instrument set: a score or a
custom instrument's `base` that still says "piano" fails with
  "piano" was removed in 0.11.0; use "grandpiano" instead.
(REMOVED_INSTRUMENTS in src/instruments/index.ts; also getInstrument and `jinglescript
instruments piano`). A score may still define an instrument of its own called "piano".

The synth itself moves to tests/piano-synth.ts, where it only makes the stand-ins for the grand
piano's recordings (tests/sample-fixture.ts), so every grandpiano golden hash still holds offline.

- Seven examples move to grandpiano (new golden hashes); a-piano.json is gone (a-grandpiano.json
  shows the piano). None of the non-lesson ones gives a len, so their notes ring as before.
- The guide: grandpiano is the piano; its custom layering and sheet-music examples use it.
- Sheet music: a grandpiano part with no name is printed "Piano".
- Tests that used the piano as a ringing code instrument use grandpiano with the stand-ins, or a
  vibraphone or marimba where the instrument does not matter.
- 0.11.0 for both packages (a breaking change); the plugin needs jinglescript ^0.11.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… stays offline

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@snakajima
snakajima merged commit 0fd5d3f into main Oct 23, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant