| .. | | |
| chainview.ts | 3D model view: setup (supports, pins, excitation, pickup) and replay of saved frames on a shared timeline | |
| controls.ts | Widget: Open the full app, the bundle's own instrument page in a closeable full-window overlay; unedited form fields keep their exact values, so the page and the widget hash the same cache keys; vault1 site in README | |
| fft.ts | String of beads: 3D bead-spring solver, control panel, waveform, spectrogram, wav, displacement viewer | |
| instrumentPage.ts | Widget: Open the full app, the bundle's own instrument page in a closeable full-window overlay; unedited form fields keep their exact values, so the page and the widget hash the same cache keys; vault1 site in README | |
| membraneview.ts | Cymbal: plate bending via per-triangle shape operators, felt centre support, stick and mallet with angle and friction, far-field microphone | |
| plot.ts | Widget: Open the full app, the bundle's own instrument page in a closeable full-window overlay; unedited form fields keep their exact values, so the page and the widget hash the same cache keys; vault1 site in README | |
| scene3d.ts | Widget: exaggeration dropdown in the motion bar | |
| settings.ts | Embeddable <toy-instrument-sim> widget (src/embed.ts): 3D model, replay and audio from the shared cache, or run in the browser and stored with the passcode; cache results as light and frames entries (CACHE_VERSION 2); instrument configs and link settings shared by the page and the widget | |
| spectrogram.ts | String of beads: 3D bead-spring solver, control panel, waveform, spectrogram, wav, displacement viewer | |
| timeline.ts | Embedded widget for readers: Play sound and Play motion buttons that download on first press, no setup/replay tabs or view controls; exaggeration attribute (default 5, not in the cache key) | |
| wav.ts | String of beads: 3D bead-spring solver, control panel, waveform, spectrogram, wav, displacement viewer | |