CSE 466 Lab 7:
Final Project! - Audio Control in Multiple Dimensions with the Chronos

DUE DATE:

To be able to have grades ready by the end of Finals week, we must have all labs completed and checked-off by Wednesday, December 15, 2010. Labs not completely checked-off by that point will not get full credit, but partial credit may be possible depending on the progress made.

We will be available in the Lab on Monday, December 13, 2010 from 8:30am to 10:30am (the scheduled Final Exam time slot) for Lab demos and check-offs. If you need to meet with a T.A. outside of that time, please e-mail cse466-tas@cs.washington.edu with your request.

Introduction

For this final lab, you'll work on using the acceleromter data from the Chronos to control multiple aspects of sound playing on your FriendlyArm. Some examples of the different dimensions you can alter are:

Ideally, this will be a continuation of the work you did in lab 6. But don't rest on your laurels; even if you did similar things in lab 6, you need to do something 'more' in this lab.

Objectives

In this lab, you will:

  1. Communicate with the USB radio dongle on the FriendlyArm serial port
  2. Get accelerometer data from the Chronos
  3. Use the accelerator data to control multiple aspects of an audio stream on the FriendlyArm
  4. Write a short (1 - 2 page) description of your project

Suggested Reading and Resources

Part 1: Communicate with the USB Radio Dongle on the FriendlyArm Serial Port

In this part of the lab, you will verify that you can communicate with the USB radio dongle on the FriendlyArm serial port. When creating the image in Lab 6, you included the USB Modem as a kernel module, and then loaded that module into the kernel in a separate step using the insmod command. If you did not do this, or are unsure if you did, perform the step "Loading the New USB Kernel Module" in Part 2 of Lab 6

According to several sources on the web, there are a series of commands that are sent to the USB Dongle to request data from the watch. For more in-depth information about the process, see the forum posts and Wiki reference in the Suggested Readings section above.

See the settings in this Serial Config file for help on configuring the FriendlyArm USB Serial port.

Part 1 Deliverables: None

Part 2: Get Accelerometer Data from the Chronos

in this part of the lab, you will have the FriendlyArm request the accelerometer data from the watch, and verify that you are getting back reasonable values (ie. they change when you move the watch).

The below steps were taken verbatim from the TI Forum post referenced above. If some of these steps do not work in our environment, or they need to be altered, let your T.A. know and they will update this section accordingly.

    Acc Reading sequence:
  1. Open the port using the settings 115200,1,N,8

  2. Send background ping requests (Optional)
    packet : ff 20 07 00 00 00 00
  3. Send "Start Access Point" command
    packet: ff 07 03
  4. Send the acc data request command
    packet : ff 08 07 00 00 00 00
  5. If you want to get new acc data go to step 4

Part 2 Deliverables: Demonstrate your working comm-port communication to the T.A.

Part 3: Use the Accelerator Data to Control Multiple Aspects of an Audio Stream on the FriendlyArm

This is the biggest part of the lab, and the portion with the least guidance. You need to use what you've learned about the Chronos and the FriendlyArm to write a program that polls for data from the Chronos accelerometer, and uses that data to control multiple aspects of audio playback on the FriendlyArm. Some suggestions for aspects of the playback that you can work with:

You are not limited to the above list, so be creative. Ultimately, you should use the data from two or three of the accelerometer axes to seperately control aspects of the audio. For example, the x-axis could control the pitch of a tone, while the y-axis could alter the volume. Adding harmonics to a tone, or mixing two differently-shaped wavetables, using motion along an axis would also be a great idea!

Also of importance in this section is writing clean code (not to be confused with 'perfect code'). Your code should be formatted so that it is easy to read, with comments describing each variable and method. Comments to describe sections that may be confusing to someone not familar with your code would also be a good idea. Some of your grade in this lab will be determined by the condition of your code.

Proper commenting of your code will help you in writing your project description for Part 4

Part 3 Deliverables: Demonstrate your working implementation to the T.A.


Part 4: Write a Short (1 - 2 page) Description of Your Project

Part 4 Deliverables: Turn-in the written description document (1 - 2 pages)


Project Deliverables:

  1. Turn-in all code written for the project (this includes any scripts used to test the comm port in Step 2)
  2. Demonstrate your working comm-port communication in Step 2 to the T.A.
  3. Demonstrate your working implementation of Step 3 to the T.A.
  4. Turn-in the written description document (1 - 2 pages)