Skip to content
mtpearce edited this page May 14, 2020 · 1 revision

Architecture

Directory Structure

The layout of the code is as follows:

  • README
  • COPYING
  • thesis.pdf
  • idyom.asd: the system definition
  • utils/: general-purpose utilities
    • package.lisp
    • utils.lisp
  • database/: a database interface for storing symbolically encoded music
    • package.lisp
    • generics.lisp
    • music-data.lisp
    • examples/
    • data-import/: modules for importing data from different formats to the database
    • data-export/: modules for exporting data from the database to different formats
  • music-objects/: a representation system for music objects that sits on top of the database
    • package.lisp
    • extended-sequence.lisp
    • time.lisp: general-purpose functionality for modelling time and temporal relations
    • music-objects.lisp: flexible and general representation of musical phenomena as objects
    • midi.lisp: allows export of music objects as midi files
  • viewpoints/: viewpoint representations and functionality
    • viewpoint-extensions.lisp: extensions to the viewpoint framework useful for modelling
  • ppm-star/: the PPM* implementation
    • package.lisp
    • generics.lisp
    • ppm-star.lisp
    • ppm-io.lisp
    • ppm-ui.lisp
  • mvs/: the multiple-viewpoint system modelling framework
    • params.lisp: user-level parameters to the statistical modelling
    • multiple-viewpoint-system.lisp: modelling with multiple-viewpoints
    • prediction-sets.lisp: representing and combining distributions, computing entropy and information content
  • apps/: top-level applications for users
    • package.lisp
    • apps.lisp: pathnames and filenames for saving data and results
    • main.lisp: top-level code for using the system
    • resampling.lisp: the main user interface - estimating information content by cross-validation
    • viewpoint-selection.lisp: on tin does it says the what
    • similarity.lisp: modelling similarity using compression distance
    • segmentation.lisp: inferring phrase boundaries for melodic segmentation
    • generation.lisp: code for generating melodies
    • key-finding.lisp: key-finding using the Krumhansl-Schmuckler key-finding algorithm
  • testing/: testing framework using FiveAM
    • package.lisp
    • main.lisp: the main test framework
    • ppm-tests.lisp: tests for the PPM module
    • resampling-tests.lisp: tests for the resampling app