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.
“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.
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).
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) |
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