Turn your network traffic into live generative music.
NetWave is a local-first creative app that translates live network behavior into generative sound. It is not a traditional network monitor. It is a sonification experience.
- Backend collector that samples network metrics every second
- WebSocket stream with realtime metrics
- React dashboard with socket status, BPM, metrics and activity bars
- Tone.js audio engine (kick, hi-hat, synth pad, dynamic filter)
- Progressive, smoothed mapping from network changes to music parameters
- Node.js
- Express
- ws
- ping
- systeminformation
- TypeScript
- React
- Vite
- TypeScript
- Tone.js
- Backend samples metrics every
1000ms. - Backend broadcasts
metricsmessages via WebSocket. - Frontend subscribes to WebSocket stream.
- Frontend maps metrics to musical parameters.
- Tone.js engine updates transport/instruments in realtime.
latency(ms)jitter(ms, moving average of latency deltas)downloadActivity(0-100 normalized)uploadActivity(0-100 normalized)packetLoss(% when available, otherwisenull)
latency-> BPMdownloadActivity-> beat intensityuploadActivity-> synth intensityjitter-> controlled glitch/swing variationpacketLoss-> stutter probability
All parameters are smoothed to avoid abrupt changes.
netwave/
server/
src/
index.ts
metrics/collectMetrics.ts
mapping/mapNetworkToMusic.ts
types/metrics.ts
client/
src/
App.tsx
hooks/useMetricsSocket.ts
audio/audioEngine.ts
audio/musicMapper.ts
components/MetricsPanel.tsx
components/TransportPanel.tsx
components/ActivityBars.tsx
types/metrics.ts
- Node.js 20+
- npm 10+
- Local network access enabled
From repository root:
npm installRun both backend and frontend:
npm run devApps:
- Backend:
http://localhost:3001 - Frontend:
http://localhost:5173
Run separately:
npm run dev:server
npm run dev:clientBuild both workspaces:
npm run build- Browser audio requires a user gesture. Click
Start Audioin the UI. - Default ping target is
1.1.1.1. - You can override ping host for backend:
PING_HOST=8.8.8.8 npm run dev:server- Packet loss depends on OS/network command behavior and may be
null. - Activity is normalized from host network interface stats (not router-wide traffic).
- No persistence/database by design.
- Audio tuning is intentionally simple and local-first.
- Better packet loss estimation and fallback strategies
- More musical scenes and scale presets
- Recording/export session mode
- Device selection for audio output
- Advanced visualization modes
MIT