Software Frameworks for Audio and Music

Because Code also Matters...

Xavier Amatrian

The value of implementation

Code is documentation

Code is publication

Code is test

Code is prove of concept

Code can be extended/reused easily

Why using a framework

We do not want to “reinvent the wheel”

Reuse of code + Reuse of implementation

We want to dedicate as less time as possible to implementation, why not use something that has proven to be useful in a similar situation.

Framework = Patterns + Implementation

Frameworks, libraries, applications

A Framework is a general pool of constructs that is not tightly enough organized to constitute a predictive theory.

A Software Framework is an abstract design that can be instantiated in a particular way for a particular application.

An OO Software Framework is a set of classes that embodies an abstract design for solutions to a family of problems.

Frameworks, libraries, applications

A Software Framework must offer:

Ready-to-use components (black-box)

Extension capabilities (white-box)

A Software Framework has to somehow grant access to source code.

Frameworks, libraries, applications (III)

A software library is simply a collection of functionalities that are conveniently packed and can be accessed through an API

It is used from an application.

A workbench is not a framework: it is just a collection of tools.

General Classification of Audio/Music Environments

Matlab and similar environments:
What is wrong with Matlab anyway?

Matlab is Proprietary

Everyone has it?

What about the toolkits?

Do I really know what is going on inside? Does that matter?

This problem has an obvious solution: Octave (www.octave.org)

It is used by many “top” institutions such as NASA

It has an interesting open and growing repository: Octave-Forge

Matlab and similar environments:
What is wrong with Matlab anyway?

Matlab is Unefficient

Some disciplines such as MIR have to really do number-crunching and large database analysis.

Matlab code may take many times more than its functional equivalent in a compiled programming language.

Matlab is Unstructured

By definition Matlab and similar environments favor unstructured code

They do not favor reusability

C++ Software Frameworks

Why C++?

It is efficient

It can be OO

It is a non-proprietary standard

Many existing tools are on C++

Other languages

Java

it is not efficient and it is proprietary

Perl

it is not efficient and it is not OO

Conclusions

It is worth to use a framework

It is important to know what is out there and what we can expect from it

Frameworks are evolving by nature

Frameworks generate metamodels

2004-10-05T13:10:29