The Urban Data Synthesizer fetches real hourly weather and air-quality readings for six cities and routes each stream into a Web Audio synthesizer. The result is a short composition that sounds like the weather and air of a place, plus a patch bay for exploring how data becomes sound.
Case Study
Urban Data Synthesizer
Turns real hourly climate and air-quality data for a city into music in the browser, with a live-editable mapping from data channels to sound.
- Role
- Design & development
- Year
- 2026
- Status
- Working prototype

Environmental data is usually shown as charts. Sound offers another way to feel change over time, but raw, noisy data mapped straight to pitch sounds like noise.
Each channel (temperature, humidity, wind, precipitation, pressure, cloud cover, PM2.5, PM10, NO2, ozone) is normalized to a 0..1 range with gaps filled, then routed through a configurable matrix to sound parameters. Pitches are quantized to a chosen musical scale so the output is never accidentally dissonant.
TypeScript · React · Vite · Tone.js · d3-scale · Open-Meteo APIs
Architecture
System Flow
Data comes client-side from the Open-Meteo forecast and air-quality APIs (CC BY 4.0, no key) and is aligned onto one hourly grid. A normalization step feeds the mapping engine, which drives a scheduler. Timeline mode sequences about 48 hours into a composition with a synced playhead; live mode re-polls the latest reading. A bundled sample keeps the demo working offline.
Learnings
What This Work Sharpened
- The interesting engineering is the mapping layer, not the synthesis: it is what turns arbitrary data into something intentional
- Normalizing and gap-filling each channel independently means a missing hour never silences a voice
- Quantizing to a scale is a cheap, effective way to make data-driven sound musical