  Algorithmic harmonization - the automated harmonization of a musical piece
given its melodic line - is a challenging problem that has garnered much
interest from both music theorists and computer scientists. One genre of
particular interest is the four-part Baroque chorales of J.S. Bach. Methods for
algorithmic chorale harmonization typically adopt a black-box, "data-driven"
approach: they do not explicitly integrate principles from music theory but
rely on a complex learning model trained with a large amount of chorale data.
We propose instead a new harmonization model, called BacHMMachine, which
employs a "theory-driven" framework guided by music composition principles,
along with a "data-driven" model for learning compositional features within
this framework. As its name suggests, BacHMMachine uses a novel Hidden Markov
Model based on key and chord transitions, providing a probabilistic framework
for learning key modulations and chordal progressions from a given melodic
line. This allows for the generation of creative, yet musically coherent
chorale harmonizations; integrating compositional principles allows for a much
simpler model that results in vast decreases in computational burden and
greater interpretability compared to state-of-the-art algorithmic harmonization
methods, at no penalty to quality of harmonization or musicality. We
demonstrate this improvement via comprehensive experiments and Turing tests
comparing BacHMMachine to existing methods.
