During his lifetime, the Baroque composer J.S. Bach harmonized more than 300 chorale melodies, which collectively have become a pivotal body of music in Western music history and exemplify the composer's groundbreaking compositional techniques. Bach's harmonizations rest upon a series of compositional conventions that musicians today continue to emulate when learning to write in four-part counterpoint. By transforming the chorales into a statistical dataset, this thesis explores the ability of machine learning models to harmonically analyze chorale melodies and generate new harmonizations that exhibit the same compositional conventions Bach pioneered centuries ago.
bach_code
contains all code related to the thesisdrafts
contains the chapters and final thesisexamples
contains examples of a major and minor chorale harmonization, where the predicted harmonization (generated by a Random Forest model) is played side-by-side with Bach's harmonization
More examples will be available here soon.