WebCode Sonification Engine

Every webpage already has a structure. We let you hear it.

每一個網頁本來就有結構。我們只是讓你聽見它。—— 網頁代碼音樂化引擎

v0.4.1 developer preview · open source (Apache-2.0) · local-only

A browser extension that plays the page you're reading

One click. WSE reads the current tab's DOM topology, sampled CSS and visual geometry, then synthesizes a 30–90 second piece of music from it — live, in your browser, with the Web Audio API.

🎼 Deterministic sound identity

The seed is Hash(CanonicalURL, StructuralFingerprint). The same page structure always produces the same music — every site gets its own sound signature. When a site is redesigned, its music changes too.

同一結構永遠是同一首曲子——網站自己的結構決定它成為什麼音樂。

🏛️ Structure picks the orchestra

A text-heavy blog leads with keys and strings; a button-farm dashboard turns rhythmic; an image grid rings with bells. Seven scales, Euclidean groove signatures, and song form (Intro–A–B–A′–Outro) derived from header, sections and footer.

內容型、導航型、媒體型、表單型網頁,各自拿到不同的主奏與節奏簽名。

🔒 Local-only by design

No server, no telemetry. Analysis runs only when you click, only on the active tab. Form values and editable content are never read; query strings never enter the pipeline. Everything is synthesized — no samples, no downloads.

所有分析都在本機。絕不上傳頁面內容,絕不讀取表單值。

👁️ Visualizer — watch code become music

The page's tags stream by like subtitles and light up the instant "their" note sounds — links flash on arpeggios, images on bells, buttons on percussion — while a piano-roll score scrolls under the playhead. Honest provenance: every note knows which structural layer created it. Try it in the live demo.

看見程式碼變成音樂:被點到的 tag 發光、樂譜持續前進,每個音符都知道自己來自哪一層結構。

🖱️ Scroll = playhead, 🔴 Live = DOM changes

New in v0.4. Two more ways to play a page. Scroll down to play forward, scroll back to go silent — your scroll position is the timeline. Or switch to Live: a quiet ambient bed loops while the page's own runtime activity — elements added, removed, changed — performs on top. A quiet page just stays quiet; a busy one becomes a real performance.

捲動即播放頭、DOM 變化即演奏——網頁自己的活動變成音樂。

⬇️ Export WAV

New in v0.4. Render the current piece offline — through the exact graph you just heard, not a separate export path — and download a standard 16-bit WAV file. Entirely on-device.

離線算圖匯出標準 WAV 檔,全程在本機完成。

How it works

Two-stage architecture: faithful structural extraction first, then a music grammar that makes it listenable — scale quantization, a 1/16 rhythm grid, chord progressions, and hard density caps so a 500,000-node page cannot explode into noise.

Webpage → Features → Normalize → Fingerprint → Music ProfileScore → Web Audio
Page featureMusical effect
Tag diversity + node countTempo (52–176 BPM)
Average CSS hueKey (12 pitch classes)
Palette lightness × saturationOne of 7 scales — major, minor, dorian, lydian, mixolydian, pentatonics
Dominant structure familyLead & arpeggio instruments (content / navigation / media / form)
Link densityArpeggio busyness (Euclidean pattern)
Image densityBell accents
Button densityPercussion groove
DOM depthPitch register width
header / sections / footerSong form: Intro – A – B – A′ – Outro
Element positionsStereo panning

Five styles, 23 instruments, one identity

A style is a palette, not a skin — it changes articulation, register and rhythm roles. The page decides which voices inside the palette actually play. Tune everything with sliders: tempo, density, brightness, reverb.

Ambient · pads, e-piano, bells, choir Piano · piano, guitar, strings, clarinet Electronic · leads, kicks, hats, subbass Orchestral · strings, brass, taiko, marimba Eastern 東方 · 蕭 xiao, 笛 flute, 太鼓 taiko, 箏 koto, guitar

All instruments are pure Web Audio synthesis — Karplus-Strong plucked strings (guitar, koto), breath-modeled winds (xiao, flute, clarinet), inharmonic mallet percussion (marimba), and a formant-filtered vocal pad (choir). No sample libraries, nothing to download. New in v0.4.1: every sustained voice has a filter envelope that moves brightness through the note, the procedural reverb gained a pre-delay and a darkening tail, and the master bus adds a warmth/air EQ plus a soft-knee saturator ahead of the compressor.

Get the extension

v0.4.1 is a developer preview for Chrome (Manifest V3, permissions: activeTab · scripting · storage · offscreen). Open source on GitHub; Chrome Web Store listing is on the way.

  1. Download and unzip the release (or build from source: npm install && npm run builddist/)
  2. Open chrome://extensions and enable Developer mode
  3. Load unpacked → select the unzipped folder
  4. Open any webpage, click the WSE icon → Analyze & Play

Can't install right now? The live demo runs the exact same pipeline on the demo page itself — press play and the page becomes its own score.

Roadmap

未來擴充計畫 — where this is going.

v0.3 ✓

Visualizer — token stream + karaoke highlights + scrolling piano-roll score, with per-note provenance

v0.4 ✓

Scroll Mode (viewport as playhead) · Live Mode (DOM changes become a live performance) · WAV export

v0.4.1 ✓

Sound design pass — filter envelopes, redesigned reverb, master-bus EQ/saturation · 5 new instruments (clarinet, marimba, koto, subbass, choir)

v0.5

Custom mapping profiles · MIDI export

v1.0

Firefox · public mapping SDK · research dataset & listening studies

Research

Do sites form recognizable sound signatures? Can you name a site type by ear? Are redesigns audible?

🙏 Special thanks to the pioneer. Synesthesia Add-on — a Tool for HTML Sonification (Brazilian Symposium on Computer Music, 2017) treated HTML pages as musical scores in a browser add-on years before WSE existed. WSE was designed independently and is not an equivalent system — but creating is easier when a pioneer has already shown a direction is possible, and we thank its author for that. WSE's narrower claim: a webpage's accessible computational structure defines a reproducible generative musical identity.
特別感謝先行者:WSE 為獨立設計、並不完全等同,但正因為有人先證明過「HTML 頁面可以作為樂譜」,我們在創作時得以確信這個方向可行。