A sound was fetched and decoded on its first Play sound. That play
started late, its beginning was not heard, and a graph that tuned the
voice in the meantime had moved on by the time it started. Images and
fonts were already loaded when a project opens. Sounds now are too.
- projectFiles lists the sounds of a project, and preloadProjectFiles
hands them to the new soundLibrary.preload. That covers the editor
and the published game.
- Preloading opens no audio device. It decodes with an
OfflineAudioContext at 48 kHz. The real AudioContext is still made
on the first play, and a source resamples where the device runs at
another rate.
- A run started right after opening a project can still find a sound
loading. It then starts late as before.
Tests:
- sound-library: a preload makes only the offline context, and a
play after it starts at once, opening the device only then.
- sound-library + project-files: 18 tests, green.
- e2e 34 on melektaus-atx: ALL PASSED, 30 checks.
- Counter-check: decoding with the real AudioContext again fails the
new test.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>