Spring 2009»CSCI 180 Homework 3

CSCI 180 Homework 3

Assigned Date: Tuesday, Mar. 17, 2009
Due Date: Thursday, Mar. 26
Due Time: 9:25am

Last modified on April 07, 2009, at 11:36 AM (see updates)

This is a pair-programming assignment. You may work with a partner (but you don't have to).


This assignment focuses on

  • creating music with computers;
  • translating from one music representation to another;
  • studying canons and rules for building them; and
  • paying attention to detail


You will reconstruct the first four canons of J.S. Bach's Goldberg Ground (BWV 1087).


"In 1974 a published copy of the Goldberg Variations, first owned by Bach himself, was discovered in private possession in France. Accompanying the manuscript, in Bach's hand, there was attached a single page with fourteen canons on the first eight notes of the Goldberg ground. The discovery of the hitherto unknown manuscript was immediately hailed as the most important addition of a Bach source in recent decades. Of the fourteen canons, only numbers 11 and 13 had been known before 1974." (quoted from J.S. Bach's Goldberg Ground)


Use Scratch to assemble the notes for each of the four canons. Each canon should be assembled in a separate sprite (one sprite per canon!). Since each canon contains two voices, each sprite should contain two separate scripts (note sequences). The first sprite's scripts should start with key '1' (i.e., when key '1' is pressed); the second sprite's with key '2', and so on. Each sprite should use the corresponding image below as its image. All voices should use instrument '1' (piano). Name each sprite according to the canon it contains, e.g., 'Canon 1', 'Canon 2', etc. The name of the project should be 'GoldbergGround'.

Canon 1 - soggetto with its retrograde

Canon 2 - inverted soggetto with its retrograde

Canon 3 - soggetto with its inversion

Canon 4 - inverted soggetto with its inversion


There are many possibilities for bonus. For instance,

  1. Construct additional canons from the Goldberg Ground for bonus points. The more canons, the more points. Follow the above instructions, in terms of names, start keys, images, etc. To receive bonus points, the bonus canons should be immaculate (no errors). If you are not very musical, find a friend who is and ask them to listen to your work.
  2. Experiment with augmentation and diminution. See if you can derive anything interesting with the Goldberg Ground. Use appropriate sprite names.


  1. Timothy A. Smith, "Fourteen Canons on the First Eight Notes of the Goldberg Ground (BWV 1087)" (accessed March 16, 2009).
  2. Jeffrey C. Hall, "Realization of Fourteen Canons on the Goldberg Ground, BWV 1087, by Johann Sebastian Bach" (accessed March 24, 2009).
  3. Joe Wolfe, "Note names, MIDI numbers and frequencies" (accessed March 16, 2009).
  4. Wikipedia, "Clef" (accessed March 17, 2009).
  5. Wikipedia, "Key signature" (accessed March 17, 2009).


Be thorough and systematic. Write down the note numbers and duration on paper first and double check them before implementing them in Scratch. This will save you a lot of time tracking down errors. That's very important.

  1. Submit completed Scratch project on WebCT by the due date. Also, keep your project on a memory stick (USB drive). Be prepared to demo it to the rest of the class.
  2. Also submit a README.txt file. In it, include your names, the class, homework number, date, and any special notes you may have on how you completed the assignment (e.g., describe bonus work, etc.).


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