CS 686 PROJECT 3 Due Date: 7pm Thursday 17 Nov 2005 This project explores the display of waveform audio data in a format suitable for comparing brief recordings of students' voices and utilizing the ATI Radeon's hardware support for doing horizontal panning. PROJECT STATEMENT Your job in this project is to build a tool for viewing the waveform audio data contained in several files simultaneously. The files we shall employ may be downloaded from our class website (under 'student voices'). The specifications for this graphical tool are tailored to the size-limit on video memory, and to hardware register capabilities, of the ATI Radeon SVGA adapters installed in our USF laboratory and classroom workstations. These adapters are equipped with only 16 magabytes of display memory, and the two least significicant bits in the Radeon's CRTC_START register (bit 0 and bit 1) are disregarded (hence that register-value is interpreted as being a multiple of 4). This implies that, for the 8-bpp graphics modes, horizontal panning will shift left or right by some multiple of 4-pixels. Enough display memory is present to support a 8192-by-1024 virtual image, assuming the 8bpp color-depth is used (i.e., display mode equals 0x0107). SPECIFICATIONS The name to use for your tool's sourcefile should be 'seewaves.cpp'. To execute your program, a user would type the following command-line: $ seewaves [ ...] where any (at least one) or all of the files from 'student voices' may be entered as command-line arguments. All of those files hold waveform data which was captured using a sample-rate of 48Hz (48000 samples-per-second) with a one-second duration. In order to fit the size of video memory, it is necessary for you to 'condense' this waveform data to a sample-rate of 8Hz (i.e., 8000 samples-per-second), by averaging six consecutive pulses. Your program should draw a "virtual image" in video memory that shows the full duration of each of the specified voices' waveforms, allowing a user to use the left and right arrow-keys to pan horizontally, back and forth, across over this virtual image. (The voice waveforms should be shown one above another in cases where more than one file was named by the user). FOR EXTRA CREDIT Allow your user to use the up-arrow and down-arrow keys for vertical scrolling in cases where there were too many waveform files specified for displaying all of them, one above another, at the same time. WHAT TO SUBMIT Copy your program source-files (including your header-files) to your CS 686 '/submit' directory, along with your compiled 'executables'. Also turn in to the Instructor's mailbox (in HRN-208) a paper printout of each source-file that you authored (using 'ljpages.cpp' utility for printing). _________________________________________________________________________ Allan B. Cruse University of San Francisco Fall 2005