rust · wasm · web audio · topology

topo-sonify

A topology-first sonification engine. Simplicial complexes become sound: vertices are voices, edges are intervals, higher-dimensional simplices are textures.

what it is

Most sonification picks a quantity and maps it to a parameter (loud = high, fast = bright). topo-sonify starts from structure instead. The mathematical object is a simplicial complex — a set of vertices, edges, triangles, tetrahedra. Each dimension is given its own audible role, and the rendering preserves the relations.

The engine compiles to WebAssembly and drives Web Audio directly. Listen to the Betti numbers. Hear a hole appear when an edge closes a loop.

dimensions ↦ sound

0-simplex  vertex   ──▶  oscillator voice
1-simplex  edge     ──▶  interval / coupling between voices
2-simplex  triangle ──▶  triadic chord · pitched cluster
n-simplex           ──▶  spectral envelope · timbre
                            (preserves face relations)

         ┌─ Δ₀ ─▶ OscillatorNode
         ├─ Δ₁ ─▶ DelayNode + GainNode
         ├─ Δ₂ ─▶ BiquadFilterNode bank
         └─ Δₙ ─▶ ConvolverNode → AudioContext.destination

quick start

$ git clone https://github.com/uprootiny/topo-sonify
$ cd topo-sonify
$ wasm-pack build --target web
$ cd web && python3 -m http.server 8080
$ open http://localhost:8080

design

language
Rust → WebAssembly · wasm-bindgen
output
Web Audio API graph · streamed
dependencies
wasm-bindgen · web-sys · serde
license
MIT