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:
    –   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.
General Classification of 
Audio/Music Environments
Classification of MIR­related 
        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

Software Frameworks for Music Information Retrieval

  • 1.
    Software Frameworks for MIR Because Code also Matters... ISMIR 2004 Xavier Amatrian
  • 2.
    The value of implementation ● Code is documentation ● Code is publication ● Code is test ● Code is prove of concept
  • 3.
    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
  • 4.
    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.
  • 5.
    Frameworks, libraries, applications  (II) ● 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.
  • 6.
    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.
  • 7.
  • 8.
  • 9.
    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
  • 10.
    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
  • 11.
    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
  • 12.
    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