Questing · 2026-06-26 · Physics Visualization · General Relativity · Zero Dependencies

CHIRP

Two massive objects orbit each other, losing energy to gravitational radiation. Watch the waves ripple outward through spacetime — from slow whisper to frantic roar — until the moment of merger.

Open Chirp →

What is Chirp?

Chirp is a real-time gravitational wave visualizer running entirely in your browser — no backend, no libraries, no text input. Two massive objects (black holes, neutron stars — the physics is the same) follow a binary inspiral governed by the Peters radiation-reaction equation. At every canvas pixel the gravitational wave strain is computed from the quadrupole formula and mapped to color: amber for regions of spacetime being compressed, cool blue for regions being stretched. The pattern has four rotating arms — the signature of quadrupole radiation — and the rings propagate outward like ripples on a pond. As the orbit shrinks, the frequency rises and the rings get denser, producing the distinctive chirp signal that LIGO detected on September 14, 2015 in the first-ever direct detection of gravitational waves.

The Physics — Quadrupole Radiation

In general relativity, a system whose mass distribution changes in time radiates gravitational waves. The dominant contribution comes from the second time derivative of the mass quadrupole moment. For a circular binary with reduced mass μ and semi-major axis a, the gravitational wave strain h at distance r and angular position θ in the orbital plane is:

h(r, θ, t) = A/r × cos(Φ_gw(t) − 2θ − k·r)

where:
  Φ_gw = 2 × ∫Ω(t) dt    — accumulated GW phase (twice orbital phase)
  k    = 2Ω / c_light     — GW wavenumber (rad / length)
  A    ∝ μ × (G/c²) × Ω² — strain amplitude (scales with frequency²)

The cos(−2θ) factor creates a pattern with period π in angle — two full oscillations as you go around the source — producing four rotating arms: two amber compression lobes and two blue tension lobes, rotating at the orbital angular velocity Ω. The cos(−k·r) factor adds the outward-traveling wave: concentric rings that move away from the source at the speed of light (set visually to 0.8 px/frame here). Together they produce the characteristic quadrupole radiation pattern of a binary system.

The Chirp — Peters Inspiral

Gravitational wave emission carries energy away from the binary. The orbit shrinks accordingly. Philip Peters derived the inspiral equation in 1964:

da/dt = −(64/5) × G³μM² / (c⁵ a³)

For a circular orbit this gives:
  a(t)  = a₀ × (1 − t/T_merge)^{1/4}
  Ω(t)  = Ω₀ × (a₀/a)^{3/2}   (Kepler)
       = Ω₀ × (1 − t/T_merge)^{−3/8}

As t → T_merge: Ω → ∞  — the frequency diverges.

This Ω → ∞ divergence is the chirp. The gravitational wave frequency rises from a gentle oscillation to a frantic roar as the separation collapses, ending in a merger flash. In Chirp, this runs over about 22 seconds at 60 fps — a compressed but physically accurate trajectory from 0.36 Hz (initial) to ~3 Hz near merger, with the wavelength pattern going from 2–3 visible rings to 16+ rings across the canvas.

The LIGO Connection

On September 14, 2015, the Laser Interferometer Gravitational-Wave Observatory detected a gravitational wave signal from two black holes merging 1.3 billion light-years away. The signal — lasting 0.2 seconds, sweeping from 35 Hz to 250 Hz — was immediately recognizable: a chirp. Scientists listening to it on headphones heard a brief upward glissando, a sound like a quiet whoop, a bird call from a billion years ago. It was the first direct confirmation of gravitational waves predicted by Einstein in 1916 and the first observation of a binary black hole merger. The event was named GW150914.

Chirp visualizes the same mathematics — the quadrupole formula, the Peters inspiral — at a vastly scaled-up size and slowed-down time. Instead of 35–250 Hz over 0.2 seconds, it runs at 0.36–3 Hz over 22 seconds, letting you watch the wave pattern evolve in real time and see what LIGO's 4-kilometre arms are measuring: the alternating compression and stretching of space itself.

Technical Implementation

The key challenge: computing the wave strain at all 360,000 pixels of a 600×600 canvas at 60 fps without a GPU. The solution is precomputation. Before the animation starts, r and are computed once for every pixel and stored in two Float32Array lookup tables. Each frame then needs only one Math.cos() call per pixel — no sqrt, no atan2. The total per-frame cost is roughly 2M operations: comfortably within 60 fps on any modern device, and around 20 fps on a budget phone.

// One-time precomputation (W×H iterations)
pixR[i]   = Math.sqrt(dx*dx + dy*dy);
pix2Th[i] = 2 * Math.atan2(dy, dx);

// Per-frame per-pixel (trivially vectorisable)
const h = Math.cos(gwPhase − pix2Th[i] − k * pixR[i]) * amp / rNorm;

Color mapping is direct: positive h (compression) maps to amber (R proportional to h, G = 0.51×h, B near zero); negative (tension) maps to blue-violet (B proportional to |h|, G = 0.35×|h|, R near zero). The stars themselves are drawn on top with radial-gradient glows, their orbital angle recovered from gwPhase/2 each frame. Total: 200 lines of vanilla JS, zero dependencies, zero backend.

Controls

  • Watch passively — the binary inspiral runs automatically from start to merger (~22 s) and resets.
  • Click anywhere (or tap on mobile) to restart the inspiral from the beginning.
  • Lower-left HUD shows the current gravitational wave frequency, orbital separation, and relative strain amplitude.
  • The amber bar bottom-right tracks time to merger. Watch the GW frequency readout climb as the bar fills.
  • The merger flash at the end represents the ringdown — the brief burst of intense radiation as the merged object settles.

Why It's Different

Chirp is the first Questing toy to visualize relativistic physics rather than Newtonian gravity — the physics is spacetime curvature, not orbital mechanics. Unlike Sling (which modelled probe trajectories under Newtonian N-body gravity), Chirp renders the wave field itself: every pixel carries information about how far space is being stretched or compressed at that point. The quadrupole angular pattern — four arms rotating with the binary — is not imposed by the code; it falls out of the cos(Φ − 2θ − kr) formula directly. Zero text input: the only parameter is time.

Open Chirp →