Questing · 2026-06-14 · Physics · Zero dependencies
NODI
Type any word. Nodi maps it to two vibration mode numbers and renders the Chladni nodal pattern — the precise symmetrical lines where sand would settle on a resonating plate at that frequency. Same word, same resonance, always.
Open Nodi →What is Nodi?
Nodi (from Latin nodus, knot or node) is a browser-based Chladni figure generator that uses text as its input. Type any word — up to 20 characters — and Nodi runs an FNV-32a hash of the lowercase text, extracting two integers m and n from different bit ranges of the digest. Those become the mode numbers of a two-dimensional standing wave on a square plate: the Chladni degenerate-mode formula
W(x, y) = sin(m·π·x)·sin(n·π·y) + sin(n·π·x)·sin(m·π·y)
is evaluated on a 256 × 256 computation grid. Where W ≈ 0, a Gaussian glow illuminates the canvas with cool silver-blue light — those are the nodal lines, the places where sand would physically accumulate. Anti-nodal regions (maximum displacement) receive a subtle tint: violet for positive displacement, teal for negative. A gentle 7-second shimmer cycle animates the brightness, evoking a plate that has not yet finished vibrating.
The Physics — Ernst Chladni, 1787
In 1787, the German physicist Ernst Florens Friedrich Chladni published Entdeckungen über die Theorie des Klanges (Discoveries on the Theory of Sound), describing an experiment that would captivate scientists for centuries. He bowed a metal plate along its edge with a violin bow and sprinkled fine sand across its surface. At specific frequencies — the plate’s natural resonances — the sand migrated to the still points and formed elaborate symmetric figures. Those still points, the nodal lines, are where the plate does not vibrate; the sand, unable to cling to the violently moving anti-nodal regions, drifts there by vibration and stays.
Napoleon Bonaparte witnessed a demonstration in 1809 and was so impressed that he awarded Chladni 6,000 francs to translate his treatise into French and to continue his research. The figures are now understood through the mathematics of partial differential equations: for a square plate with simply-supported boundary conditions, the resonant mode shapes are products of sinusoids in x and y. Two modes with different frequencies can couple when the plate geometry introduces degeneracy — their superposition produces the intricate star-and-ring patterns Chladni observed.
How to Use Nodi
- Open slayerblade.site/q/nodi/ — the word “resonance” loads by default.
- Type any word of up to 20 characters and press Enter. The canvas fades out, recomputes, and fades back in with your word’s unique Chladni pattern.
- Read the mode display below the input: m controls one family of nodal lines; n controls the other. Different words map to different (m, n) pairs.
- Try words with the same letters in different order — they hash differently and produce entirely distinct figures.
- Copy the URL to share the exact pattern. The word is encoded in the URL fragment; the same word always yields the same resonance.
Technical Notes
Nodi is a single 6 KB static HTML file with no external JavaScript dependencies. Rendering uses a 256 × 256 computation grid with pre-built sinusoid lookup tables — one array for sin(m·π·t) and one for sin(n·π·t), each of length 256 — so the inner loop requires only two array lookups, two multiplications, and one addition per pixel. The result is written into an ImageData buffer, uploaded to an OffscreenCanvas, then drawn scaled and centered onto the main canvas via drawImage() with bicubic-quality browser interpolation.
| Parameter | Value | Effect |
|---|---|---|
Grid | 256 × 256 | Computation resolution; scaled via bicubic interpolation to fill display |
m range | [2, 7] | Number of nodal lines in one direction (2 = simplest, 7 = densest) |
n range | [2, 7] | Number of nodal lines in the other direction, always ≠ m |
σ² | 0.013 | Gaussian line-width variance; narrower = sharper nodal lines |
Shimmer | ±7%, 7 s | Ambient brightness oscillation period |
Hash | FNV-32a | Non-cryptographic; fast, low-collision, deterministic across all platforms |
Mode numbers m and n are drawn from different byte-ranges of the FNV-32a digest of the lowercase input, each mapped to the range [2, 7] via modulo. When m equals n, the formula collapses to a regular grid of equal rectangles — visually boring — so a deterministic increment resolves any collision. The full URL fragment encodes the word; copying the URL shares the exact pattern.