MetriX was designed in order to have a working synthesis system that implemented the model presented in the previous section [Amatriain et al., 1998]. MetriX was at first designed as a textual-based language and then ported to XML (see 6.4.4).

This language, together with a related C++ library conform the MetriX framework. This C++ library was originally written from scratch and just reusing some existing code for the actual synthesis of the sound. Now it has been integrated into the CLAM framework The main goal in MetriX is to offer a powerful and intuitive interface to control all aspects involved in the creation of a synthetic musical piece. For doing so we rely on our object-oriented music model.

The MetriX language is in fact made up of two sub-languages: a MetriX Score Definition Language (MSDL) and a MetriX Instrument Definition Language (MIDL). Therefore, following the tradition of Music-N Languages (see section 2.6.1) such as CSound (see 2.6.1), MetriX makes a distinction between the process of defining and creating an Instrument and the process of controlling this Instrument through a music score. The original MetriX language was implemented in textual format and later evolved into XML to become more object-oriented.

Figure 6.8 reproduces the classification map already used in chapters 2 and 3 but now including MetriX in the position that best explains its scope.

Figure 6.8: MetriX classification in respect to other environments

MetriX can be considered in some sense a Music-N language (see section 2.6.1): our concept of Generator is very much related, although not strictly equivalent, to Music-N's unit generator and we also have a clear distinction between the score and the Instrument definition. Nevertheless, we have already seen in the previous section how our object-oriented music model introduces many differences with classical Music-N models. We will illustrate more differences in the following sections. Because of this, we could label our model as ``Enhanced Object-Oriented Music-N model''.