What's new in 00.02.01
- 00.02.01 — Ogham and Celtic signs (triple spiral, triquetra, ringed cross, Awen) join the glyph rhymes, each dated; Indigenous forms drawn procedurally; lists re‑render only when the signature changes.
- True render — the real, unshifted infrasound on your subwoofer (main output) or on a second device for a shaker plate, an ES‑9 or a tank. Sub‑only mode, adjustable sub high‑pass, 16 Hz test tone. ∿ Subsonic → ⏚ True render, and ⚙ Settings.
- Subsonic mode — infrasound noted for the ear as a binaural beat on a carrier (or octaves ↑3), marked below hearing / felt with the true frequency.
- Transport — pause holds the sand; drag the waveform to isolate one phrase; speed 0.25–16× as tape; Space toggles play.
- Link devices — laptop controls, iPad or a second monitor displays the ghost, synchronized.
- Settings ⚙ — every knob, audio devices, ghost tuning, persistence.
- Glyph rhymes — Egyptian signs, Sanskrit lotus syllables with their petal letters, Indigenous forms, Ogham and Celtic signs (with honest dates), Chinese, runic and Greek forms matched on symmetry, with overlays.
- Guide, onboarding, key coach — this panel, also published at
/guide.
The guide reopens on this page once per version. Close it and it stays closed until the next release.
Start here
Whalesong Rosette turns whale and dolphin sound into the figure sand would make on a vibrating circular plate, then asks what that figure rhymes with.
- Start the engine. The first sperm‑whale coda model begins looping and the sand starts to move. Audio needs a tap first — browsers insist.
- Pick a source. Eight built‑in call models work anywhere. Drop a WAV from Watkins on the plate, paste a URL, stream Orcasound live, or route a hydrophone through line‑in.
- Watch the sand settle. It collects on the nodal lines of the combined plate modes. The fold tile is the rotational symmetry, rings the radial order.
- Read the resonance list. Rose windows, mandalas, yantras and girih stars ranked by geometric similarity. Tap one to lay it over the plate.
- Isolate a phrase. Drag on the waveform strip to loop just that stretch; pause to hold the figure; slow it down or speed it up.
- Draw your own. ✎ Draw by intuition: sketch inside the circle, analyse it, hear it sonified, and see which calls in the library come closest.
- Go below hearing. ∿ Subsonic finds 3–60 Hz, notes it as a binaural beat, and marks it as below hearing. ⏚ True render sends the real frequency to your subwoofer so you feel it.
- Take it to the pyramid. ◈ Pepper's ghost gives four mirrored wireframe views; ⇄ Link devices drives an iPad or a second monitor from this one.
- Tune it once. ⚙ Settings holds every knob and your audio devices; it remembers. The ? button brings this guide back; Key coach is in it.
Space bar toggles play. Esc leaves the ghost. Nothing you do here is uploaded anywhere; keys and settings stay in this browser.
Sources & archives
Every source feeds one analyser, so the plate does not care where sound comes from.
Built‑in call library
Synthesized from the published structure of each call — inter‑click intervals for codas, contour and harmonic stack for orca and humpback, FM sweep for a signature whistle. They are models, useful because they run offline and always sound the same. Blue and fin are pitched up eight times because their real calls are below the plate and below hearing; Subsonic mode is for the real recordings.
Your own recording
Open or drop any audio file. Files you ship in data/samples/ and list in its manifest appear here as buttons when the site is served.
Archives
Choose a species and the panel lists the archives that hold it, with a direct link and a note on whether a browser may fetch audio from it:
| Archive | Holds | From the browser |
| Watkins (WHOI) | ~15,000 cuts, 60+ species, 1940s on | download the WAV, then open it here |
| Orcasound | live Salish Sea hydrophones + archive | streams in place (Stream button) |
| Pacific Sound (MBARI) | continuous deep‑sea hydrophone, Monterey | open bucket — paste a file URL |
| NOAA PMEL | curated clips with spectrograms | per‑page links |
| NCEI passive acoustics | terabytes of raw sanctuary recordings | open bucket — paste a file URL |
| Macaulay Library | curated cuts | streams only in their player — route through line‑in |
| DOSITS | one reference clip per species | open web |
| Earth Species Project | ML datasets incl. a Watkins subset, NatureLM | GitHub / Hugging Face (token for gated sets) |
| Project CETI | coda annotations, no audio yet | paper repository |
| Freesound | CC crowd recordings | search and preview here with an API key (see Key coach) |
| IMOS / AAD | Southern Ocean passive acoustics | AODN portal |
A host that refuses cross‑origin audio is not a bug here — download the file and open it. The catalogue lives in data/catalogue.json; edit it and the panel follows without a rebuild.
The plate
Sprinkle sand on a plate, bow its edge, and the grains flee the moving regions and gather where the surface stands still — the nodal lines. Ernst Chladni drew these in 1787; the CymaScope at cymaticslabs.com photographs the same standing waves on water.
For a circular membrane the standing waves are known exactly. Each mode has m nodal diameters and n nodal circles, its shape is Jm(jm,n r) · cos(mθ), and its pitch rises with the square of the Bessel zero jm,n. Low modes are simple crosses and rings; high ones are fine rosettes.
The app finds the strongest peaks in the incoming spectrum, assigns each to the mode whose eigenvalue is nearest, and sums the fields with weights from the peaks' levels. Sand is a particle simulation: each grain slides down the gradient of the squared displacement with a little jitter proportional to loudness, so silence freezes it and a loud call shakes it loose.
- Sand grains — more grains draw finer lines and cost more CPU.
- Drive — how hard the plate is shaken; low drive lets delicate figures survive.
- Modes tracked — how many spectral peaks are allowed to shape the field. One mode gives a textbook Chladni figure; six gives a whale.
- Nodal lines — draws the zero set of the field directly, useful when the sand is still travelling.
The plate is idealized (a free circular membrane). A real steel plate has edge conditions that shift the pattern, and water adds surface tension. Same physics, simpler medium.
Reading the signature
Fold is the rotational symmetry of the dominant mode: 12‑fold means the figure repeats twelve times around the circle. Rings is its radial order. m = 0 modes have no diameters, only concentric rings, and are shown as "rings".
The tracked modes table lists each peak's frequency, its mode, and its weight relative to the strongest. In Subsonic mode infrasonic rows are marked in amber with the true frequency and a below hearing or felt chip.
Archetype resonance scores twenty‑one circular archetypes against the signature. Symmetry match counts for 72 %: exact fold scores full, a divisor or multiple (6 against 12) scores about half, a neighbour scores a little. Ring‑count closeness is the other 28 %. Tap an archetype to overlay its geometry on the plate.
Glyph rhymes
Below the archetypes, signs from writing systems whose form carries a rotational symmetry — matched on that symmetry and nothing else. Egyptian: 𓇳 rꜥ the sun disk (rings), 𓊖 niwt the quartered circle for "town" (4‑fold), 𓇼 sbꜣ the five‑pointed star. Sanskrit: the tantric lotuses, whose petal counts are fold numbers — Mūlādhāra 4 (लं), Svādhiṣṭhāna 6 (वं), Maṇipūra 10 (रं), Anāhata 12 (यं), Viśuddha 16 (हं), Ājñā 2 (ॐ) — each petal carrying a letter of the alphabet, after the Ṣaṭ‑cakra‑nirūpaṇa. Indigenous forms, drawn rather than typed because Unicode has no glyphs for them: the Zia sun (four rays to each direction), the Maya k'in day‑sign, the Nahua ollin at the centre of the Sun Stone, the Western Desert concentric‑circle site sign, the Māori koru, Hopi sun faces, and the Akan Adinkra Adinkrahene and Nsoromma. Chinese 日 田 米 回, the dharmacakra, the hexagram, the hail rune, theta.
Druidic? The druids left no writing, so the app says what each Celtic sign actually is: Ogham (4th–6th‑c. Irish; letters named for trees in the medieval Auraicept na nÉces — duir the oak shares its root with "druid"), matched by stroke count, one to five, against the fold; the triple spiral of Newgrange (c. 3200 BCE, two millennia before any druid); the triquetra and ringed cross of the Insular period; and the Awen /|\ of the Druid revival (Iolo Morganwg, 1792), which modern orders use. Each card carries its date.
Some of these are living sacred signs. The Zia Pueblo asks that its sun not be used commercially without permission; the app shows it as a form and says so on the card. Meanings given are the communities' own published ones, kept short.
Tap a glyph to lay it on the plate. A lotus also writes its petal letters around the rim at its own fold, so a twelve‑fold whale figure wears the twelve Anāhata letters — anāhata, "the unstruck sound", being the tradition's own word for a tone with no source. That is a rhyme, not a reading: the plate knows symmetry orders, not meanings.
The archetypes are drawn procedurally from their symmetry, not copied from photographs: a twelve‑petal rose with three tiers stands for Chartres, nine interlocking triangles for the Sri Yantra, eleven broken circuits for the labyrinth.
Drawing & sonify
✎ Draw by intuition flips the plate into a canvas. Sketch anything inside the circle — a window you remember, a figure from a dream, a doodle. Analyze drawing samples it on 28 rings, runs a Fourier transform around each ring to find its rotational symmetry, counts ridges along the radius for its ring order, and builds a signature from the strongest components.
The sand then settles into that signature without any audio, the archetype list re‑ranks, and a second list shows the nearest calls in the library — which whale would have drawn what you drew. Tap one to hear it.
♪ Sonify plays the drawing: each mode's eigenvalue is mapped back to a frequency and sounded as a sine for a few seconds. A four‑fold drawing sounds lower than a sixteen‑fold one, because on a plate it is.
Transport & speed
The strip under the plate is the loaded clip. The amber band is the loop region.
- Drag across the strip to isolate one phrase — one coda, one moan — and loop only that. Double‑click to return to the whole clip. Click to seek.
- ❚❚ pauses. A paused plate is a still plate: the sand holds where it is so you can read or photograph the figure. Space does the same.
- Speed is a tape transport — pitch follows rate. ½× lets a fast dolphin whistle be heard as contour; 8× lifts a 16 Hz blue‑whale call to 128 Hz. The readout shows semitones.
- Loop off plays the region once and stops.
- Monitor mic lets you hear a microphone or line‑in source; it is muted by default to stop feedback. Use headphones.
Streams (URL, Orcasound) support pause and speed but not region looping — there is no clip to scrub. Speed and loop are also in ⚙ Settings, where they persist.
Subsonic
A blue whale's B call sits near 16 Hz; a fin whale pulses at 20 Hz. Human hearing gives out around 20 Hz, and no laptop or tablet speaker goes anywhere near it. Open such a recording and you will see the plate move and hear nothing — which is correct, and unsatisfying.
∿ Subsonic adds a second analyser with a long window (32,768 points, about 1.5 Hz resolution) watching 3–60 Hz. Each infrasonic peak it finds:
- becomes a plate mode, so the figure is shaped by the whale's real fundamental;
- is noted for the ear, by one of two human approximations;
- is marked everywhere as below hearing (under 20 Hz) or felt (20–60 Hz), with its true frequency shown.
Binaural beat (headphones)
The left ear receives a carrier tone (default 200 Hz); the right ear receives the carrier plus the true sub‑frequency. The brain perceives the difference as a beat — so the pulse you feel is the whale's own 16 Hz. The second and third peaks ride carriers a fifth and an octave above. Nothing is transposed; the rate is real. Needs headphones, since the two ears must hear different tones.
Octaves ↑3
Each peak is played eight times higher as a sine. Pitch relations between peaks are kept; rates are eight times too fast. Works on speakers.
True render
Proxies are for the ear. To feel the real frequency, turn on ⏚ True render under the proxy row: the unshifted infrasound goes to the main output, where your subwoofer takes it. True render & rigs in this guide has the subwoofer checklist and the specs for plates, DC‑coupled interfaces and tanks.
The ×8 library models are already audible, so Subsonic finds little in them beyond pulse‑rate sidebands. It is for the real recordings: Pacific Sound, NCEI, a Watkins blue‑whale cut. Keep speed at 1× when the sub is doing the work.
Pepper's ghost & linking
Pepper's ghost is the Victorian stage illusion: a bright image reflected in an angled sheet of glass appears to float in the dark behind it. A four‑sided clear pyramid on a flat tablet does the same in four directions at once.
◈ Pepper's ghost turns the plate field into a slowly turning wireframe relief drawn four times around a black centre, each copy mirrored and rotated so its reflection stands upright on its face of the pyramid. Loud calls raise the relief. The ground is pure black, which on an OLED means the pixels are simply off.
Linking two devices
⇄ Link devices makes one device the controller — sources, transport, sliders — and any number of others displays. What travels is the plate's mode signature, a few dozen bytes about twelve times a second; displays run their own sand and need no audio.
- Same computer, second monitor: press Open a display window, drag it to the other screen, press F11. It links through a broadcast channel — no network at all.
- iPad or another computer: open
/?ghost=CODE there, or type the code after tapping ⇄ on that device and choose displays. The link is WebRTC peer‑to‑peer; the public PeerJS cloud only introduces the two devices.
Spin, tilt, view size, mirror and grain brightness are in ⚙ Settings → Pepper's ghost and persist per browser — tune them on the display device.
Build the pyramid from acetate or thin acrylic with faces at about 45°; a 6 cm base suits an iPad mini, 10 cm a full iPad. Dim the room. If the reflections look mirrored, tell me and the four views flip in one line.
True render & rigs
Proxies let you hear a 16 Hz call. A true render lets you feel it. ⏚ True render sends the actual infrasonic frequencies — unshifted — to a second output, for whatever can move at that speed.
How the signal is made
- Clean sines at detected peaks — up to three oscillators at the true frequencies the subsonic analyser found, levelled by their strength. Best for shakers and plates: pure tones make pure Chladni figures.
- Recording, low‑passed below 60 Hz — the actual audio through a 4th‑order low‑pass, so a blue whale's B call arrives with its own envelope and its harmonics. Best for subwoofers and tanks.
- Either way the rig gets a high‑pass set by the rig profile (0 Hz for a DC‑coupled interface), a brick‑wall limiter, then the level control. The main monitor still carries the binaural or octave proxy; the rig gets the truth.
- Output routing needs a browser that can pick a device per element (Chrome, Edge, Chromium). Safari sends everything to the system default — there, set the rig's interface as the system output and use headphones on the interface's second pair for the proxy.
Rig 1 — a plate that vibrates at the whale's frequency
A real Chladni plate at 16 Hz is a tactile‑transducer job, not a loudspeaker job. Ranges below are from the makers' datasheets; check the current sheet before buying.
| Part | Spec that matters | Examples |
| Tactile transducer | rated response reaching 5–10 Hz; force, not SPL | ButtKicker LFE (5–200 Hz, 400–1500 W amp), ButtKicker Mini Concert (5–200 Hz), Dayton Audio BST‑1 (≈5–150 Hz, 50 W), Clark Synthesis TST429 (≈5 Hz–17 kHz) |
| Plate | aluminium 1.5–3 mm or acrylic 3 mm, 300–500 mm round; centre‑mounted on the transducer stud, edge free | a free edge gives the Bessel modes this app assumes; clamp the edge and the figure changes |
| Amplifier | stable into the transducer's impedance, flat to ≤ 5 Hz, DC‑safe | ButtKicker BKA300 / BKA1000, or a sub plate amp with its high‑pass defeated |
| Interface / DAC | most audio interfaces are AC‑coupled and roll off around 5–10 Hz — fine for 16–20 Hz, not for 3 Hz | any interface for 15 Hz and up; Expert Sleepers ES‑9 (DC‑coupled) for the full range |
| Sand | fine, dry, light: table salt, semolina, or 0.3–0.5 mm sand; avoid dust | a raised rim (tape) keeps it on the plate at high drive |
Scale: a 16 Hz figure on a 400 mm free plate is a very low mode — expect one or two nodal circles, not a rosette. The rosettes belong to the kilohertz calls, which any small full‑range driver can excite on a plate. Two rigs make the whole range: a shaker for the baleen whales, a small speaker under a thin plate for the dolphins.
Rig 2 — a subwoofer on the main output (the default)
With a sub in the system nothing extra is needed: the true‑render chain joins the main output and the system crossover sends everything under ~80 Hz to the sub. Setup, once:
- On the receiver or the sub's plate amp: crossover 80 Hz (or LFE), phase 0°, and if there is a subsonic filter set it to its lowest (10–15 Hz) — this is the switch that usually hides the whales.
- In the app: ∿ Subsonic on → ⏚ True render on, route main output, signal recording < 60 Hz, level 50 %. Press 16 Hz test: the cone should move visibly and slowly; you should feel it rather than hear it.
- Sealed box: lower the sub high‑pass to 10 Hz in ⚙ Settings. Ported box: leave it at 15 Hz or higher than the port tuning — below tuning the driver unloads.
- Tick sub only to mute the binaural/octave proxies and feel the call bare; untick to hear and feel together (the beat on headphones, the pressure from the sub).
- Level: to where the chest feels it, no further. Infrasound is uncomfortable (pressure, queasiness) long before it is harmful, and long exposure at high level is not worth it.
Speed still applies: at 1× the sub gets the whale's real 16 Hz; at 8× the call moves up into the proxy range and the sub goes quiet. Keep 1× for the true render.
Rig 3 — DC‑coupled interface (your ES‑9 plan)
The ES‑9's outputs pass DC, so the app's true render can drive it to 0 Hz with the high‑pass off. From there: a CV‑able bass shaker amp, an Eurorack VCA into a transducer amp, or straight into a modular patch where the whale's 16 Hz becomes a clock or an LFO. That is the most interesting place this signal can go.
Rig 4 — underwater, in a tank
| Projector | Approximate range | Note |
| Lubell LL916 / LL9162T | ≈ 200 Hz – 23 kHz | pool speakers; no infrasound |
| Electro‑Voice UW30 | ≈ 100 Hz – 10 kHz | the classic; dolphin whistles yes, baleen no |
| Clark Synthesis AQ339 Diluvio | ≈ 20 Hz – 17 kHz | a tactile transducer in a housing — the one consumer unit that reaches the fin‑whale band |
| Navy‑type J‑9 / J‑11 projectors | ≈ 40 Hz / ≈ 20 Hz upward | research gear, heavy, costly |
The low‑frequency limit is physics: to radiate 16 Hz in water you need to move a lot of water, and a tank shorter than a wavelength (≈ 90 m at 16 Hz) does not support the wave at all — you get pressure oscillation, which a hydrophone still reads. For demonstration that is enough: hydrophone in the tank, its output back into this app, and the plate shows the round trip.
Never in open water. Playing cetacean calls into the sea is playback harassment under the U.S. Marine Mammal Protection Act and similar law elsewhere, and can draw animals toward boats. Tanks, pools and plates only.
Recorded here for future implementation
- Rig profiles, output device, signal type and level persist in ⚙ Settings → True render.
- The 16 Hz test tone is a 3 s ramped sine into the same chain, for wiring checks.
- Planned: per‑rig calibration (measure the plate's response with the mic and pre‑emphasise), a CV/gate output mode for the ES‑9, and a hydrophone round‑trip view.
Key coach
Most of this tool needs no key at all — the plate, subsonic, true render, the subwoofer, device links and the open archives all work without one. Three things do, and each one lives somewhere different. Keys you paste here stay in this browser's local storage and never enter the site folder or the zip.
Coaching order: start with none. Add Freesound only when you want to search recordings from inside the app; Hugging Face only for a gated dataset; Cloudflare only if you deploy from a machine that cannot open a browser for wrangler login. ⚙ Settings → Keys shows which are stored.
Rules of the road
- A key in
site/ is a key on the internet. The deploy script's FORBIDDEN list refuses .env and .dev.vars for that reason.
- Browser‑side keys (Freesound, Hugging Face read tokens) are visible to anyone who opens your page's dev tools. Use the least‑privileged scope, and revoke and re‑issue if you ever paste one into a shared screen.
- Deploy keys (Cloudflare) belong in your shell, never in a page.
deploy.sh reads them from the environment.
- Rotate a key whenever it has been in a screenshot, a chat, or a commit.
Deploy
The package is a deploy kit: deploy.sh (never edited), deploy.conf (this project's settings), DEPLOYMENT.md (why the script is paranoid), and site/ — exactly what goes live.
unzip v00.02.01_WhalesongRosette.zip && cd v00.02.01_WhalesongRosette
./deploy.sh --check # validate, publish nothing
./deploy.sh # publish to production, verify over the wire
./deploy.sh --verify # what is live right now?
First time: npx wrangler login, then npx wrangler pages project create whalesong-rosette --production-branch whalesong-rosette, then add whalesongrosette.org under Custom domains.
The script treats wrangler's "Success" as a claim: it cd's into site/ so the wrong folder cannot be published, refuses a stale build unless the APP_VERSION marker is present, pins the production branch, then curls the live domain for the marker.
Release checklist
- Edit
site/index.html; bump APP_VERSION.
- Bump
CACHE in site/sw.js to match, or returning visitors keep the old app.
- Update the version markers in
deploy.conf.
./deploy.sh --check, then ./deploy.sh.
Served over https the site gains Orcasound, bucket fetches, microphone on iOS, offline caching and Add to Home Screen. From file:// the models, file drop, drawing and the ghost still work.
What this is not
It is not a translator, and the archetype match is not evidence of meaning. A sperm‑whale coda that settles into a twelve‑fold rosette is not "saying" Chartres. What the plate shows is that a click rhythm and a Gothic mason arrive at the same small family of symmetries, because both are constrained by the same mathematics of a circle. That is interesting on its own terms.
The real decoding work — Project CETI's coda alphabet, DolphinGemma, NatureLM‑audio — is about grounding: pairing sound with who made it, to whom, doing what. This tool has no context channel at all. Use it as an instrument for looking, and as a reason to go listen to the recordings themselves.
The call models are synthesized approximations, labelled as such. Direct‑file URL patterns in the catalogue were compiled from each archive's documentation and are flagged verify until you confirm one. Subsonic proxies are human approximations of things humans cannot hear, and the app says so on every row.