harmonic_analysis

View on GitHub

Workflow Overview

In main.py, there are many parameters to customize regarding the analytical styles, types of machine learning models, model architectures, and hyper-parameters. I will provide a chart introducing all the available combinations of these parameters in the section of “Parameter Adjustment”.

For now, the project can accept Bach chorales, and the corresponding annotations from here based on my co-authored paper with Nathaniel Condit-Schultz called “A Flexible Approach to Automated Harmonic Analysis: Multiple Annotations of Chorales by Bach and Praetorius”, where the music and annotations are encoded in .krn files. Afterward, a series of functions are applied to pre-process the data to feed the machine learning models as inputs and outputs for training, and then the model will predict non-chord tones and the corresponding chord labels on the test set, presented as musicXML files for users to see the end results. Specifically, in the script of main.py: