← DEVLOG
Interactive2025.12.235 min read

Space Soundscape — Synthesizing the Sounds of Space

An ambient experience synthesizing 8 cosmic phenomena into freely mixable sound layers — Web Audio 8-channel synthesis, reactive Canvas visuals

web-audiocanvasambientsoundscapenoise-synthesis

The Starting Point — Is Space Really Silent?

Space is a vacuum, so there is no sound. At least, that's what physics tells us.

But when NASA released audio data from a black hole, converted to audible frequencies, people were deeply captivated. The B♭ fifty-seven octaves below middle C from the Perseus cluster black hole — a frequency no instrument can play — sounded hauntingly beautiful once translated.

This page began with that curiosity. If cosmic phenomena could make sound, what would they sound like? And what if you could freely mix them together?


Eight Layers

Each layer translates a cosmic phenomenon into sound. Every sound is synthesized purely with Web Audio API — no external samples.

LayerSound SourceRepresents
Pulsarsine 440Hz, short burstsNeutron star radio pulses
Solar WindPink noise + BPF 500Hz + LFO 0.02HzSolar particle stream
Black Holesine 35Hz + 50.3Hz, LPF 150HzEvent horizon low-frequency rumble
Nebulasine 220/221.5/330HzGas cloud harmonics
Gravity Wavesine chirp 35→260Hz (3s)LIGO-detected frequency sweep
MagnetosphereWhite noise burst + BPF + random scheduleEarth's magnetic field disturbance
CMBWhite noise LPF 200HzEcho of the Big Bang
Spacecraftsawtooth 60Hz + pink noise LPF 300HzCabin engine hum

Playing 35Hz and 50.3Hz simultaneously produces 15.3Hz beating. This infrasonic pulsation evokes the spacetime distortion near an event horizon.

// Black hole: interference between two close low frequencies
_blackHoleOsc1 = ctx.createOscillator();
_blackHoleOsc1.frequency.value = 35; // ~B0

_blackHoleOsc2 = ctx.createOscillator();
_blackHoleOsc2.frequency.value = 50.3; // ~A♭1 (15.3Hz beating)

const lpf = ctx.createBiquadFilter();
lpf.frequency.value = 150; // low-pass only

The Gravity Wave Chirp

The most dramatic feature of LIGO-detected gravitational waves is the rising frequency. As two black holes spiral closer, their orbital speed increases, and the gravitational wave frequency rises with it. This is called a "chirp."

function scheduleChirp() {
  const dur = 3.0;
  osc.frequency.setValueAtTime(35, now);
  osc.frequency.exponentialRampToValueAtTime(260, now + dur);

  env.gain.setValueAtTime(0, now);
  env.gain.linearRampToValueAtTime(0.3, now + dur * 0.7);
  env.gain.linearRampToValueAtTime(0, now + dur);
  // Repeats every 8–15 seconds
}

A sweep from 35Hz to 260Hz over three seconds. Volume peaks at 70% and fades away. It represents the time compression of the moment two black holes merge.


Presets — Four Universes

You can adjust all eight sliders manually, or switch moods instantly with four presets.

  • Deep Space — Black hole and nebula dominant. Deep, quiet void.
  • Orbit — Spacecraft and magnetosphere dominant. Inside a cabin in orbit.
  • Storm — Solar wind and magnetosphere emphasized. Violent space weather.
  • Zen — Nebula pad dominant. Gentle meditation backdrop.

Each preset is just a combination of eight volume values, yet the character of the space changes completely depending on which layers are emphasized.


Drift — Organic Change

After selecting a preset, the sound stays fixed. But nothing in actual space is static. Drift mode applies an independent slow LFO to each layer, gradually shifting volumes over time.

// Drift: each layer modulated at a different period
const DRIFT_PERIODS = [23, 31, 37, 29, 19, 41, 47, 33]; // seconds
const DRIFT_AMPLITUDE = 0.15;

const lfo = Math.sin((now * Math.PI * 2) / DRIFT_PERIODS[i]) * DRIFT_AMPLITUDE;
driftedVolume = Math.max(0, Math.min(1, baseVolume + lfo));

23, 31, 37 seconds — all prime numbers. Using prime-number periods means the LFO phases rarely align, producing endlessly novel combinations without repeating patterns.


Sound You Can See

Each of the eight layers has a corresponding visual that reacts in real time. Raise a volume and the visual intensifies; lower it and it fades.

Pulsar: radial flashes from the center. Solar wind: particle streams flowing left to right. Black hole: light bending around a dark center.

function drawSoundscapeScene(ctx, cw, ch, volumes, tick) {
  ctx.drawImage(ensureStars(cw, ch), 0, 0); // Star field
  drawCMB(ctx, cw, ch, volumes[6]); // CMB noise
  drawNebula(ctx, cw, ch, volumes[3], min); // Nebula glow
  drawBlackHole(ctx, cw, ch, volumes[2], tick); // Black hole
  drawSolarWind(ctx, cw, ch, volumes[1], tick); // Solar wind
  drawPulsar(ctx, cw, ch, volumes[0], tick); // Pulsar
  // ...
}

These aren't sound visualizations — they're the same phenomena expressed through a different sense. One volume slider controls both hearing and sight simultaneously.


Closing Thoughts

Space is silent. But silence doesn't mean nothing is happening.

Pulsars rotate hundreds of times per second. Gas near black holes moves close to the speed of light. The afterglow of the Big Bang still permeates the entire universe. It simply doesn't reach our ears.

This page is an attempt to pull those unreachable things into audible frequencies and place them in a single space. When you layer nebula harmonics over black hole rumble, with gravitational wave chirps in the background — you begin to imagine how noisy space actually is.

Move the sliders. Build your own universe.

Content related to this post

Try it yourself