Assigned: Friday, Oct. 21, 2011
Assigned: Thursday, Oct. 20, 2011
Last modified on October 27, 2011, at 09:22 AM (see updates)
This is a pair-programming assignment (i.e., you may work with one partner). You may discuss the assignment only with your partner or the instructor.
This assignment focuses on:
According to Scaletti ,
In 1619 Johannes Kepler wrote his "Harmonices Mundi (Harmony of the Worlds)" treatise. While philosophers spoke of the "music of the spheres," Kepler discovered physical harmonies in planetary motion and is a key figure in the scientific revolution that brought us out of the dark ages.
The Titius–Bode law (aka Bode's law) is an attempt to model the symmetries and proportions of our solar system. Actually, it predicted the asteroid belt between Mars and Jupiter (long before it was discovered), but fails to account of the irregularly moving Neptune and the (now demoted non-planet) Pluto.
Using Bode's law, it has been shown that "the orbital data of all planets, asteroids, moons, and rings in the solar system reduce to a simple numerical pattern based on the golden ratio. A set of integers, not unlike the quantum numbers of atomic systems, defines the mean orbits of all planets and major satellites." 
Write a Jython program that generates a sonification of the planets' organization using the jMusic programming library for musicians. Your program should generate a MIDI file with your sonification.
In particular, convert the orbital velocities of the planets to MIDI notes:
To do so, use the following formula:
pitch = int((velocity - minVelocity) / (maxVelocity - minVelocity) * 90) + 30
velocity is the orbital velocity of some planet,
minVelocity is the smallest orbital velocity among the planets, and
maxVelocity is the largest orbital velocity among the planets.
Alternatively, we could use the jythonMusic
mapValue() function. This function expects as arguments the value to be mapped, the smallest and largest possible value to be mapped, and the smallest and largest values of the destination range:
pitch = mapValue(velocity, minVelocity, maxVelocity, 30, 120)
Follow the Golden Rule of Style: "A program should be as easy for a human being to read and understand as it is for a computer to execute." 
In general, you should comment any variable, obscure statement, block of code, method, and class you create.
Your comments should express why something is being done, as opposed to how – the how is shown by the code.
Additionally, your code should always include opening comments as follows:
You will submit your assignment via OAKS/Dropbox. Be prepared to demo your music to the rest of the class. Your submission consists of the following:
Your grade will be based on how well you followed the above instructions, and the depth/quality of your work.
"Any amount of work can be done in any amount of time... only the quality varies." ~Joao Meidanis
Here are three submissions from a previous semester (independent of grade earned - grading depended on more than just sound)