CMPT 433 Assignment 3 Marking Guide - Beat-Box Assignment may be done individually or in pairs [100] Marks [35] Generate beats without jitter. [15] Plays sounds cleanly [15] Plays beats correctly and smoothly. Supports none, rock, and at least one custom beat. [5] Correct display of timing results on terminal. [10] Zen's joystick: [2] Volume: Able to press-and-release to change the volume one step [3] Volume: Able to press-and-hold to change more than once. [2] Volume: Values in correct range; don't overflow/underflow. [3] Press in (centre) to cycle LCD screens. [10] Rotary Encoder [3] Press in (centre) to cycle drum beat modes [4] Tempo: Knob controls BPM smoothly. [3] Tempo: Values in correct range; don't overflow/underflow. [5] Text Display (output) [1] Once per second, display status [1] Include drum mode, something like "M0"; may 0-index or 1-index. [1] Include volume [1] Include time between refilling audio playback buffer [1] Include time between accelerometer samples [10] LCD Display [4] Screen 1: Show name of current drum beat (string), volume, and BPM. [3] Screen 2: Show audio latency with title, min, max and avg ms between fills. [3] Screen 3: Show accelerometer sampling timing with title, min, max and avg sampling timing. [15] Zen's accelerometer for "air drumming". [8] Each axis plays a sound [4] Debounced: Able to get it to play just one sound if desired [3] Quick: Able to drum ~120 BPM if shaking unit [10] Control via UDP through web-client We are not directly testing with netcat or the like; but just using your NodeJS webclient. Ability to quit via the website -5 if no webpage. [ 5] Clean memory accesses: No bad pointer accesses or uninitialized memory use (valgrind) Much larger penalty possible if program crashes. Correctly frees memory at exit (OK for audio library to not free memory). General Deductions to be applied holistically: [-20] Up to 20 point deduction for terrible code structure or quality. Forward to Dr. Brian if... - Material is suspiciously similar to another submission. - All proven cases of academic dishonesty will be dealt with according to SFU's Academic Honesty policy: http://www.sfu.ca/policies/gazette/student.html