Piano Flow by SuneBear, MIT Copyright 2016 SuneBear. Source: https://github.com/SuneBear/Piano-Flow/tree/7d3e373d3406e10a448b83f1505a61ed10528f60 404 stars observed November 7, 2026. Last pushed September 15, 2023; last source commit March 10, 2018. This altered compact edition extracts the original generateNoteInfos, generateBunchInfos, generateGhostInfos, generateBunchPositions and warpX methods. The upstream MIDI parser and Replayer convert three complete MIDI files from src/assets/midis into score-0/1/2.json. Chord groups and score timings are not rearranged. These are Prelude in C (Bach), Old French Song (Tchaikovsky) and Arietta (Grieg); original MIDI filenames are recorded in BUILD.txt. Adaptation replaces retired Vue2/Pixi4/MIDI.js tooling with native Canvas and Web Audio, and replaces sample soundfonts with locally synthesized sine partials. Any fresh letter/Space or pointer press advances one chord, vertical pointer location controls dynamics, and hold/release controls sustain. Original note grouping tolerance and exponential camera movement preserved. New responsive interface, keyboard and semantic pointer controls, explicit listen/takeover, pause, sound, guide and local completion records. Three full pieces selected from the larger original catalog. No original sampled audio, font, portrait or external asset reused. No server, network music service, login, account, leaderboard or downloads. Source parser modules bundled for reproduction, even though not needed at runtime. Build: run convert.mjs from the run evidence folder against the pinned upstream checkout; it uses the shipped parser/replayer/flow-core and writes each score JSON. Native modules need no bundling or installation. Serve/upload all flat files at site root.