Symphony
 

Overview
  Sample Applications
    Mind Balance
    Still Life
  Signal Processing
  Sponge
  MiniSymphony
Contact
Codezone Article

Components of Symphony are also being used by:
  The Antropos project
  The Palpable Machines
     group
  The Affective Computing
     group (MIT Media Lab)

 

Back to Rob Burke's Home Page


 


Overview

Symphony is a suite of tools that allows for the rapid design, prototyping and implementation of applications that interpret and visualize a variety of biological signals.  Symphony seamlessly integrates a real-time signal processing framework, a 3D visualization package, and the foundation required to rapidly develop applications.

System Architecture overview. (click image to enlarge)
System Architecture overview. (click image to enlarge)

The MindGames group has used Symphony to build a number of diverse applications.  Some of these were "stress tests."  Others have gone on to be used in clinical, rehabilitation and even performing arts settings.  Components of Symphony are also being used by several other research groups at the lab (see left).

Symphony was recently selected to be the focus of a Microsoft Case Study.

 

 

Sample Applications

Here are some examples of real-time applications that have been developed with Symphony.  Other applications in development that use Symphony include Peace Composed and Aura Lingua.   

 

Mind Balance

Goal:

  - Real-time non-invasive acquisition of electroencephalogram signals to control a character
Challenges:
  -
Precise rendering required to produce signals that must be detected as brainwave activity
  - Research and development of signal processing occurring in parallel with app development.
Render speed required:
  - 60fps (minimum)
Render speed achieved:
  - 100fps+ (on conventional hardware)
Additional information:
  -
Uses Sponge to separate signal processing and rendering tasks.
  - Uses native code to interface with legacy signal acquisition software.
  - Currently being extended by researchers with no prior C# experience.
Developed with:
 - MindGames group and
Univ. College Dublin Elec. Eng. Dept.
For more information:
  -
Click here.

 

Still Life

Goal:
 - "Magic Mirror" application used in physiotherapy and live performance settings
Challenges:
  -
Processor-intensive real-time video analysis
Render speed required:
  - 20fps (minimum)
Render speed achieved:
  - 20fps-40fps (depending on mode, on conventional hardware)
Max. interactive 3D characters for frame rate > 15fps:
  - more than 60
Additional information:
  -
Uses Sponge to record videos of performances
  - Showcased in the Féileacán project at the closing ceremonies of AAATE2003, September 2003, Dublin. 
  - Provided the complete interactive technical component of the Anima Obscura performance at the UN's World Summit on the Information Society, December 2003.
Developed with:
  - MindGames group, Dublin's
Central Remedial Clinic, CounterBalance and SmartLab
For more information:
  -
Click here.

 

 

 

Signal Processing

An important component of Symphony is a real-time signal processing framework that has been used in our applications to process everything from live video to brainwaves. The framework provides a visual interface that allows a designer to drag and drop atomic signal processors that perform operations ranging from wavelet transforms to image differencing. These can be assembled into real-time signal processing networks that are used by an application.

 

Relax to Win PocketPC running under MiniSymphony on an iPAQ 3870.
 

 

MiniSymphony

MiniSymphony is a version of Symphony that runs on the .NET Compact Framework platform.  It was created by removing Symphony's dependency on a couple of native libraries, and whittling away a bit at its Visualizers. 

In a matter of days, the first version of Relax To Win PocketPC (without biometric input) was implemented using MiniSymphony.  The biometric input is currently being implemented by the group into a new portable version of the game. 


 

 

 


 

 

Sponge

One aspect of the signal processing framework, nicknamed Sponge, provides the ability for Symphony to dynamically harvest available resources on a Local Area Network. Sponge uses WMI technology to query other computers on the LAN that are running a sentinel program, and determine what processor and memory resources they have available. Then, using .NET Remoting, Sponge can connect to chosen machines and deploy signal processing tasks.

The Sponge server sits in the System Tray awaiting connections.
The Sponge server sits in the System Tray awaiting connections.

The original intention of Sponge was to facilitate system designs where signal acquisition and processing are performed on potentially unspecified computers, in a dynamic LAN environment. Sponge has allowed for this, and also offered some tremendous fringe benefits. For example, Still Life can use Sponge to record a live video of a performance by streaming screenshots to another computer over the LAN in real-time.  These can be processed off-line to turn them into a moving video file.

 

 

Contact Information
If you have any questions about Symphony, please don't hesitate to contact me! 

Codezone article
I recently wrote an article describing Symphony for Microsoft's CodeZone Magazine (in the context of some of the group's recent work: the Féileacán Project, Still Life, Mind Balance and the venerable Relax-to-Win).  I have two PDF versions of the article online: a scanned copy of the article, and a printer-friendly version that lacks CodeZone's superior formatting.  (Note: the engine was named Symphony a matter of days after that article went to press.)


- Robert Burke, Architect and Lead Developer  (Symphony, Mind Balance and Still Life)
  MindGames Group, MIT Media Lab Europe