Multimodal Media Madness - Winter Semester 2004/2005
Assignment 4 - Java Sequencer II
Due on Sunday, November 21, 2004 @noon
Due on Sunday, November 21, 2004 @noon
Description
In this assignment, you will revisit your Java Sequencer from last week by replacing MIDI output with digital audio output.
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:
- 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.
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.