Chapter 8 · Section 14
The journey in years, and its milestones said (v8.6, 15 November 2026)
The author: "the visual should show the entire journey of our universe." A universe's life is 2^L of its own Tempos and a Tempo its own Planck time, so the life has a length in seconds, uni.ruptureTime (universe.js): 11.0 billion years at level 202. From 15 November 2026 the game's clock reads in those years (lifeYears(), ageYears(), yearsLabel(), app.js): the epoch line reads "Universe · expanding, 36% of its final size · 2.9 billion years of 11.0 billion years · … stars", and the decay's banner "… · 13.8 billion years since the big bang · clock ≈ 10^x Pulses". The milestones the sky itself passed are said once each as the universe reaches them (journeyMarks(), toasts, kept in pinMarks with the pin head's): The dark ages, when the first light has cooled below red heat (2.5 × the bang's scale) and no star has formed; Reionization, at REION_FRACTION of the life (0.75/11.0, heat.js) once stars exist; The vacuum takes over, when the Null Vacuum's share vacuumShare() passes one half (in the life or, at the decay's clock, in the decay); and Our universe stands here, at 13.8/11.0 = 1.25 of the life, in the decay, where ours is today. With the firsts of the stars (First stars, First supernova, …) and the quarter, half and web marks, the toasts tell the journey as the sky tells it.
| Number | Where | What it is | Kind |
|---|---|---|---|
uni.ruptureTime |
universe.js | the life in seconds, 2^L Tempos × the level's Planck time | PHYSICS (Rupture Rule; Constants of a Child Universe) |
| 13.8 / 11.0 | app.js OURS_NOW_LIVES |
where our universe stands today, in lives | PHYSICS (book Part 3.10) |
| 2.5 × aᵣ | app.js journeyMarks() |
the first light dark, the dark ages begin | DISPLAY (red heat, Part 8.4) |
| 0.5 | app.js journeyMarks() |
the vacuum's share at which it takes over | PHYSICS (matter–vacuum equality) |
Part 8.14: Sound
The BPT law
BPT Part 4.9 (The Note of a Universe) opens: "If a universe is built on a pulse, it has a pitch." The pulse holds 0 and 1 for a Rhythm each, so it is a square wave, and its Square Pulse Spectrum is a_h = 2/(π·h) for the odd harmonics alone: "The pulse holds its fundamental and its odd harmonics alone." A universe sounds the Universe Note Frequency, f₁ = 1/①⥂⧗⌂, one over its Pulse Tempo; for ours 1.855 × 10⁴³ Hz. Octave Transposition, f♪ = f₁/2^k, brings it into hearing without changing it, since "A note moved by whole octaves keeps its name": ours, down 135 octaves, sounds at 425.9 Hz, "43 cents above G♯ and 57 cents below A".
Every note comes from one first note. The Prime Pulse Note is f_ℨ = 1/ℨ ≈ 4.38 × 10¹⁰⁵ Hz, "brought into hearing, 244.4 Hz, a B 18 cents flat", and the Lineage Note, f₁ = f_ℨ/(2·f)^L, carries it down: each level an octave lower and about 30.9 cents more. A universe then builds a chord: by Data Harmonics (BPT Part 3.6) "Each nova adds its harmonic of the universe's own note ... the fundamental at its Pulsecore, the octave as it pours out its data, the twelfth as it becomes physical, the double octave with spacetime, and the Harmonic Novas filling the series as its life closes." The book is plain about what this is: "No instrument hears a universe; its note is the frequency of its pulse, read as music." How the game computes the note (universeNote(), primeNote()) is the note's own law and belongs with Part 4.9; this Part covers how it is played.
The established physics
A square wave's Fourier series holds only the odd harmonics, with amplitudes a_h = 4/(πh) of the wave's height, or 2/(πh) for a pulse from 0 to 1 (Fourier's series; textbook). Whole octaves, factors of 2, keep a note's name. Equal temperament puts 100 cents in a semitone, with A4 at 440 Hz and MIDI note 69 (standard tuning).
The game's math
The tone (playPulseTone(freq, duration) app.js:3898): a sine at freq starting at gain 0.05 and falling exponentially to 0.001 over duration. It plays on each step that births cells, at 220 + 440·min(1, born/50) Hz for 0.1 s (app.js:4562), and for a toast at 440 + 110·tier Hz for 0.18 s.
The pulse's wave (pulseWave() app.js:3967): a periodic wave with the odd harmonics h = 1, 3, …, 15 at 2/(πh), the first 16 terms of the square pulse's series.
The gong (gong(freq, dur, peak) app.js:3992). A strike is the note stacked over six octaves (GONG_OCTAVES: −3, −2, −1, 0, +1, +2 at levels 0.55, 0.75, 0.8, 1, 0.42, 0.22), the pulse's own wave in the note's octave and sines elsewhere, each kept only between 28 and 9,000 Hz; the note's octave through a low-pass filter falling from min(16,000, 24·f) to max(200, 2.5·f) over 0.7 of the strike; a sine 1.00087 times the note (1.5 cents) for the shimmer; and a drum, a sine at the note folded under 90 Hz, falling from 2.6 times it in 0.09 s and gone in 0.9 s. The envelope rises to peak in 6 ms and falls exponentially to 10⁻⁴ over dur. One compressor on the way out (threshold −16 dB, knee 10, ratio 6, attack 4 ms, release 0.3 s, then gain 0.9) lets it be loud without breaking up (bus() app.js:3984).
The launch and the novas. soundLaunch() app.js:4017 folds the universe's note by octaves into the octave just below the Prime Pulse's note (noteBase) and strikes it, 10 s at 0.16. soundNova(layer) app.js:4029 strikes harmonic h = layer of noteBase, 10 s at 0.16/√h; past the 16th harmonic h is halved until it is at most 16 (the same note, octaves down), and only every eighth such nova sounds. Sound plays only with the Sound switch on.
The method, in plain steps:
a birth tone each step that births cells: 220 + 440 · min(1, born / 50) Hz for 0.1 s
the gong: the universe's note stacked over six octaves, the pulse's own wave, a shimmer and a drum
the launch strikes the universe's note; each nova strikes harmonic h of it, quieter as 1/√h
The code:
// public/game-v8.4/app.js:3898 playPulseTone()
function playPulseTone(freq, duration = 0.1) {
if (!audioCtx) return;
const osc = audioCtx.createOscillator();
const gain = audioCtx.createGain();
osc.type = 'sine';
osc.frequency.value = freq;
osc.connect(gain);
gain.connect(audioCtx.destination);
gain.gain.setValueAtTime(0.05, audioCtx.currentTime);
gain.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + duration);
osc.start();
osc.stop(audioCtx.currentTime + duration);
}
// public/game-v8.4/app.js:4029 soundNova()
function soundNova(layer) {
const n = universeNote(); if (!n || layer < 1) return;
let h = layer; while (h > 16) h /= 2;
const f = (noteBase || n.hz) * h;
/* the card names the harmonic once (novaLayer already says "Harmonic n") and shows with every nova banner, as long as it (the author, 2026-10-28) */
notePopout(f, 'the note it strikes', h !== layer ? 'folded down by octaves' : ''); /* the harmonic's name is in the banner at the top (2026-10-28, the author) */
if (layer > 16 && layer % 8) return;
if (!enableSound || !audioCtx) return;
gong(f, 10, 0.16 / Math.sqrt(Math.max(1, h)));
}
In the game
The universe is silent until the player checks "Enable Sound" (index.php:225). Then, at Start, the root is struck (soundLaunch(), called at the first step, app.js:4807): one long gong, ten seconds, of this universe's note folded into the octave just under the Prime Pulse's, so the player hears the first note carried down the lineage. Each nova strikes its own harmonic of that root over the ringing of the last: the octave at the Data Nova, the twelfth at the Physical Nova, the double octave at spacetime, and on up the series, the chord of BPT Part 4.9 built as the layers come. Each strike carries the pulse's own square-wave color in its root octave, a shimmer and a soft drum under it. While the rule runs, each step that births cells ticks a short sine, higher the more cells were born.
The "Note:" readout names the note at all times: <name><octave> ±…¢ · … Hz · from the Prime Pulse's <name> ±…¢ (app.js:2149), under the tooltip "The note this universe's pulse sounds: one over its Pulse Tempo, moved by whole octaves into hearing (book Part 4.9). Turn on Sound to hear it at the launch and the chord its novas build" (index.php:84). The "Null mass M_null/M_P" control (index.php:182) is the player's lever on the note before Start: it sets this universe's Tempo, ①⥂⧗′⌂ = ①⥂⧗⌂·(M_null/M_P)^½ (describeUniverse() universe.js:296), so a heavier well gives a slower Tempo and, by the Child Note of BPT Part 4.9, f₁′ = f₁·(M_P/M∅)^(1/2), a lower note.
The scale model
The note is scaled by whole octaves only, from f₁ (far above or below hearing) into the 220 to 440 Hz band or the octave below the Prime Pulse's note, so the note's name and its cents are exact; only the octave is chosen for the ear.
The Alpha, its octaves and the overtones of space (v8.6, 15 November 2026)
The author: "the alpha note is actually the first note that creates the pulsecore in the new dimension so right when I push the start button on a new game. then the 1 would be the space generation ... the exact same note as the alpha only higher"; "everything after the space layer is an overtone harmonic"; and, on the Zinf: "the first alpha note is not a zinf note". BPT Part 4.9 now carries the Pulsecore Octave Ladder, f_N = f₁·N/(16·ℨᵇ), the Space Fundamental, f_S = f₁·2^(2L − 1), and the Layer Harmonic, f_h = h·f_S (lexicon #1594–1596; #1397, #1448, #1479 updated). In v8.6 / Claude / 1:
- The launch is the Alpha (
soundLaunch()): the same strike, named "the Alpha, this universe's own note, one over its Pulse Tempo, from the Prime Pulse's … carried down its lineage"; the readout reads "the Alpha, G♯3 +43¢ · … from the Prime Pulse's B −18¢". - The Pulsecore's octaves (
pulsecoreOctave(), called each step of the fill): each time the data within doubles past its first Tempo's 16 bits, the Alpha's note is struck again, a 4 s gong at 0.07, octave k of K = 2·Lm − 1 (9 in the default model); the K-th doubling is the Null Nova, which sounds as Harmonic 1. As heard, the octaves are counted down from the note of space and folded up by whole octaves below 55 Hz, so every one is the Alpha's note; a step that doubles the data twice sounds only the later octave. - The novas sound overtones of space (
soundNova(),novaNote()): Harmonic h strikes h times the note of space, heard an octave above the launch (spaceNote()= 2·noteBase), where it struck h times the launch's note. Every ratio between the novas is unchanged; the chord sits an octave higher, over the Pulsecore's climb. - The note cards stay off (
QUIET); the octaves and the chord are heard with Sound on. Measured headless at the default level: octaves 1, 2, 4, 5, 6, 7, 8 struck through the fill (3 shared a step with 4), the 9th at the Null Nova.
| Number | Where | What it is | Kind |
|---|---|---|---|
| 16 bits | app.js pulsecoreOctave() |
the first Tempo's data, where the Alpha sounds | PHYSICS (Pulsecore Octave Ladder) |
| 2·Lm − 1 | app.js pulsecoreOctave() |
the octaves to space | PHYSICS (Space Fundamental) |
| 2·noteBase | app.js spaceNote() |
the note of space as heard, an octave over the launch | DISPLAY (octave choice) |
| 55 Hz | app.js pulsecoreOctave() |
octaves below it are folded up | DISPLAY |
| 4 s, 0.07 | app.js pulsecoreOctave() |
an octave's gong | DISPLAY |
Where the game and the theory differ
- BPT has each nova add its harmonic of the note of space (Layer Harmonic, from 15 November 2026), the series filling as the life closes. Past the 16th harmonic the game folds each strike down by octaves, h/2 until h ≤ 16, and sounds only every eighth Harmonic Nova.
gong()takes a glide (1.2 s, 2.6 s) that no caller passes.
Fixed numbers
| Number | Where | What it is | Kind |
|---|---|---|---|
| 0.05, 0.001, 0.1 s | playPulseTone() app.js:3898–3908 |
tone level, decay floor, default length | DISPLAY |
| 220, 440, 50 | app.js:4562 | birth tone range and its top at 50 births | DISPLAY |
| 440, 110, 0.18 s | app.js:259 | toast tone | DISPLAY |
| 523, 659, 784 Hz, 0.25, 0.4 s, 180 ms | app.js:1901 | discovery chord (C, E, G) | DISPLAY |
| 2/(πh), odd h | pulseWave() app.js:3970 |
the square pulse's harmonics | PHYSICS (Fourier series of a square wave) |
| 16 (N) | app.js:3968 | terms of the series kept | METHOD (series truncated at the 15th harmonic) |
| GONG_OCTAVES (−3 … +2, 0.55 … 0.22) | app.js:3991 | six octaves and their levels | DISPLAY |
| 28 Hz, 9,000 Hz | app.js:4000 | octaves kept within hearing | DISPLAY |
| 16,000, 24, 200, 2.5, 0.7, 0.7 (Q), 0.006 s, 10⁻⁴ | app.js:3994–3997 | filter and envelope | DISPLAY |
| 1.00087, 0.3 | app.js:4006 | shimmer | DISPLAY |
| 90 Hz, 2.6, 0.09 s, 9, 0.004 s, 0.9 s, 1 s | app.js:4008–4012 | the drum | DISPLAY |
| −16, 10, 6, 0.004, 0.3, 0.9 | bus() app.js:3987–3988 |
compressor and master gain | DISPLAY |
| 1.2 s, 2.6 s | app.js:3992 | glide timing (no caller passes a glide) | DISPLAY |
| 10 s, 0.16, √h | app.js:4025, 4000 | strike length and level | DISPLAY |
| 16 (fold), every 8th | soundNova() app.js:4031, 3998 |
harmonics folded by octaves; only every eighth past 16 sounds | DISPLAY |
| 220–440 Hz | universeNote() app.js:3923 |
the hearing octave for the note | BPT (Part 4.9: whole octaves keep the note) |
| 440 Hz, 69, 12, 100 cents | app.js:3924, 3896 | note names | PHYSICS (equal temperament, A4 = 440 Hz) |