Towards a Practical Tool for Music Composition: Using Constraint Programming to Model Chord Progressions and Modulations | Synapse