In this introduction we will define the general scope and goals of this thesis, outlining its most important contents and setting the basis for the conceptual framework that will be later described.

First, it is important to describe its contextual situation. The work here presented is the result of our research in the Music Technology Group of the Institut Universitari de l'Audiovisual at the Universitat Pompeu Fabra in Barcelona. This group focuses its research on the analysis, processing and synthesis of audio in general and musical signals in particular. The research area defined as Musical Technology is very much related, though broader in its scope, to Computer Music. The basic disciplines that are mostly related to it are Computer Science and Signal Processing.

Nevertheless, this Thesis is not about Computer Science nor about Signal Processing techniques. We would ascribe its content to the area of Software Engineering. Although it may not seem obvious in the first place, Software Engineering uses completely different approaches from Computer Science, although it shares some of its basis. Computer Science as a discipline is more related to abstract sciences like Mathematics than to practical ones such as Biology. On the other hand Software Engineering is not a science in its methodology or its approaches, it is an engineering more related in this sense to other engineering areas or architecture. As Herbert A. Simon puts it ``Engineering is about synthesis and science is about analysis'' [Simon, 1996].

Because of this, the formal approach in this work is somehow different to what one would may expect in the first place. Very few mathematical formulas are included and no experimental data results are thoroughly analyzed. On the other hand formal modelling languages such as UML are used throughout. Software engineering is still a fairly new discipline and as such not many research models are available and some of them are too much influenced by the tradition of Computer Science. With this thesis we hope also to have contributed in this direction.

This thesis has five different parts that may be read and treated differently. Chapter 1 introduces the concepts and terms that will be use throughout the following sections. It should not only be seen as a documentation exercise but also as a presentation of a conceptual framework that is new, maybe not in its parts but as a whole. In chapter 2 we introduce a thorough review of environments for music and audio processing, all of them represent a different approach but are also somehow related to both the conceptual and development frameworks that will be presented in the next chapters. Chapter 3 contains the more practical side of this work as it presents a framework for audio and music applications we have developed and implemented and from which the metamodel presented as the main thesis of this work has been abstracted. Chapter 4 presents the core thesis of this work, introducing an object-oriented metamodel for signal processing derived from the framework presented in the previous chapter. Finally, in chapters 5 and 6, two different and complementary extensions are given to the basic model. The first one deals with the addition of a higher abstraction layer and the idea of using the framework as a base for content processing. The second one enhances the object-oriented metamodel by adapting it to the music domain and gives some examples of implementations.

We will now try to offer a more schematic view of this thesis. This may be used as a guide for the whole work here presented if, reading one of the parts, it is not clear how it is related to the main thesis or hypothesis.

All these different thesis are also backed by practical examples that demonstrate their viability. Out of all these examples the CLAM framework, presented in chapter 3 is the most important as it sets the basis for the general metamodel that will be later particularized, extended or instantiated.

As a matter of fact one may ask how hypothesis are tested in a discipline such as Software Engineering. The way hypothesis about models and metamodels related to Software Engineering are validated is very similar to how hypothesis are tested in experimental sciences: by empirical testing. The only difference is that instead of analyzing resulting data to conclude whether it fits the model under study, here we analyze the systems derived from the metamodel to conclude whether they are useful in the domain under study. That is why, of all the metamodels and models here presented include a practical or empirical demonstration of their validity. Namely: