Spring2011.CSCI180Homework2 History

Hide minor edits - Show changes to output

Changed line 2 from:
'''Due Date''': Wednesday, Apr. 6, 2011\\
'''Due Date''': Friday, Apr. 8, 2011\\
Added lines 1-124:
'''Assigned Date''': Wednesday, Mar. 30, 2011\\
'''Due Date''': Wednesday, Apr. 6, 2011\\
'''Due Time''': 8:55am

Last modified on {$LastModified} (see [[http://www.cs.cofc.edu/~manaris/?n=Spring2011.CSCI180Homework2?action=diff&source=n&minor=n | 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:

* creating music with computers,
* connections between numbers and music,
* fundamentals of algorithmic composition,
* MIDI notes, durations, etc., and
* generating a MIDI file.


According to Scaletti [1],

-> [t]he idea of representing data in sound is an ancient one. For the ancient Greeks music was not an art-for-art's sake, practiced in a vacuum, but a manifestation of the same ratios and relationships as those found in geometry or in the positions and behaviors of the planets.

!!!Johannes Kepler

In 1619 [[http://en.wikipedia.org/wiki/Johannes_Kepler | Johannes Kepler]] wrote his "[[http://en.wikipedia.org/wiki/Harmonices_Mundi | 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.
* Here is a modern [[http://www.willieruff.com/soundfiles/01.Mercuryoutward.mp3 | sonification]] based on Kepler's "Harmonices Mundi" and actual orbital data of planets in our solar system.
* Here is [[http://www.willieruff.com/kepler.html | more information about this sonification]].
** [--Here is a lesser quality, but still relevant [[http://www.youtube.com/watch?v=1EFZuzgcIzY | YouTube video]].--]

!!!Bode's Law

The [[http://en.wikipedia.org/wiki/Titius%E2%80%93Bode_law | Titius–Bode law]] (aka Bode's law) is an attempt to model the symmetries and proportions of our solar system. Actually, it predicted [[http://en.wikipedia.org/wiki/Asteroid_belt | 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.

%height=200px% http://www.aerospaceweb.org/question/astronomy/solar-system/solar-system.jpg


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:

* Map the range of [[http://www.windows.ucar.edu/tour/link=/our_solar_system/planets_table.html&edu=high | orbital velocities]] to the range of 30-120. Use the resulting numbers as MIDI pitches.

To do so, use the following formula:

@@pitch = ((velocity - minVelocity) / (maxVelocity - minVelocity) * 90) + 30@@

where @@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.


# Do include Ceres (i.e., the asteroid belt) and Pluto.
# Make sure you initialize each of the above variables appropriately.
# Make sure you convert @@pitch@@ to an integer (via the @@int()@@ function) before using it to create a MIDI note.
# Feel free to experiment with other astronomical data from the planets.


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." [2]

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.

!!!Top Documentation

Additionally, your code should always include opening comments as follows:

(:source lang=Python tabwidth=3 -trim :)
# Author: <Your Name(s)>
# Email: <Your email address(es)>
# Class: CSCI 180, Section 1
# Assignment: HMWK2
# Due Date: <The assignment's due date>
# Certification of Authenticity <remove one of the following>:
# I certify that this lab is entirely my own work.
# I certify that this lab is my own work, but I received
# some assistance from: <Name(s)>
# Purpose: <Provide a simple, yet complete description of the task being
# performed by this program. It may be several sentences long.>
# Input: <Provide a simple, yet complete description of the input required
# by this program.>
# Output: <Provide a simple, yet complete description of the output generated
# by this program.>


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 Jython program (call it '''harmonicesMundi.py''').
# Your MIDI file (call it '''harmonicesMundi.mid''').


Your grade will be based on how well you followed the above instructions, and the depth/quality of your work.

!!!Relevant Quote

"Any amount of work can be done in any amount of time... only the quality varies." ~Joao Meidanis


# Quote from [[http://www.symbolicsound.com/ssc.html|Carla Scaletti]], "Sonification - An Ancient Idea Made Feasible by New Technology", ''ACM SIGRAPH '93 - Course Notes 81'', Aug. 1993, p. 4.2.
# Cooper, D. and Clancy, M. (1985) "Oh! Pascal", 2nd ed., W.W. Norton & Company, New York, p. 42.
# Enchanted Learning.com, "[[http://www.enchantedlearning.com/subjects/astronomy/planets/ | The Planets (plus the Dwarf Planet Pluto)]]", Accessed on-line, Feb. 17, 2010.

!!A Few Interesting Submissions

Here are three submissions from a previous semester [--(independent of grade earned - grading depended on more than just sound)--]

# [[http://www.cs.cofc.edu/~manaris/uploads/Spring2010/harmonicesMundi.AltmanMiller.mid | Harmonices Mundi #1]] (by Courtney Miller and Caitlin Altman)
# [[http://www.cs.cofc.edu/~manaris/uploads/Spring2010/harmonicesMundi.McNellisFricker.mid | Harmonices Mundi #2]] (by Douglas McNellis and Ian Fricker)
# [[http://www.cs.cofc.edu/~manaris/uploads/Spring2010/harmonicesMundi2.BloughWayles_McSween.mid | Harmonices Mundi #3]] (by Matthew Blough-Wayles and Shea McSween)