Multimodal Media Madness - Winter Semester 2005/2006
Due on Tuesday, November 30, 2005
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.
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:
- A skeleton class for how to output digital audio has again been created for you.
- WAV files are stored in little-endian order, so be careful when you write out data to your WAV file. Here is an explanation of big and little endian.
- Here is a sample WAV file for reference.
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!)
Email an archive (.zip) of your assignment to
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.
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.