Upload
xavier-amatriain
View
102
Download
0
Embed Size (px)
DESCRIPTION
Tutorial that I gave in ISMIR conference in 2004. I shared the tutorial with G. Tzanetakis but this presentation includes only my part.
Citation preview
Software Frameworks for MIR
Because Code also Matters...
ISMIR 2004
Xavier Amatrian
The value of implementation
● Code is documentation● Code is publication● Code is test● Code is prove of concept
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 implemtation, why not use something that has proven to be useful in a similar situation.– Framework = Patterns + Implementation
Frameworks, libraries, applications(I)
● 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 (II)
● A Software Framework must offer:– Readytouse components (blackbox)
– Extension capabilities (whitebox)
● 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.
General Classification of Audio/Music Environments
Classification of MIRrelated 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
numbercrunching 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 nonproprietary 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