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.

The Strasheela series

  1. Computational composition: the kick start
  2. Installing the Mozart Programming System
  3. Installing Strasheela
  4. Development of the Fuxian counterpoint project is now available at GitHub
  5. Struggling with Oz
  6. Counterpoint in Gregorian modes