Grrr. Baaad program. But I’m putting it up anyway, because it’s not *that* bad.
Basically, say we had a scale, and a gradus suavitatus on that, a measure of consonance, so that given any two intervals, you can say if one is more consonant than the other. Now given two scales, it might be a worthwhile thing to look for things that preserve relative consonance; that is to say, a function f from one scale to another will have to satisfy the rule a>b => f(a)>f(b).
So, I wrote a program to do it. No interface yet, it’s to be run from within ghci; specific details of how to use it are given (in a very rambling sort of way) at the top of the source code. It seemed like it might be most useful in looking for interesting transformations of melodic motives that have a small number of notes. However, I can’t say I have been able to do anything useful with it, alas.
For an example of the program’s output, see this file:
Harmony-preserving maps example ( ps | pdf ).
For the code itself, here’s the source file:
Harmony Preserving Maps Generator V0.1 ( hs )
So yeah. Out.