Neo-Riemannian Transformations Algorithm

I was just working on a different problem and realized it could be applied to Neo-Riemannian transformations in SCAMP. Has anyone else already done this?

For example, get from CM(C-E-G) to AM(C#-E-A) in two steps = RP. My SCAMP-related-compositional interest here is list how to get from C-E-G to C#-E-A in all combinations that take less than 100 steps, etc. I am not too fussy about inversions here.

If no one has done this and I finish this, I will post. Cheers!

Hi, engartst. I just saw your post. This sounds fun (as well as useful).

A few questions:

  • Have you already implemented this?
  • Do you want to allow only single transformations?
  • Do you want to allow augmented triads?

Ideally, one could input any scale degrees of the first chord, and those of the last chord, and the algorithm would return two lists:

  • ALL possible paths
  • The shortest path(s) in terms of the # of single transformations

For the last one, it seems that Dijkstra’s shortest path algorithm would be good to use (esp. if you wanted to assign weights to the different types of chords; for example, if you wanted primarily major chords, fewer minor chords, and even fewer aug chords, you could assign them weights of 3, 2, 1 or something).

Let me know how you’re getting on with this and your specific goals!

Good luck!

David Collett
Seattle