Hello. I just found a nice trick and I thought it would be nice to
share it. (I'm aware someone somewhere at some time must have found
this before me!)
I heard it's interesting, when you're changing key, to only change one
note in order to preserve continuity.
I found a way to calculate the number of notes that are the same
between different keys of the same scale.
I use bit strings to represent a scale and build a symmetric matrix by
rotating the bit string left on each line.
Here's the symmetric matrix for the major scale :
1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1
0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 1
1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0
0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1
1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0
1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1
0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 1
1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 1 , 0
0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1
1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0
0 , 1 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1
1 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0
Then, I multiply that matrix by itself. Here's the result again for
the major scale :
7 , 2 , 5 , 4 , 3 , 6 , 2 , 6 , 3 , 4 , 5 , 2
2 , 7 , 2 , 5 , 4 , 3 , 6 , 2 , 6 , 3 , 4 , 5
5 , 2 , 7 , 2 , 5 , 4 , 3 , 6 , 2 , 6 , 3 , 4
4 , 5 , 2 , 7 , 2 , 5 , 4 , 3 , 6 , 2 , 6 , 3
3 , 4 , 5 , 2 , 7 , 2 , 5 , 4 , 3 , 6 , 2 , 6
6 , 3 , 4 , 5 , 2 , 7 , 2 , 5 , 4 , 3 , 6 , 2
2 , 6 , 3 , 4 , 5 , 2 , 7 , 2 , 5 , 4 , 3 , 6
6 , 2 , 6 , 3 , 4 , 5 , 2 , 7 , 2 , 5 , 4 , 3
3 , 6 , 2 , 6 , 3 , 4 , 5 , 2 , 7 , 2 , 5 , 4
4 , 3 , 6 , 2 , 6 , 3 , 4 , 5 , 2 , 7 , 2 , 5
5 , 4 , 3 , 6 , 2 , 6 , 3 , 4 , 5 , 2 , 7 , 2
2 , 5 , 4 , 3 , 6 , 2 , 6 , 3 , 4 , 5 , 2 , 7
The cell aij (row i, column j) is the number of notes that are the
same between the key i and j.
Notice how the diagonal is equal to the number of notes in the scale
because a particular key is the same as itself.
Which would mean you could apply this method even to different scale spaces
just by multiplying their matrix representations.
It would be interesting to plot the resulting matrices visually using a
color gradient between min..max values and see what kind of patterns you
will get.
Kind regards,
Tony
> I use bit strings to represent a scale and build a symmetric
> matrix by rotating the bit string left on each line.
>