A Software Package for Sound Synthesis with Physical Models

Welcome to the Tao home page. Tao is a software package for sound synthesis using physical models. It provides a virtual acoustic material constructed from masses and springs which can be used as the basis for building quite complex virtual musical instruments. Tao comes with a synthesis language for creating and playing instruments and a fully documented (eventually) C++ API for those who would like to use it as an object library. The main features are:
  • Ability to create complex virtual instruments from primitive acoustic building blocks.
  • OpenGL animated visualisations showing the acoustic waves propagating through the instruments.
  • WAV format output files.
  • Comprehensive documentation including a user manual, tutorials (eventually) and various examples. All documentation is available in either LaTeX (dvi, ps) or HTML formats.
  • Available under GNU public license.

News (26 Apr 2000) 
Another image has been added to the Screenshots and Sounds page. Also the script used to produce one of the sounds has been added too.

A new source package has been uploaded, along with a user manual improved in many respects. I have begun to address one of the main deficiencies of Tao's user interface - the lack of useful error messages when a script contains mistakes. Until now only syntactic errors were picked up, but in the new version errors produced when the C++ version of the script is compiled are reported, highlighting the lines in the original script file which were in error. At the moment some common errors are caught, e.g. undeclared parameters, mispelt functions etc. but if Tao fails to compile a script and doesn't give you any useful error messages, please feel free to contact me so that I can fix the specific problem. This error reporting feature will become more sophisticated with time as I update it to cover other potential errors.

Filenames for all downloadable files have been changed to include the date of the build. Tao has been stuck at v1.0-beta for a while so I figured it would be useful for those of you who check this page occassionally to see at a glance whether a more recent package is available. The file tao-1.0.0-beta.tgz becomes tao-1.0-beta-26Apr2000.tgz for the version created on 26th April 2000. The manual also states which version is refers to now. See the new Future Directions page for an outline of my intentions for Tao after v1.0 becomes stable.

Several bugs and problems have been fixed, both in the software and the documentation including: configure script failing to detect libGLU.so even when it was installed properly; user manual giving incorrect names for some object methods - e.g. bow.disengage() - and others being described correctly but not implemented correctly - e.g. hammer.numberOfImpacts().

A new shell script diagnose-lib has been added to the source package. This script aids the diagnosis of configuration problems occuring because library files cannot be found. It is documented in the user manual. I can't guarantee it will solve any problems but it should help at least.

The chapter entitled Object Method Reference in the user manual has been improved, and the index has been made much more comprehensive and useful, but as always I should point out that this manual is still a work in progress.

Two new pages have been added to this site and the front page you are looking at now has been rearranged slightly. One of the new pages will eventually contain downloadable PDF versions of my thesis and published papers. This page is currently under construction however. The second is intended as a place for me to describe my long term plans for Tao