Assignment 2
1 Hints
2 Team Work
3 Final Submission
4 Grading Rubric
5 Help!
6 Sharing Code
6.7.0.1

Assignment 2

In the second assignment, you’ll be creating a playback engine, where a two-dimensional control alters the sound playback.

The basis for this assignment will be the sleepy-dj and/or pstream-delay projects that we went over in class.

You’ll be building on one of these, to create a system with a two-dimensional control.

The simplest project would simply be one that allows the user to drag a small rectangle, whose x coordinate controls the playback position and whose y coordinate controls (say) the volume.

Don’t feel constrained by this, though. Your graphical display can indicate the state of the machine using rotated stars, sliding images, etc. etc., and the generated sound can include synth tones whose pitch is controlled by one axis, or where the sound is multiplied by a sine wave of a pitch controlled by one axis, etc.

1 Hints

Don’t go overboard. Use Incremental Development. Start with something *simple*. Add bells and whistles after getting something working.

Specifically, I strongly recommend that you build the basic project as described above over the weekend, and then think about how you might extend it.

Also, keep your world-state data definition in good shape! It’s a specific area of your grade, and it will help you avoid many difficult-to-debug issues.

2 Team Work

The best teams will work effectively together. This means communicating! You should make a plan, and make sure that everyone knows what it is. If you’re having trouble with a part of the project, let your team know! Keeping everyone in the loop is the best way to avoid problems. This project is a warm-up for the final project, so now’s the time to get things ironed out. Arrange a meeting time as soon as possible!

Also, I will be asking you later on in the quarter to assess the contribution of each of your teammates to the project, so make sure that you’re responsible for your parts of the project.

3 Final Submission

For this project, you should submit a compressed bundle (.zip or .tgz, if possible) to polylearn, containing the program and all files (sound, image) required to run the program. Call the main program "project-2.rkt". Make sure to use relative paths, so that the program will work on my computer. This will also help you to share it.

Your program file should contain a one-paragraph write-up, in the form of a comment. Describe your ideas and your process, and the state of the program. Also, tell me how to use it!

As before, only one team member needs to submit to PolyLearn.

4 Grading Rubric

The grading for this assignment will be as follows:

5 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.

6 Sharing Code

Naturally, you’ll be sharing all of your code with the rest of your team. There are a number of nifty ways to do that, including GitHub and other public repo tools.

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.