Counterpoint Solver

This program was originally commissioned by one of my music theory professors to create melodic lines that would be invertable at the 10th. For those of you not vexxed in counterpoint or music theory this is a considerable task. Writing music that inverts at the 10th is tricky because of specific rules and limitations on controlling consonance and dissonance in the traditional style Bach would have written in. My professor thought because these limitations constrain the composition processes so much a program could create every single possible musical line that can invert with a given line. I originally wrote the program in C++ and it was command line only. I've since ported it to C# and .NET and given it a graphical interface. It accepts and outputs only MusicXML files, an open file format created by MakeMusic, the creators behind music notation software Finale. MusicXML files are compatible with most major music notation software, including Finale, Sibelius, and MuseScore.

Instructions for the current version: Select the input file, it MUST be an uncompressed MusicXML file. The current standard designates the file extension as .musicxml but uncompressed files may appear as other extensions. Select a folder to contain the solutions generated by the program. (I recommend the folder be empty, the program creates a lot of files. Choose a naming scheme for all of the files, i.e. entering "example" will give the files names such as "example1", "example2", "example3" ect. Settings currently allows you to change the range of notes the program can choose from to create its solution.

Requires .NET Runtime version 4.7.2