Deepdive: The Harmony of the World

Turning planet orbit data into sound using Johannes Kepler's music theory.


This is some background to my data sonification project, which can be experienced live here. Sonification is the process that translates data into sound, or the aural counterpart to visualization. In this project, I decided to combine the two in order to sonivisualize (in lack of better terms) orbital data from our solar system. The tools I used were Three.js (visualization), Tone.js (sound effects) and some Python (data retrieval). In this post I will focus on the sound mapping of data, but if you are interested in the visualization all code can be found in the project’s GitHub repo.


Kepler’s Harmonices Mundi

“The heavenly motions are nothing but a continuous song for several voices, perceived not by the ear but by the intellect, a figured music which sets landmarks in the immeasurable flow of time.”

Johannes Kepler, Harmonices Mundi, Book V, Chapter 7

The philosophical concept of musica universalis originated in Ancient Greece, and regards Pythagorean proportions in the movements of celestial bodies as a form of music. The theory was later developed by 16th-century astronomer Johannes Kepler (1571-1630), who updated the theory by proposing that the harmony was produced, not just by the planets’ positions, but by the relationship between the distances of the planets from the sun to their orbital periods. Kepler thought that very occasionally, and possibly not since the time of creation, all of the planets “sang” together in perfect harmony.

Finally, he discovered a property of the planets which fit the ratios startlingly well. Kepler found that the angular speeds of each planet at aphelion and perihelion, as measured from the Sun, produced consonant ratios. He was thence able to write down scales which he claimed each planet followed as a result of its changing angular velocity around its elliptical orbit. Mercury’s range of notes would be the largest, since its eccentricity was the most marked; Venus’s scale consisted of only one note. However, Kepler thought that the notes in these scales would be continually changing, producing a tone similar to a siren.

"The single movement of the planets in the familiar term of notes. They do not form articulately the intermediate positions, ... not by leaps and intervals but by a continuum of tunings ... (From Harmonices Mundi)"

Retreiving Solar System Data

To retrieve orbital data for the solar system , I used the Python library AstroPy, which estimates planet ephemerides (orbits) using a combination of algorithms (such as Kepler’s equations). I also decided to sonify some planetary properties in the form of planet size, temperature and density (from this NASA fact sheet).

Mapping the Data to Sound

This table shows how I mapped data variables into sound. The choices were mostly arbitrary, and although they use some of Kepler’s conceived scales, they are not an accurate sound representation of his harmonical ideas. For example, Kepler pointed out that his harmonies are experienced with the sun as a center point, while I use a geocentric perspective.

All sounds were generated by Tone.js synths, which consists of an aggregation of oscillators routed through an amplitude envelope.

Data parameter Mapping Description
Orbital Velocity Pitch Discretized and mapped to Kepler’s scales
Distance to Earth Volume Relative to the planet’s max. and min. distance in its orbit
Planet Radius Attack Radius relative to Earth
Planet Temperature Vibrato frequency Temperature relative to Earth (in Kelvin)
Planet Density Vibrato depth Density relative to Earth (kg/m3)
Data mapping variables to sound effects in Tone.js.

Final Remarks

You may have noted that Uranus and Neptune are missing from the sonification. The reason for this is that their discovery took until the 18th and 19th centuries, and consequently Kepler never created scales for these planets. There have been other works that realize the sound of Uranus and Neptune as rhytmic beats.