1 Final Submission
2 Teams
3 Grading Rubric
4 Help!
5 Sharing Code
6 Due Date

Assignment 2: Looping Sequencer

This week, your assignment is to produce a small sequencer that allows the user to toggle lights in a grid to create a small looping piece of music.

More specifically, the grid should be 8 columns wide; each column represents an "eighth" note. If you’re counting off a measure, this includes "one, and, two, and, three, and, four, and" — eight notes. Each row represents a particular sample or sound.

The sequencer plays continuously, at a tempo of your choice. As each eighth note rolls around, the sequencer plays all of the sounds whose lights are toggled on. So, if it happens to be time to play the "and" of three (column six), and the lights in the fourth and seventh rows of column six are illuminated, then those two sounds should be played.

It’s your task to implement the sequencer, and also to choose the samples associated with the rows. You can use built-in drum sounds and built-in tone sounds, but a more creative team will discover their own samples. Also, splitting a measure of an existing song into eight parts will provide interesting samples that can be used for eight rows.

You’ll probably get a *lot* of nasty-sounding clipping if you play all of your sounds at top volume. For this assignment, you should probably scale your sounds down using "rs-scale" so that adding them together doesn’t cause clipping. You can experiment with the amount of scaling required.

If you like, you can extend the assignment. You could provide a special button that resets the panel, for instance, or saves a pattern to be restored later.

1 Final Submission

The project is due on Friday, October 12, at 11:00 PM. In order to submit the project, you’ll need to hand it in in two different ways.

First, one person in your team will need to submit a bundle (.zip or .tgz, please) containing your source file and your samples. Please set your code up so that your sample paths end in "assignment2"–that is, create a directory called "assignment2" that contains your sounds. This will make it easier for me to "fix up" your source code so that it can find your sounds.

Second, you should add this project to your portfolio. You should include the following:
  • At least two screenshots of the running program,

  • a recording made while using the program,

  • a short paragraph on what the program does–be sure to include any extensions you added, and

  • the source code.

The project must appear on each team member’s portfolio page. It’s okay if you collaborate on the screenshots, recording, paragraph, etc., but each of you is responsible for adding it to his or her portfolio page.

Also, you should add a link to your portfolio to this google doc.

2 Teams

This project is to be done in teams. Your whole team is responsible for developing the program, and for ensuring that every member of the team plays a part in the project.

3 Grading Rubric

The grading for this assignment will be as follows:

4 Help!

If you need help, I strongly advise you to post to the Piazza group rather than contacting me directly: I’ll respond to both, and that way others can see your questions. Often, you’ll get a good answer more quickly from someone other than me.

5 Sharing Code

Naturally, you’ll be sharing all of your code with the rest of your team. Beyond that, though, you’re welcome to use other teams’ code, with proper attribution. So if the PowerSheep come up with a really cool sound, it’s fine with me if you use it in your program, indicating the chunk of code that came from the PowerSheep.

6 Due Date

This assignment is due at 11:00 PM on Friday night, October 12.