250a Accelerometer Lab
Lab 4: Accelerometers, Audio Filters, and (optionally) Multitouch
Due on Wednesday, October 21th at 5PM
For this lab you need an iPod Touch (loaners are available) or an iPhone running TouchOSC, and Max/MSP or Pd on a computer.
Get connected and get oriented
iPod Touches, like many newer portable electronic devices, have a 3-axis accelerometer in them, which allows designers to take into account both orientation of the device with respect to gravity as well as detecting physical gestures that are made with the phone.
For this lab, instead of writing our own iPod applications (the subject of an entire course), we will use an iPod app called TouchOSC to send accelerometer data from the iPod to max or pd. This app is installed on the iPods available to use in this lab.
If you prefer to use your own iPod or iPhone, you are welcome to use one of the other apps which perform similar functions. Here is a review of some options: http://heuristicmusic.com/blog/?p=124.
getting osc messages going to your computer
- Make sure your computer and iPod are on the same network.
- Find out the name or IP address of your computer.
- On the iPod start TouchOSC and press the small 'i' to get to preferences. Select 'Network' and set Host to the name of your computer (e.g. 'cmn37.stanford.edu' or 'mylaptop.local'.)
- Open accel_osc.pd (INSERT LINK AND MAX PATCH HERE), and make sure that accelerometer messages from TouchOSC are being received in Pd/Max.
- use printing to examine the incoming OSC messages.
- Look at the acceleration values and graphs as you move the iPod around.
- What are the units that acceleration is reported in?
- Figure out the direction and orientation of each (x,y,z) accelerometer axis. How do you do this?
- Draw a picture of the x,y, and z axes and their orientation as they relate to the iPod. (For lab submission you can include this picture or describe verbally what you discover.)
Naive Gesture Detection and Thresholding
One obvious difference between fast jerky movements and slow gradual movements is sudden jumps in the acceleration values. We will detect these jumps with a simple threshold test.
Take a look at the help patch for the delta abstraction. The delta abstraction simply returns the difference between subsequent input values. (Technically, this is a "one-zero highpass filter.")
Connect a delta object to one or more acceleration values, pick a threshold that corresponds to a satisfying level of jerkiness, and cause Pd to make a sound when you exceed the threshold. For extra credit, give the user additional control of the sound based on the direction and/or the magnitude of the jerk.
Congratulations; you have now written a jerk detector.