/ proof-of-concept / cymsimweb
Sign in
proof-of-concept / cymsimweb
cymsimweb / src / model / simulator.ts
23 lines · 999 BCodeBlameHistory
1e29264cymsimweb: WebGPU companion of cymsim with YAML/form editor, live spectrogram and playbackJeremy Magland 1// The interface shared by the CPU and the GPU time loops.
2export interface ChunkResult {
3 firstSample: number; // audio index of pressureFront[0]
4 pressureFront: Float32Array; // baffled Rayleigh pressure [Pa]
5 pressureBack: Float32Array; // diffracted back term [Pa]; unbaffled = front - back
6}
8export interface HitState { peakForce: number; contactTime: number; velocity: number; height: number }
10export interface Diagnostics {
11 time: number; kinetic: number; membrane: number; bending: number; exciters: number; maxWoverH: number; hits: HitState[];
14export interface SimulatorBackend {
15 readonly kind: "cpu" | "gpu";
16 readonly samplesDone: number;
17 /** Advance by nSamples audio samples and return the pressure samples completed meanwhile. */
18 runChunk(nSamples: number): Promise<ChunkResult>;
19 diagnostics(): Promise<Diagnostics>;
20 /** Transverse displacement w at every node, for the plate view. */
21 displacement(): Promise<Float32Array>;
22 dispose(): void;
↑↓ move↵openescclose