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.