Sliding-Window Pitch-Class Histograms as a Means of Modeling Musical Form
This is supplementary code for the TISMIR paper Sliding-Window Pitch-Class Histograms as a Means of Modeling Musical Form,
This repository contains the following:
-
Preprocessing code (
process/*
,analyze/prepare_pieces.py
), which reads MusicXML files and produces sliding-window pitch-class histogram vectors, as described in the paper. The data itslef is not included; it consists of Mozart's piano sonata movements as obtained from DCML, with minor adjustments detailed in the paper, as well as Beethoven's piano sonata movements, adapted from musescore.com. -
Preprocessed binary databases for the nine configurations of hyper-parameters described in the paper, as well as for the static histogram configuraion (
db/*.p
). These are the exact outputs of the preprocessing code over the dataset as described in the paper. -
Metadata for all movements in the dataset, including detailed form labels (
metadata/*
). -
Analysis functionality, applying SVM and ANN classification, and GMM clustering (
analyze/analyze.py
). -
Visualization and basic dataset statistics (
visualize/*
,analyze/analyze.py
,analyze/stats.py
).
The main entry point is analyze/analyze.py
, which includes at the bottom commented calls to the analyses presented in the paper, and also to the code generating most of the figures. To perform analysis, uncomment any of these and run.
A separate entry pont, analyze/stats.py
, is used for analyzing the various pitch classes appearing across the corpus.
Dependencies
The code requires Python 3 (probably >= 3.6 would suffice) with the following libraries installed:
- music21 (for preprocessing)
- SciPy (including
scikit-learn
andmatplotlib
) (for analysis and visualization)