This is living music: a score with no beginning, no end and no composer, written continuously by the Pacific itself. The ocean’s wave spectra are transformed directly into sound spectra, every family of swell becoming a voice, so the sea is not illustrated but literally heard, twelve octaves above its own motion. The Pacific is a calm ocean, and that calm is the music’s nature: slow swells breathe in long patient tones, and the spectral chord drifts the way deep water drifts, without haste. The medium of the work is data and time itself: readings taken far out on open water, a page that turns them into chord, melody, rhythm and notation at the very moment you watch, and a clock that keeps the music faithful to the ocean’s own present.
How to read the interference rhythm staff: each line is one pair of chord notes. Two tones close in frequency physically beat at their difference frequency, and one notehead is printed at every real beat instant, so the spacing on the line is the rhythm itself. The bracket numeral such as 5:4 states how many of these beats fit against the measure, which is always the slowest pair’s beat; the percentage beside the label is the honest deviation of that rounding, and the label on the right names the two notes of the pair. Darker rows beat louder. The noteheads sit at the true clock times of the beats, so this staff and the melody line above it describe exactly the same sound.
The ocean’s wave energy spectrum, in continuous flow. The display runs exactly 75 minutes behind real time: there is always a solid measurement on either side of the shown moment, and the curve interpolates between them at the speed of real time. The position is computed from the clock alone; refresh the page or open it on another device and the flow continues from the very same place. The map below opens on the last 45 days, and from there you can travel to any measured moment back to 1996.
What these numbers mean: significant wave height is the classic sea state figure, four times the square root of the total energy under the spectrum, close to the average height of the highest third of the waves, in meters. Peak period is the period of the single most energetic wave component, in seconds: long periods mean swell sent by a distant storm, short periods mean chop raised by local wind. How to read the curve: it is the live wave energy spectrum itself. Left to right runs from long slow waves to short fast ones, height is energy density in m²/Hz, and every hump is a distinct wave family traveling through the buoy. Every hump you see here becomes one note of the chord above.
How to read: each curve is the loudness of one chord note through time. A is the attack, the rise from silence; D is the decay down to the sustain shelf S; R is the release, the final fade. Nothing here is styled by hand: the shape comes from the sharpness of that note’s own spectral peak. A narrow peak means the sea’s waves of that family stay in step for a long while, so the note swells and breathes slowly; a broad peak loses step quickly, so the note breathes fast. All times are real ocean seconds, and the sounding chord repeats these cycles continuously, anchored to the clock of the current measurement, identically on every device.
How to read: the outline is the smoothed envelope of the whole spectrum, and its broad humps are formants, the same kind of resonant bumps that give human vowels their color. F1, F2 and F3 mark the hump centers with their bandwidths at 3 dB below each top. The sound engine drives a soft noise through bandpass filters set exactly at these centers, so behind the chord the sea breathes with its own vowel quality. The IPA letter is an orientation label only, the nearest human vowel in F1/F2 space; it is not sonified. The ocean’s formant space is narrow, so it stays near [u] most of the time, which is a stated limitation of the data, not an effect.
The left half of the curve is long period swell: letters from storms thousands of kilometers away. The right half is the short chop raised by the local wind.
Every bright streak climbing from lower left is a single distant storm: its longest waves arrive first, then ever shorter ones over days. The slope of the streak tells the storm’s distance.
The flow is always a linear bridge between two real measurements; no invented motion. The fixed delay of 75 minutes guarantees both feet of the bridge are solid data and locks the flow to the real clock.
Everything sounding on this page is derived from the wave energy spectra of NOAA buoy 46059, moored in the deep Pacific off California. Live data arrives about every 30 minutes with 46 frequency bins; archives reach back to 1996 at hourly cadence. The 2013 and 2014 gap is filled by neighbor buoy 46002 off Oregon, the same deep ocean. All times are UTC. The live view runs exactly 75 minutes behind the wall clock so that a solid measurement always exists on both sides of the shown moment.
measured: every spectrum · chosen: the 75 minute delay and the neighbor buoy for the gap
Each note is a spectral peak of the sea. True peak frequency comes from parabolic interpolation over the three bins around each local maximum, with uneven bin spacing accounted for.
audio Hz = wave Hz × 4096 (2¹², exactly 12 octaves up)
Multiplying by a power of two preserves every interval ratio: the chord’s structure is the sea’s structure. Audio plays the exact Hz. Notation spells each pitch on the 24 tone grid: arrow accidentals on naturals mark quarter tone inflections of ±50 cents, sharps and flats are chosen so the written letter leans toward the true pitch, and the residual is printed beside every notehead to 0.1 cent.
measured: peak frequencies · chosen: the constant 2¹² and the quarter tone spelling rules
amplitude = √(peak energy / 40 m²/Hz), capped at 1
The scale is absolute, not relative: 40 m²/Hz always means fff, so a calm sea is genuinely quiet and a storm genuinely loud. Dynamic marks follow fixed thresholds on this amplitude: ppp up to 0.05, pp to 0.12, p to 0.22, mp to 0.35, mf to 0.50, f to 0.68, ff to 0.85 and fff above. Ink darkness of every notehead and duration line uses the same value, so the score can be read as a loudness map even without the letters.
measured: peak energies · chosen: the 40 m²/Hz reference and the threshold table
Each peak’s own region reaches to the neighboring local minima. Local spectral width σf from the region’s moments gives the group envelope time:
τ = 1 / (2πσf) · A = D = τ/2 · R = τ · S = √(floor energy / peak energy) · plateau H = 0.6 (A + D + R) · full cycle P = 3.2 τ
Envelopes run in ocean seconds, in real time: a slow swell truly swells slowly. A resolution floor keeps σf at or above a third of the local bin width so single bin spikes cannot claim infinite envelopes. The cycle grid is anchored to the current measurement’s UTC timestamp with the period frozen from that measurement’s own data, so every device and every refresh hears the same attacks at the same real seconds: the live flow is one broadcast.
measured: σf, τ, floor and peak energies · chosen: the A D R proportions, the 0.6 plateau, the curve shapes, ocean seconds, and the anchor rule
Drone voices use a fixed waveform (harmonic amplitudes 1, 0.22, 0.09, 0.045, 0.018, 0.008), an aesthetic constant carrying no data. Melody notes are different: their wavetable is measured. The k th harmonic amplitude equals √S(k·f₀), the sea’s own energy at the integer multiples of the note’s frequency, where steep seas really do carry bound harmonic energy (Stokes waves), up to the edge of the measured band and at most 12 harmonics. A steep sea sounds bright; a calm sea approaches a pure sine. Harmonic phases are set to zero because the sea publishes no phase.
measured: melody harmonic amplitudes · chosen: the drone waveform, the 12 harmonic cap, and zero phases
The log spectrum is sampled on a uniform log frequency grid of 96 points and smoothed with a Gaussian of 0.07 decades; the humps of this envelope are the formants (up to three, within 12 dB of the top), each with a band at 3 dB below its center.
white noise → three bandpass filters at the formant centers · Q = center / bandwidth · band gain = relative envelope level · overall level = min(√m0 / 2.5, 1) × 0.20
The vowel label compares F1 and F2 to IPA references by log distance. It is display only and is not sonified; the sea’s formant space is narrow, so it sits near [u] almost always. This limitation is real and stated rather than corrected.
measured: centers, bandwidths, levels, total energy · chosen: grid size, smoothing width, band count, level constants
The melody is the interference beating of note pairs, T = 1/Δf, which the sounding chord produces physically. Each beat is voiced by the pair’s upper note: exact Hz, loudness from the amplitude product on the absolute scale, envelope = that note’s own ADSR compressed by a fixed ÷64, beat times on the UTC epoch grid of each pair’s measured period, top five pairs by accent.
The staff writes this melody in stemless time space notation at true pitches: the staff scrolls while the now line stays fixed, a note sounds exactly as it crosses the line, played notes dim into the left, and barlines drift by at epoch multiples of the measure. Every beat is committed the moment it enters the visible window: once drawn it never changes, and the audio engine plays exactly the committed beats, nothing else. In the live flow the measure length comes from the current measurement’s own data, the bar grid is anchored to that measurement’s UTC timestamp, and the frozen page is computed from the spectrum at the bar’s own start: whenever you join, from any device, you freeze the identical page. The melody too is one broadcast.
measured: pitches, loudness, beat periods, accents · chosen: the upper note voicing rule, the ÷64 time scale, the epoch anchor, the five pair cap
The five line staff below the melody writes each pair’s rhythm as analysis: the measure is the slowest pair’s beat, each row prints one notehead at every true epoch beat time, plain values where the count per measure is a power of two, p:q tuplet numerals where not, with the rounding deviation declared in percent. The numerals are analysis only; the notehead positions are never rounded. Row ink follows the pair’s accent, the product of the two amplitudes.
measured: beat times, accents · chosen: q at most 4 in the ratio search
Below the melody a grand staff carries the drone part in the same scrolling time. Each chord tone prints a notehead with its accidental and cents at the measured moment it entered the chord, and every envelope cycle attack the engine schedules prints a fresh notehead at its exact scheduled time, again with accidental and cents. A duration line, heavier than a staff line yet thinner than a notehead, runs from each notehead exactly as far as the note actually sounds; its ink follows the note’s recorded loudness and envelope through time, so swells and decays read as shading along the line, and a dying note’s line melts away on the same exponential curve as its sound. Right of the now line the anchored cycle grid is deterministic, so the next attack is visible before the cursor reaches it and sounds exactly as it crosses. The full current chord stands at the left of the system, aligned with the treble staff above, with the same accidentals, cents and dynamics.
measured: pitches, entry times, attack times, loudness history · chosen: the notehead and line weights and the shading curve
All constants, carrying no data. Voices sit in stereo by pitch:
pan = log₂(f / 500 Hz) / 2.5, capped at ±0.6 · equal loudness trim = (f / 500 Hz)^−0.25 · voice headroom 0.22
echo space: two cross fed delays of 191 ms and 233 ms, feedback 0.55, behind a 2500 Hz low pass, mixed 30% wet over 78% dry · safety compressor: threshold −20 dB, knee 24 dB, ratio 2.5:1 · default volume 50%
measured: nothing · chosen: everything in this card
Live view runs exactly 75 minutes behind the clock and interpolates linearly between the two real measurements bracketing that moment, at the speed of real time. Nothing moves that the sea did not do. Refresh the page or open it on another device and the flow continues from the very same place.
Notes are born and die through a soft threshold: a peak fades in between 50% and 100% of the audibility floor (6% of the row maximum, at least 0.10 m²/Hz). A sounding voice follows its peak while it stays within one semitone; frequency and loudness glide with time constants of about one second. When a voice dies the engine releases it with a 1.2 second exponential fade, and the notation ends its line on the same curve.
measured: all motion between measurements is linear interpolation of data · chosen: the 75 minute delay, fade thresholds, glide times, release time, playback speed range
The drone is classical additive synthesis. Each spectral peak of the sea drives one oscillator at the peak frequency times 2¹², with a fixed six harmonic waveform and an amplitude proportional to the square root of spectral energy, the physically correct energy to amplitude relation. Amplitude modulation follows the group statistics of the waves: for a narrowband process the envelope decorrelates over τ = 1/(2πσf), so each voice breathes on the correlation time of its own wave family, repeated as periodic ADSR cycles anchored to the measurement clock. Frequency and gain glide with first order smoothing of about one second.
Any two chord components at f₁ and f₂ physically produce amplitude beating at their difference frequency; the melody voices these beat instants, T = 1/Δf, as short plucks. Each pluck is wavetable synthesis with measured partials: the k th harmonic amplitude is √S(k·f₀), read from the sea’s own spectrum, with the note’s ADSR compressed by a factor of 64. The breath layer is source filter synthesis as in speech modeling: white noise through parallel bandpass filters at the measured formant centers, Q = center over bandwidth.
Everything runs in the browser on the Web Audio API: oscillator and periodic wave nodes for the voices, biquad bandpass filters for the breath, a cross fed pair of delay nodes for the echo space and a dynamics compressor for safety, all scheduled sample accurately on the audio context clock. Panning places voices by log frequency, a mild equal loudness trim compensates ear sensitivity, and every schedule is computed from UTC time and measurement data alone, which is why any two devices render the same sound.
The buoy reports once an hour, and NOAA processes and publishes each report with a delay that is usually well under an hour but is never instant. The page therefore plays the stream at a fixed 75 minutes behind the buoy’s clock, roughly one to two measurements back. That margin guarantees that the moment on screen always lies between two measurements that have already been published: the music never runs ahead of certain data, so nothing ever has to be guessed. Between those two bracketing measurements every frequency bin of the spectrum is interpolated linearly, weighted by how far the UTC clock has moved from one timestamp to the next; this is why pitch and loudness drift smoothly instead of jumping on the hour, and the status line above the spectrum names exactly which two measurements are being blended and by how much. Two things are deliberately not interpolated: the breathing envelope grid and the melody page are frozen from the measurement currently being crossed and anchored to its timestamp, which is what keeps every device on the same attacks and the same bar. The feed is refetched every 4 minutes, and adopting new rows never moves the playhead, because the position is computed from the wall clock alone. If publication is late and the margin runs out, the page holds at the last certain measurement and says so; it never invents data.
© 2026 Saim Gülay. Breath of the Pacific: the concept of the living score, the notation system and its visual design, the sound design and all texts are the work of Saim Gülay. breathofthepacific.com
All source code is free software under the GNU General Public License v3.0. You may use, study, modify and redistribute it; derivative works must remain under the same license and keep the copyright notice.
SPDX: GPL-3.0-only · gnu.org/licenses/gpl-3.0
The artistic work is licensed under Creative Commons Attribution NonCommercial ShareAlike 4.0 International. Attribution is required, commercial use needs prior written permission, adaptations must carry the same license.
CC BY‑NC‑SA 4.0 · creativecommons.org/licenses/by-nc-sa/4.0
Gülay, S. (2026). Breath of the Pacific: a living score of the Pacific wave spectrum. breathofthepacific.com. Wave data: NOAA National Data Buoy Center.
Any public use, performance, recording or writing that builds on this work must carry this credit and a link to breathofthepacific.com.
Wave measurements: NOAA National Data Buoy Center, buoys 46059 and 46002, US public domain; no rights are claimed over the data itself. Notation font: Bravura © Steinberg Media Technologies, SIL Open Font License 1.1.
For commercial licensing, exhibitions, recordings or any use outside these terms, contact the author at gulaysaim@hotmail.com.
[1] NOAA National Data Buoy Center. Station 46059 (LLNR 382), West California, 357 NM west of San Francisco, 38.067 N 129.895 W, water depth 4620 m. ndbc.noaa.gov/station_page.php?station=46059
[2] NOAA National Data Buoy Center. Station 46002, West Oregon, 275 NM west of Coos Bay, 42.560 N 130.523 W, water depth 3438 m. ndbc.noaa.gov/station_page.php?station=46002
[3] NOAA National Data Buoy Center. Measurement Descriptions and Units. Definition of spectral wave density in m²/Hz per frequency bin. ndbc.noaa.gov/faq/measdes.shtml
[4] NOAA National Data Buoy Center. How are significant wave height, dominant period, average period, and wave steepness calculated? Source for WVHT = 4√m₀ and for the dominant period as the reciprocal of the peak frequency. ndbc.noaa.gov/faq/wavecalc.shtml
[5] NOAA National Data Buoy Center. How are spectral wave data derived from buoy motion measurements? ndbc.noaa.gov/faq/wave.shtml
[6] NOAA National Data Buoy Center. Nondirectional and Directional Wave Data Analysis Procedures. NDBC Technical Document 03-01. ndbc.noaa.gov/wavemeas.pdf
[7] Longuet-Higgins, M. S. Statistical properties of wave groups in a random sea state. Philosophical Transactions of the Royal Society A, 312(1521), 219–250, 1984. Wave groups described through the envelope function and a spectral width parameter; the background for driving each voice’s breathing from its own group statistics. doi.org/10.1098/rsta.1984.0061
[8] Peterson, G. E., and Barney, H. L. Control methods used in a study of the vowels. The Journal of the Acoustical Society of America, 24(2), 175–184, 1952. The F1/F2 formant space against which the orientation vowel label is read. doi.org/10.1121/1.1906875
[9] W3C. Web Audio API. W3C Recommendation, 17 June 2021. The audio engine of this page. w3.org/TR/webaudio-1.0
[10] SMuFL · Standard Music Font Layout. The code point layout the notation glyphs follow. smufl.org
[11] Steinberg Media Technologies. Bravura, reference font for SMuFL. SIL Open Font License 1.1. github.com/steinbergmedia/bravura
[12] Free Software Foundation. GNU General Public License, version 3. gnu.org/licenses/gpl-3.0
[13] Creative Commons. Attribution-NonCommercial-ShareAlike 4.0 International. creativecommons.org/licenses/by-nc-sa/4.0
Everything not listed above is the work of this page itself: the mapping from spectrum to chord, the notation, the envelopes, the interference rhythm and the sound design. Those choices are argued in the Sonification Map, not borrowed from a source. No reference is given for a claim it does not carry.