Headtracking for Binaural Ambisonic Playback

Low-Budget headtracker mounted on headphonesHere is a short tutorial about an inexpensive headtracking solution which you can use to improve the binaural listening experience with the ambix Ambisonic tools. The calibration software is currently Windows only, but the Pd patch is naturally cross-platform.

It uses the headtracker described here by Dennis Frie: http://www.rcgroups.com/forums/showthread.php?t=1677559
Parts: arduino nano, GY-85 sensor board.

A Pure Data patch provided by me receives the serial data from the Arduino based headtracker and sends OSC messages to the host of your choice. In this case I will describe the use within the digital audio workstation Reaper.

downloadFor the impatient, here is the Pure Data patch (use with Pd-extended):

First you have to get the Arduino and Sensor Board, some soldering and upload the firmware according to the instructions here.

Use the Axis Method for calibrationUse the provided Windows software to calibrate the tracker – for me the Axis Method works best. You might have to repeat the calibration from time to time.

2) Now you can use the Pd Patch I provide to communicate with the tracker. Use Pd-Extended to open it!
Download: pd-patch-headtracker-osc-sender
This patch will translate the serial data from the Arduino board to OSC messages.

reaper_control_surfaces3) Open up the Reaper preferences and add an OSC control surface. Important: Receive on port 8000 and Allow binding messages to REAPER actions and FX learn.

4) Add the ambix_rotator plug-in before ambix_binaural and use the OSC tracking data to control the parameters of ambix_rotator:
Click the Track Envelopes/Automation Button of thReaper Track Envelopes/Automatione Track with ambix_rotator to open up the Automation controls. Now click the Learn… Button next to the parameter Yaw.

Now you have to send a OSC message from the Pd patch to attach the correct message to Yaw, Pitch and Roll. Therefore don’t activate tracking yet (as it sends out all three messages Reaper OSC learn and Pd patchat once and thus does not allow to use the Learn functionality)
Instead click the buttons below OSC_LEARN in the Pd-patch to trigger single OSC messages.

5) You may have to change the serial port in Pd. First click the button list_dev to get a list of you serial devices. Enter the serial port id in the number box open_port.
Now you can activate head tracking and enjoy a stable binaural surround image. Use reset_orientation to define your zero degree direction.

DarwiinRemoteOSC Mountain Lion

darwiinremote-oscI fixed the program DarwiinRemote for Mac OS 10.8 (Mountain Lion) and added Open Sound Control (OSC) support for the most recent version. Download it here:


DarwiinRemoteOSC allows to connect via Bluetooth to the WiiRemote controller. It also supports Nunchuk, Classic Controller and Balance Board.
All data from the Wii Controller is forwarded via OSC. IP and Port can be changed by command line argument. OSC can be sent to DarwiinRemoteOSC to turn on Force Feedback, LEDs and retrieve Battery status.

Sourcecode available on Github.


Kinect Headtracking with OSC Support

left: GEM Window, right: head pose estimation by G.Fanellibased on
Real Time Head Pose Estimation from Consumer Depth Cameras by Gabriele Fanelli [1]

download source and windows/OSX binaries: https://github.com/kronihias/head-pose-estimation

Application that detects head position from a depth image provided by Microsoft Xbox Kinect Sensor in x,y,z and Euler Angles (pitch, yaw, roll) from multiple persons.

–> needs no calibration!!

Application sends data as OSC[2] Message in the format:

/head_pose [User_ID] [x] [y] [z] [pitch] [yaw] [roll]

  1. [1]http://www.vision.ee.ethz.ch/~gfanelli/head_pose/head_forest.html
  2. [2]Open Sound Control (OSC) is a message based communication protocol for multimedia systems.