|
7 | 7 | - Web front-end (WASM) is running with: |
8 | 8 | - 3 voices, spatial audio (Web Audio + PannerNode) |
9 | 9 | - Lush ambient effects: global Convolver reverb and dark feedback Delay bus with per-voice sends and a master bus |
10 | | - - Mouse-driven FX: corner-based saturation (clean ↔ fizz) and opposite-corner delay emphasis; visuals have inertial swirl motion |
| 10 | + - Mouse-driven FX: corner-based saturation (clean ↔ fizz) and opposite-corner delay emphasis; visuals have inertial swirl motion and click ripples |
11 | 11 | - Start overlay to initialize audio (Click Start; canvas-click fallback) |
12 | 12 | - Drag voices in XZ plane; click to mute, Shift+Click reseed, Alt+Click solo |
13 | 13 | - Keyboard: R (reseed all), Space (pause), + / - (tempo), M (master mute), O (orbit on/off) |
14 | 14 | - Starts muted by default; press M to unmute the master bus |
15 | | - - Dynamic hint shows current BPM, paused, and muted state |
16 | | - - Rich visuals: instanced voice markers with emissive pulses, animated orbiting ring particles, subtle vignette, optional analyser-driven spectrum dots |
17 | | -- Native front-end renders and plays basic synthesized audio (parity improving) |
| 15 | + - Dynamic hint shows current BPM, paused, muted, and orbit state |
| 16 | + - Rich visuals: instanced voice markers with emissive pulses, ambient waves background, post bloom/tonemap/vignette; optional analyser-driven spectrum dots |
| 17 | +- Native front-end renders and plays synthesized audio; parity improving: |
| 18 | + - Equal-power stereo panning from X position, multiple waveforms (sine/square/saw/triangle) |
| 19 | + - Gentle master saturation (arctan curve); hover highlight parity; renderer uses `scene.wgsl` |
| 20 | + |
| 21 | +### Demo |
| 22 | + |
| 23 | +- Local: see Run (Web) below. After `npm run dev:web`, open `http://localhost:8080`. |
| 24 | +- Hosted: deploy with Cloudflare Workers (see Deploy). A public demo link can be added here when available. |
18 | 25 |
|
19 | 26 | ### Requirements |
20 | 27 |
|
|
23 | 30 | - wasm-pack (install: `curl -sSfL https://rustwasm.github.io/wasm-pack/installer/init.sh | sh`) |
24 | 31 | - Desktop browser with WebGPU enabled |
25 | 32 |
|
| 33 | +Notes: |
| 34 | + |
| 35 | +- WebGL fallback is intentionally avoided; WebGPU is required. |
| 36 | +- If audio does not start, click the Start overlay and press M to unmute the master bus. |
| 37 | + |
26 | 38 | ### Run (Web) |
27 | 39 |
|
28 | 40 | - Build: `npm run build:web` |
29 | 41 | - Serve: `node server.js` (serves `crates/app-web` with correct headers) |
30 | 42 | - Open: visit `http://localhost:8080` |
31 | 43 | - Dev shortcut: `npm run dev:web` then `npm run open:web` |
32 | 44 |
|
| 45 | +Quick controls (browser): |
| 46 | + |
| 47 | +- R: reseed all • Space: pause/resume • +/-: tempo • M: master mute • O: orbit on/off |
| 48 | +- Click a voice to mute; Alt+Click to solo; Shift+Click to reseed a voice; drag to move in XZ |
| 49 | + |
33 | 50 | ### Pre-commit Check |
34 | 51 |
|
35 | 52 | - Run all checks and tests locally: `npm run check` |
@@ -64,11 +81,27 @@ Headless test: |
64 | 81 | - On push to `main`, deploys to Cloudflare Workers via Wrangler |
65 | 82 | - Requires repo secrets: `CLOUDFLARE_API_TOKEN` and `CLOUDFLARE_ACCOUNT_ID` |
66 | 83 | - Workflow file: `.github/workflows/web-ci.yml` |
| 84 | + - CI tolerates missing WebGPU in headless by skipping engine-coupled assertions |
67 | 85 |
|
68 | 86 | ### Run (Native) |
69 | 87 |
|
70 | 88 | - Build: `npm run build:native` |
71 | 89 | - Run: `npm run native` |
| 90 | + - Optional: `npm run native:smoke` runs a short smoke test and exits |
| 91 | + |
| 92 | +### Media |
| 93 | + |
| 94 | +- Screenshots/GIFs live in `docs/media/`. |
| 95 | +- Place files like: |
| 96 | + - `docs/media/screenshot-1.png` – main scene |
| 97 | + - `docs/media/screenshot-2.png` – orbit and hint overlay |
| 98 | + - `docs/media/loop-1.gif` – waves background with ripples and pulses |
| 99 | + |
| 100 | +Links: |
| 101 | + |
| 102 | +- [Screenshot 1](docs/media/screenshot-1.png) |
| 103 | +- [Screenshot 2](docs/media/screenshot-2.png) |
| 104 | +- [Loop GIF](docs/media/loop-1.gif) |
72 | 105 |
|
73 | 106 | ### Workspace crates |
74 | 107 |
|
|
0 commit comments