Future Directions for Tao

The purpose of this page is to lay out some of my future plans for Tao. Most of the objectives listed here are described in the final chapter of the user manual but I wanted to reproduce them here to make them more accessible and maybe to encourage potential collaboration with any individuals who would like to contribute to Tao's development.

The current plan of action for Tao's further development is to continue working to make version 1.0 a robust, easy to install and workable version with good documentation and lots of examples. However once this goal is achieved it is likely that development on version 1.0 will be frozen and I will start working towards a radically redesigned version 2.0. There are many things I want to change about Tao and most of them require the software to be heavily redesigned. In the meantime I intend to get on with two tasks which have been lower on the agenda: writing a good tutorial; and documenting the C++ API. Of course I would be very interested in hearing from anyone who would like to help out with the development of version 2.0. I will eventually set up a mailing list and CVS server so as to make group development possible, but at the moment I don't have the time or resources to figure out either.

The main areas which are crying out for development in an improved version 2.0 are:

Improved efficiency in the synthesis model

Yes, yes, I know....Tao is SLOW! This is partly unavoidable since changing the distributed nature of the underlying synthesis model would in my view negate many of the features which make Tao appealing to use in the first place. The amount of computational resources needed by a technique are sometimes justified by the results it produces. Take ray tracing as an example from the world of computer graphics. It too can be very slow, but often the results it produces cannot be produced using any other technique. I would obviously like to see Tao running in real-time one day but I also want to keep the flexibility and potential quality of sounds that Tao affords.

However, I am sure that Tao's efficiency could be improved with a bit of restructuring and optimisation. One of the things I intend to do, time permitting, is to profile the performance of a typical Tao executable to see where the bottlenecks occur in the C++ class library, and then fix the problem areas.

Completely revamped synthesis language

I have been aware for some time that Tao's current synthesis language lacks some essential features which would be needed to make Tao practically useable for large scale compositional work. The most significant feature which is lacking from the language as it stands is the ability to use encapsulation, both in terms of instrument design and performance techniques. To elaborate on this imagine that you have spent a few weeks perfecting a particular instrumental structure and set of techniques for playing it and you decide that you would like to set up a much larger instrument containing hundreds of these structures. There ought to be a way to name, encapsulate and parameterise such structures and the techniques used to play them, in the same way that general purpose programming languages provide compound data structures, functions, objects, etc. as tools for managing complexity.

This feature is currently lacking from Tao's synthesis language since at the time of its design I only needed a simple language for actually testing various instruments and the sounds they were capable of making. Implementing this feature would necessitate redesigning Tao in a fairly major way, which is why I am trying to finish and freeze version 1.0 before attempting it. As a point of interest it is likely that the object oriented language Python would play a major part in the new improved interface.

A GUI for constructing instruments

This is an obvious next step for Tao since the instrument visualization facility already encourages you to think about instruments in a visual fashion.

To conclude...

This list is by no means exhaustive and there are many other ideas in the pipeline but I wanted to reassure current Tao users that if you have found a deficiency or irritation with Tao, the chances are I have experienced it too and intend to do something about it in the long-term!