In case you wish to follow my progress with Strasheela and implementing Fuxian counterpoint in it, there is one place to go: github.com/pbelmans/FuxianCounterpoint. For the moment it is only capable of:
- staying in the correct scale;
- choosing intervals from a given list (but unlike the example from Strasheela, it is capable of distinguishing between ascending and descending intervals!);
- doing this for first-species counterpoint in two voices.
Of course, I am greatly indebted to
$STRASHEELA/examples/Counterpoint-Examples/Fuxian-Counterpoint-with-Scale.oz. And that implementation is far more capable than mine at the moment, but hey, it's a work in progress :).
What I would like to do next is:
- produce a write-up on the melodic rules I intend to use (i.e., translate my course notes and elaborate a little bit);
- implement the strict rules;
- find a way to iterate over multiple solutions and assign scores to them (based on guidelines like: mostly small melodic steps, don't stick to a small range, ...);
- if the preceding point is either a bad idea or computationally / technically infeasible, find a better approach.
Generalizing to other species and more voices is something I plan to do later. As for now, this post was mostly an announcement of the GitHub repository.