Drawing engine corresponding source

The drawing application and adapters are AGPL-3.0-or-later; dependencies retain
the terms in their included notices. This archive contains the preferred source
inputs used by the browser bundler and the exact package lock. It excludes art,
recordings, source maps and native build-tool binaries.

Rebuild with Node 22 or later:
  npm ci --prefix composition
  node scripts/build-drawing-events.mjs

Outputs: web/vendor/drawing-{compiler,audio,worklets}.js, six evaluated event
JSON files, license notices and this deterministic corresponding source archive.
The complete authored score programs are included. No private source repository
or external Strudel service is required; npm ci obtains the locked packages and
a platform-specific esbuild binary. Serve the reviewed public drawing assets
over HTTP to run the application. Approved images and recordings are distributed
separately on the public drawing pages.

Optional native WAV and Strudel punchcard reproduction:
  npm ci
  npx playwright install chromium
  # Install FFmpeg from its official distribution or package manager.
  node scripts/render-drawing-scores.mjs

This helper uses upstream @strudel/webaudio renderPatternAudio and the upstream
Strudel punchcard painter. Its one-context native lookahead scheduler retains
shared orbit effects and uses native live cycle units for beat-phased LFOs.
Receipts fingerprint every scheduled native Hap once. Its default
evidence/drawing-renders output is author
evidence for review, not an automatic public release. It renders complete stereo
48 kHz PCM16 captures with a six-second release tail. The default dance master
applies one capture gain to -4 dBFS, linked stereo RMS compression, and measured
two-pass FFmpeg loudness normalization to -14 LUFS / -1.2 dBTP. Every native
frame is retained. Use --master=none for the uncompressed native capture. The root lock pins its browser automation dependency;
Chromium binaries are installed for the recipient and are not redistributed.
