Overview
Mapping & \(C_\ell\)
CMB
tSZ
CIB
kSZ
Total
Synthesis
Controls
Sky Explorer
Reproducibility

How it works

Turning the multi-probe microwave sky from the HalfDome simulations into sound and an explorable map — component by component, with the math.

In cosmology the angular power spectrum \(C_\ell\) is the central summary statistic: it measures how much structure the sky has at each angular scale, indexed by the multipole \(\ell\) (roughly an inverse angle, \(\theta\approx 180^\circ/\ell\)). The analogy to audio is exact — the power spectrum of a sound is what gives it its timbre — so mapping \(C_\ell\) to an audible spectrum makes the same mathematical object perceptible to the ear. Large angular scales (small \(\ell\)) become low pitches; fine scales (large \(\ell\)) become treble.

The sky is a sum of physically distinct components, each with its own spectrum, frequency behaviour, and spatial texture:

Use the tabs above for the mapping and each component in detail. Then try the Sonifier (hear the spectra) and the Sky Explorer (scan the sky).

From the sky to a spectrum

A scalar field on the sphere (a temperature map) is expanded in spherical harmonics \(Y_{\ell m}\):

\[ \Delta T(\hat n)=\sum_{\ell=0}^{\infty}\sum_{m=-\ell}^{\ell} a_{\ell m}\,Y_{\ell m}(\hat n),\qquad a_{\ell m}=\int \Delta T(\hat n)\,Y_{\ell m}^{*}(\hat n)\,d\Omega. \]

Statistical isotropy means all the two-point information lives in the angular power spectrum

\[ C_\ell=\frac{1}{2\ell+1}\sum_{m=-\ell}^{\ell}\bigl|a_{\ell m}\bigr|^2,\qquad D_\ell\equiv\frac{\ell(\ell+1)}{2\pi}\,C_\ell, \]

where \(D_\ell\) is the conventionally plotted quantity (roughly the variance per logarithmic interval in \(\ell\)). Maps here are computed to \(\ell_{\max}=9000\) with a \(2'\) beam.

Multipole → pitch

We map \(\ell\) to audio frequency \(f\) on a log–log line, which respects the (logarithmic) human perception of pitch:

\[ \log_{10} f=\log_{10} f_{\min}+\frac{\log_{10}(\ell/\ell_{\min})}{\log_{10}(\ell_{\max}/\ell_{\min})}\,\log_{10}\!\frac{f_{\max}}{f_{\min}}, \]

with \(\ell_{\min}=2,\ \ell_{\max}=6000,\ f_{\min}=40\,\mathrm{Hz},\ f_{\max}=8\,\mathrm{kHz}\). Under this map the CMB first acoustic peak \((\ell\!\approx\!220)\) lands near middle C, the tSZ peak \((\ell\!\approx\!2000)\) near \(2.7\,\)kHz, and the CIB peak \((\ell\!\approx\!5000)\) near \(6.8\,\)kHz. Loudness tracks \(\sqrt{D_\ell}\) (amplitude \(=\sqrt{\text{power}}\)), with a single global normalization so real amplitude variations survive (per-buffer normalization would flatten them).

CMB Lensed cosmic microwave background

Before recombination \((z\!\approx\!1100)\) the universe was an ionized photon–baryon plasma. Gravity pulled fluid into dark-matter potential wells; radiation pressure pushed back. The result is acoustic oscillations: standing sound waves whose snapshot at last scattering imprints a series of harmonic peaks in \(C_\ell\).

The peak positions are set by the sound horizon \(r_s\) projected through the angular-diameter distance \(D_A\) to last scattering,

\[ \theta_s=\frac{r_s(z_*)}{D_A(z_*)},\qquad \ell_{\rm peak}\approx n\,\frac{\pi}{\theta_s}\ \ (n=1,2,\dots), \]

giving the first peak near \(\ell\approx220\) and overtones near \(\ell\approx540,810,\dots\) On small scales photon diffusion (Silk damping) suppresses power, so \(D_\ell\) falls beyond \(\ell\sim1500\).

Gravitational lensing

Intervening large-scale structure deflects CMB photons by \(\nabla\phi\) (the lensing potential), remapping the observed temperature:

\[ \widetilde{T}(\hat n)=T\!\bigl(\hat n+\nabla\phi(\hat n)\bigr)\approx T(\hat n)+\nabla\phi\cdot\nabla T+\tfrac12\nabla_i\phi\,\nabla_j\phi\,\nabla_i\nabla_j T+\cdots \]

Lensing slightly smooths the acoustic peaks, transfers power to small scales, and makes the field mildly non-Gaussian. These are the dT_cmblens maps.

Spectrum: blackbody. In thermodynamic temperature units \(\Delta T\) is independent of observing frequency — so the CMB sounds and looks identical in every band, and is stored once.

tSZ Thermal Sunyaev–Zel'dovich effect

CMB photons passing through the hot \((T_e\sim10^{7\text{–}8}\,\mathrm{K})\) electron gas in galaxy clusters get inverse-Compton up-scattered. The strength along a line of sight is the dimensionless Compton-\(y\) parameter:

\[ y=\int \frac{k_B T_e}{m_e c^2}\,n_e\,\sigma_T\,d\ell, \]

with \(n_e\) the electron density and \(\sigma_T\) the Thomson cross-section. The resulting temperature change has a distinctive frequency dependence:

\[ \frac{\Delta T(\nu)}{T_{\rm CMB}}=g(x)\,y,\qquad g(x)=x\coth\!\frac{x}{2}-4=x\,\frac{e^{x}+1}{e^{x}-1}-4, \] \[ x\equiv\frac{h\nu}{k_B T_{\rm CMB}}=\frac{\nu}{56.8\,\mathrm{GHz}}. \]

So \(g(x)<0\) (a decrement) below \(\sim\!217\,\)GHz, passes through zero at \(x\approx3.83\) (\(\nu\approx217\,\)GHz), and becomes an increment above. This is exactly why, in the tools, tSZ nearly vanishes at the 225 GHz band and returns by 353 GHz.

The tSZ power spectrum is dominated by the most massive clusters (a Poisson "one-halo" term), peaking around \(\ell\sim2000\text{–}3000\); its amplitude is steeply sensitive to \(\sigma_8\) and cluster physics. These are the dT_tsz maps, built from a Compton-\(y\) map times \(g(x)\,T_{\rm CMB}\).

CIB Cosmic infrared background

Roughly half of all starlight ever emitted was absorbed by dust and re-radiated in the infrared. Integrated over cosmic history, that dust glow from star-forming galaxies is the CIB. A single galaxy radiates as a modified blackbody (greybody):

\[ S_\nu \propto \nu^{\beta}\,B_\nu(T_d),\qquad B_\nu(T_d)=\frac{2h\nu^3}{c^2}\frac{1}{e^{h\nu/k_BT_d}-1}, \]

with emissivity index \(\beta\approx1.5\text{–}2\) and dust temperature \(T_d\approx20\text{–}40\,\)K. Summed over redshift the CIB rises steeply toward higher (sub-mm) frequencies — which is why it is faint at 93 GHz but dominates by 353 GHz.

Its anisotropy spectrum has two parts: galaxy clustering (a 2-halo term, important at low \(\ell\)) plus shot noise from discrete sources (Poisson, flat in \(C_\ell\), so \(D_\ell\propto\ell^2\) at high \(\ell\)). The net \(D_\ell\) keeps climbing to small scales.

Intensity → temperature

To put the CIB on the same thermodynamic-temperature footing as the CMB, an intensity fluctuation \(\Delta I_\nu\) is divided by the CMB's brightness–temperature derivative:

\[ \frac{dB_\nu}{dT}\bigg|_{T_{\rm CMB}}=\frac{2k_B\nu^2}{c^2}\,\frac{x^2e^{x}}{(e^{x}-1)^2},\qquad \Delta T=\frac{\Delta I_\nu}{dB_\nu/dT}. \]

These are the dT_cib maps (one per band, since the conversion and SED depend on \(\nu\)).

kSZ Kinetic Sunyaev–Zel'dovich effect

If the scattering electrons have a bulk peculiar velocity \(\mathbf v\) along the line of sight, the scattered CMB is Doppler-shifted. Unlike tSZ this is a simple shift of the blackbody, so it is frequency-independent:

\[ \frac{\Delta T}{T_{\rm CMB}}=-\int \frac{\mathbf v\cdot\hat n}{c}\,n_e\,\sigma_T\,d\ell=-\int \frac{\mathbf v\cdot\hat n}{c}\,d\tau, \]

with optical depth element \(d\tau=n_e\sigma_T\,d\ell\). Because it is sourced by the product of density and velocity (the momentum field), and gets contributions from both reionization and late times, the kSZ is small (\(\sim\mu\)K), peaks at high \(\ell\), and is hard to isolate. It is stored once (frequency-independent) as dT_ksz.

In the tools kSZ is a faint voice/colour by design — that is physically honest, not a bug.

Total The combined sky

At a given band the observed temperature is the sum

\[ T_{\rm tot}(\nu)=\Delta T_{\rm CMB}+\Delta T_{\rm tSZ}(\nu)+\Delta T_{\rm CIB}(\nu). \]

Because the spherical-harmonic transform is linear, the total coefficients are just the sum of the components',

\[ a_{\ell m}^{\rm tot}=a_{\ell m}^{\rm CMB}+a_{\ell m}^{\rm tSZ}+a_{\ell m}^{\rm CIB}, \]

so the total spectrum carries cross-terms:

\[ C_\ell^{\rm tot}=C_\ell^{\rm CMB}+C_\ell^{\rm tSZ}+C_\ell^{\rm CIB}+2\,\mathrm{Re}\,\bigl(C_\ell^{\rm CMB\times tSZ}+\cdots\bigr). \]

For (nearly) independent components the cross-spectra are small, but they are captured exactly by summing the \(a_{\ell m}\) and then forming \(C_\ell^{\rm tot}\) — which is how the tools reconstruct Total per band (rather than summing the component \(C_\ell\)). Listening across bands you hear the CMB-dominated low frequencies give way to CIB-dominated high frequencies.

Synthesis: turning \(D_\ell\) into sound

Given the \(\ell\!\to\!f\) map, four methods render the same \(D_\ell\) differently.

Shaped noise

White noise \(w(t)\) is filtered so its audio power spectrum matches \(D_\ell\): for each audio bin at frequency \(f\) we find the corresponding \(\ell\) and set the amplitude response \(|H(f)|\propto\sqrt{D_{\ell(f)}}\). The output's spectral density is the angular power spectrum — the most faithful rendering.

Additive

A bank of sine tones, one per log-\(\ell\) bin:

\[ s(t)=\sum_i \sqrt{D_{\ell_i}}\;\sin\!\bigl(2\pi f(\ell_i)\,t+\varphi_i\bigr), \]

with random phases \(\varphi_i\). More tonal; discrete peaks become audible pitches.

Scale layers

Three \(\ell\)-bands as three timbres: a bass drone \((\ell<100)\), harmonic tones at the CMB peaks \((\ell=220,540,810)\), and high-\(\ell\) bandpass noise — each weighted by \(\sqrt{\langle D_\ell\rangle}\) in its band.

Instruments

Continuous gliding voices: the octave is set by \(\ell\) (log), the note by the band, and the loudness by \(\sqrt{\langle D_\ell\rangle}\) integrated over an octave-wide window around the current \(\ell\). Optionally the glide is snapped to a pentatonic scale, so each scale becomes a discrete, consonant note instead of a continuous slide.

Duet — cross-correlation as harmony

Two probes \(X,Y\) play at once, one voice each, with loudness set by their band power as above. Their harmony tracks the scale-dependent correlation coefficient

\[ r_\ell=\frac{C_\ell^{XY}}{\sqrt{C_\ell^{XX}\,C_\ell^{YY}}}\in[-1,1], \]

where \(C_\ell^{XY}\) is the cross-spectrum of the two maps (computed from the \(a_{\ell m}\), binned in \(\log\ell\)). As \(\ell\) sweeps, \(r_\ell\) drives both the musical interval between the voices and their stereo placement: correlated \((r\!\to\!+1)\) → a consonant unison locked in the centre; independent \((r\!\approx\!0)\) → a mild interval, modestly spread; anti-correlated \((r\!\to\!-1)\) → a dissonant interval, hard-panned apart. Because tSZ and CIB are frequency-dependent, switching the observing band changes the cross-correlation audibly — e.g.\ tSZ×CIB is anti-correlated at \(143\,\)GHz but correlated at \(353\,\)GHz, a direct echo of the \(217\,\)GHz tSZ null.

Sonifier controls — every option

A reference for each control on the Power Spectrum Sonifier, panel by panel.

Components

Toggle any combination of CMB (lensed), tSZ, CIB, kSZ, and Total on or off; selected components are mixed together. Total is the summed sky, CMB\(+\)tSZ\(+\)CIB (reconstructed from the \(a_{\ell m}\), so cross-terms are correct).

Observing frequency (band)

Choose a band from SO MF (93, 145 GHz), SO HF (225, 280 GHz) or Planck (143, 353 GHz). The band sets the amplitude of the frequency-dependent components: tSZ nearly vanishes near its \(217\,\)GHz null (quiet at 225) and the CIB grows strongly toward 353 GHz, while CMB and kSZ are band-independent (their sound does not change with the band).

Synthesis method

Shaped Noise, Additive, Scale Layers, Instruments and Duet render the same \(D_\ell\) in different ways — see the Synthesis tab. Instruments and Duet reveal extra options (below).

Playback & actions

▶ Play sounds the current \(\ell\) range as a steady tone. ℓ-Sweep glides from large to small scales (low to high \(\ell\)); ν-Sweep instead sweeps the observing frequency so you hear tSZ/CIB rise and fall across the bands. Build-Up enters layer by layer (CMB \(\rightarrow +\)tSZ \(\rightarrow +\)CIB). ■ Stop halts everything.

🌟 Big Bang plays the CMB acoustic-peak sequence as a short motif. 3D Spatial places each component at a fixed direction in HRTF 3D audio (best with headphones). ▶ Tour runs a short guided walkthrough. ⏺ Record captures the live audio to a downloadable clip; 🔗 Share copies a link that reopens the app with your current settings.

Stereo mode

Mono (centred), Components L/R (each component panned across the stereo field), or 93 | 353 GHz (spread by observing frequency, low→left, high→right).

Ranges & sliders

\(\ell\) range restricts the multipoles that are sounded (the angular scales). Volume is the master level. Sweep speed sets how fast \(\ell\)- and \(\nu\)-sweeps move; Sweep position lets you drag (scrub) the sweep cursor by hand.

Sweep options

log volume applies a compressed (logarithmic) loudness map so faint scales stay audible; linear \(\ell\)-sweep moves linearly in \(\ell\) rather than logarithmically; ping-pong bounces the sweep back and forth; fixed pitch holds the audio pitch constant and lets only amplitude and timbre vary.

Instrument options

Visible in Instruments mode. Pick a preset (Classical, Ambient, Cosmic, Rock, Jazz) or set the instrument per component individually. Snap notes to a scale quantizes the glide to a pentatonic scale (on by default).

Duet options

Visible in Duet mode. Choose probe A and probe B; the meter and the harmony then track their cross-correlation \(r_\ell\) (see the Synthesis tab).

The Sky Explorer

The sky is shown in an equirectangular (plate–carrée) projection: pixel \((x,y)\) maps to \((\phi,\theta)=(360^\circ x/W,\ 180^\circ y/H)\), so panning in longitude wraps seamlessly. A tiny overview loads instantly; a high-resolution image streams in behind it for sharp zoom.

Each component is drawn in a scientific colormap — CMB in the standard Planck CMB map, kSZ as a diverging red–blue map, tSZ in magma, CIB in inferno. A single selected component shows this classic view; when several are overlaid, the diverging maps switch to a dark-centred variant (blue→black→red) and all are combined by per-channel maximum (a "lighten" blend), so each keeps its colour and the composite stays clear instead of washing out to white. The map pans side-to-side with periodic (wrap-around) longitude. Massive clusters (\(M>5\times10^{14}M_\odot\)) are overlaid as points sized by \(\log M\).

Scanning (audio)

Each selected component is a voice. Its pitch reads the true (signed) sky value \(v\in[-1,1]\) under the cursor — cold low, hot high:

\[ f_{\rm voice}=f_{\rm base}\cdot 2^{\,v}. \]

Its loudness is weighted by how strong the component is at the selected band, relative to its strongest band:

\[ w_c(\nu)=\sqrt{\frac{\langle D_\ell\rangle_{c,\nu}}{\max_{\nu'}\langle D_\ell\rangle_{c,\nu'}}}, \]

so tSZ nearly silences at the \(225\,\)GHz null and CIB swells toward \(353\,\)GHz, while the frequency-independent CMB and kSZ hold steady. Nearby clusters add mass-pitched pings.

Software & reproducibility

The pipeline starts from HalfDome spherical-harmonic maps (\(\ell_{\max}=9000\), \(2'\) beam): precompute_cls.py forms \(C_\ell\) (and reconstructs Total by summing \(a_{\ell m}\)); export_web_data.py writes the spectra and low-resolution sky textures; export_sky_images.py renders the high-resolution Sky Explorer images and faithful value maps.

The web app synthesizes all audio in the browser with the Web Audio API and renders with the Canvas 2D context — no server and no JavaScript dependencies (this docs page additionally loads MathJax from a CDN to typeset the equations).

The HalfDome simulations

Website: halfdomesims.github.io  ·  Paper: Bayer et al. 2025, JCAP (arXiv:2407.17462).