software frameworks for music information retrieval
DESCRIPTION
Tutorial that I gave in ISMIR conference in 2004. I shared the tutorial with G. Tzanetakis but this presentation includes only my part.TRANSCRIPT
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