Multimodal Media Madness - Winter Semester 2005/2006

Assignment 4 - Java Sequencer II
Due on Tuesday, November 30, 2005

Description


In this assignment, you will revisit your Java Sequencer from last week by replacing MIDI output with digital audio output.

Note: The deadline for this assignment was moved to November 30th due to problems with the lab machines.

Task


Your assignment for the week is to modify your Java program from the previous week to use digital audio instead of MIDI.

All functionality/features should be identical to your previous Java sequencer (playing notes, recording), with the exception of instrument changes (support for different instruments is not required). Instead of outputting MIDI notes, use sine waves of the appropriate frequency. Here is a description of how to calculate the frequencies of the various notes on the musical scale.

Also, instead of writing to a MIDI file, you are to write to a standard WAV file instead. A description of the WAV file format can be found on wotsit.org. Use the most basic WAV file format (16-bit uncompressed stereo).

Hints and Tips:

To develop your program, you may use the command line Java tools or Eclipse, a popular Java IDE. If you are really feeling brave, you may also develop your program using XCode, Apple's IDE. You can launch a UNIX prompt by opening Applications -> Utilities -> Terminal.

This assignment is to be completed in groups of 2.

Some ideas for extra credit for this assignment:

  • make the note play for as long as you hold down the key on the keyboard
  • preserve timing information in your recording to WAV file
  • make a nice GUI
  • cool stereo effects
  • etc... (use your imagination!)

Submission


Email an archive (.zip) of your assignment to This email address is being protected from spambots. You need JavaScript enabled to view it. before the due date. The subject of your email should be "M3 Assignment 4"; be sure to use this exact subject line as it will be used to filter assignment submissions for grading.

Your assignment archive should include all files required to compile and run your Java code. Do not include compiled object (.class) files. Include a short plain text README file that contains:

  • the names and email addresses of all group members
  • instructions on how to compile and run your code
  • a short description of what your program does
  • non-obvious things you did (if any)
  • if you did any extra credit work, be sure to tell us what you did


It is strongly recommended that you test your submission before sending it to us. If we cannot figure how to open your submission (strange or non-obvious compression format, no README file) then you will get zero.
Be prepared to discuss your solution in the next lab.

Grading


The assignment will be graded on the following rough scale:

  • 1.0 - exceptional work that clearly went above and beyond what was given on the exercise
  • 2.0 - exercise was completed satisfactorily as per the assignment specification
  • 3.0 - exercise was completed, but has some problems
  • 4.0 - incomplete exercise
  • 5.0 - little or no effort was put into the exercise


Late assignments will be graded with a penalty of 0.5 per 24 hour period after the due date.

Attachments:
File Description File size Downloads Last modified
c_e_g.wav Sample WAV file 916 kB 698 2005-11-20 14:26
DigitalPlayer.java Skeleton class 1 kB 863 2005-11-20 14:26