Code Architecture - mtpearce/idyom GitHub Wiki
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