ATTENTION/WARNING - NE PAS DÉPOSER ICI/DO NOT SUBMIT HERE

Ceci est la version de TEST de DIAL.mem. Veuillez ne pas soumettre votre mémoire sur ce site mais bien à l'URL suivante: 'https://thesis.dial.uclouvain.be'.
This is the TEST version of DIAL.mem. Please use the following URL to submit your master thesis: 'https://thesis.dial.uclouvain.be'.
 

FuxCP : a constraint programming formalization of Fux’s musical theory of four-voice counterpoint

(2024)

Files

Cleenewerk_15551800_dePatoul_30701900_2024.pdf
  • Open access
  • Adobe PDF
  • 5.23 MB

Details

Supervisors
Faculty
Degree label
Abstract
This thesis presents a constraint-based formalization of four-voice musical counterpoint according to the classical theory established by Johann Joseph Fux in his 1725 treatise Gradus ad Parnassum. It builds upon the theses of Thibault Wafflard and Anton Lamotte, which provided first formalizations of two and three voice counterpoint, respectively. This thesis presents a unified and completed set of mathematical rules for composing four-voice counterpoint, and a C++ constraint programming implementation of this theoretical framework using the Gecode solver. The resulting software is FuxCP, a tool meant to assist composers in writing counterpoint in the style of Fux. An interface to the C++ implementation is provided in OpenMusic, a musical composition environment based on Common Lisp. The research emphasizes the advantages of constraint programming in the context of music formalization over other approaches such as machine learning. It argues that constraint programming provides transparency and flexibility, and guarantees adherence to Fux's rules, which other methods may lack. This thesis also demonstrates the applicability of Fux's theory to an inheritance-based object-oriented implementation, while acknowledging that this paradigm can only approximate the sophisticated reality of the theory. The implemented inheritance-based structure contributes to a considerably more elegant and robust code. After presenting examples of the generated compositions, the thesis concludes by discussing the current limitations of FuxCP and proposing directions for future improvements. It emphasizes that while this work represents a crucial step in modelization, an optimization effort is now necessary to effectively navigate the vast search space and guide the solver towards optimal solutions.