Opti_SSR

This python package provides the necessary tools to use an OptiTrack optical tracking system for different applications of the SoundScape Renderer (SSR) including listener position and orientation tracking in local sound field synthesis.

It contains several modules including a module to connect to the OptiTrack system (opti_client) and a seperate one to connect to and control instances of the SSR (ssr_client). The module that connects these aforementioned ones and implements sequence and desired functionality is also part of the package (bridges).

Note that the optirx 1.10 library is included here with only minor changes from the original source and that the modules ssr_client and opti_client respectively are designed to be used independently in other projects as well.

Documentation:
http://opti-ssr.rtfd.io/
Source code:
https://github.com/OptiTools/opti_ssr
Python Package Index:
http://pypi.python.org/pypi/opti_ssr/
Example files to set up the SSR:
https://github.com/OptiTools/opti_ssr-examples
License:
MIT – see the file LICENSE for details.

Installation

Aside from Python itself, NumPy and pyquaternion are needed. It should work with both Python3 as well as Python2.

The easiest way to install this package is using pip to download the latest release from PyPi:

pip install opti_ssr

Usage

To use opti_ssr you can use a demo function like the basic one below. Simply instantiate the necessary class objects according to the given parameters and start the thread in the class that contains the functionality. Ready-to-use demo functions to demonstrate head orientation tracking in binaural synthesis or listener tracking in local sound field synthesis are available at the github repository. The SoundScape Renderer has to be started prior to opti_ssr.

import opti_ssr

def demo(ssr_ip, ssr_port, opti_unicast_ip, opti_multicast_ip, opti_port, ssr_end_message):
    optitrack = opti_ssr.OptiTrackClient(opti_unicast_ip, opti_multicast_ip, opti_port)
    ssr = opti_ssr.SSRClient(ssr_ip, ssr_port, ssr_end_message)
    headtracker = opti_ssr.HeadTracker(optitrack, ssr)
    headtracker.start()

if __name__ == "__main__":
    demo()

Version History

Version 0.1.4 (2018-06-13):
  • Added option to change ref_offset_orientation in ssr_client.
  • Remove necessity of knowing the geometry of virtual loudspeaker distribution for LocalWFS
  • Add parameter to define, which euler angle of the RigidBody is selected for the orientation of the HeadTracker
Version 0.1.3 (2017-03-22):
  • Added option to change ref_position_offset in ssr_client.
  • Added single ref_orientation_shift for local WFS.
  • Added continuous ref_position_offset shift to local WFS second instance.
Version 0.1.2 (2017-02-23):
  • Fixed wrong angle used for head orientation tracking due to the fix in version 0.1.1.
  • Added version history in documentation.
Version 0.1.1 (2017-02-23):
  • Fixed a bug in orientation representation.
Version 0.1.0 (2017-02-14):
Initial release.