DiamondTouch Application

The GIL DiamondTouch application does finger tracking on the MERL DiamondTouch in order to allow single-user multi-touch on the device. At the moment, it only runs on Mac OS X.

A scientific publication (.pdf, 1.1 Mb) describes its principles, a video (mp4, 26.7 Mb) illustrates its performance.


The application is available from the GIL binary distribution in the following directory:


User Manual

After launch, the application displays its main window (picture below).

DiamondTouch source

By default, the application reads DiamondTouch events from an actual DiamondTouch table connected by USB to the computer. The File button in the DiamondTouch source frame allows to read events from a file instead. Event files must be formatted with one event per line, each line having the following format:

 type frame u_id 0 d_id 1 rows {13 13 14 ... 4 3} columns {8 8 8 7 ... 15 14} time 132663098

where u_id is the user ID (usually between 0 and 3), d_id is the device ID (usually a constant), rows and columns are the two arrays of sensor value from the DiamondTouch in one particular data frame, and time is a time stamp with millisecond resolution.


Clicking the Display events button in the Events frame opens a log window where high level events will be printed. High level events are Appear, Motion and Disappear events for touch locations, computed from the low level data from the DiamondTouch. Events are in the form:

 type motion u_id 0 e_id 0 time 1254940990056 location {0.6482457729616615 0.652761014386677}

where u_id is the user ID, e_id is the effector ID, that is the finger number, time is a time stamp with millisecond resolution, and location is the 2D position of the touch location on the DiamondTouch, expressed in normalized (between 0.0 and 1.0) coordinates.


Events can be sent over the network by activating the Send over UDP check button. Events can be formatted as simple strings (see the Events section above for an example string), or as TUIO messages. The Host and Port entries specify the address where to send the events. When using TUIO, the Session ID encodes both the user ID and finger ID: the session ID is computed as:

 session_ID = u_id * 10000 + e_id
Page last modified on March 18, 2010, at 02:20 PM
Contacts: the GIL mailing list.