back to list

TE weighting for subgroups with fractional bases?

🔗Mike Battaglia <battaglia01@gmail.com>

4/28/2011 11:54:32 PM

Let's take a look at Biome, the rank 3 2.3.7.13/10 temperament
eliminating 91/90:

http://x31eq.com/cgi-bin/rt.cgi?ets=22p+27p+46p&limit=2.3.7.13/10

That tuning map should look awful weird...

<1200.000, 1907.273, 3360.484, 454.062]

And so it is. We have a near-perfect 13/10, within 0.2 cents of
perfect, but 7/1 is 7 cents flat. This is no good.

My own POTE code, which I just wrote thanks to Graham's help, exhibits
the same bug, so I know what the deal is: it's setting the weighting
for 13/10 equal to 1/log2(13/10). So since 13/10 is small, it weights
it even more strongly than 2/1. Changing the subgroup to 13/5 is a
little better, 26/5 even more so, etc.

So the question is, how should we weight fractions like this? Is there
some way to utilize the L2 norm to work it out? This problem doesn't
come up with "primes" like 9 or 15, but it sure as hell comes up for
13/10. Graham has suggested using temperamental complexity as a
starting point, although I don't understand all the details of that.

-Mike

🔗Graham Breed <gbreed@gmail.com>

4/29/2011 1:37:46 AM

Mike Battaglia <battaglia01@gmail.com> wrote:

> My own POTE code, which I just wrote thanks to Graham's
> help, exhibits the same bug, so I know what the deal is:
> it's setting the weighting for 13/10 equal to
> 1/log2(13/10). So since 13/10 is small, it weights it
> even more strongly than 2/1. Changing the subgroup to
> 13/5 is a little better, 26/5 even more so, etc.
>
> So the question is, how should we weight fractions like
> this? Is there some way to utilize the L2 norm to work it
> out? This problem doesn't come up with "primes" like 9 or
> 15, but it sure as hell comes up for 13/10. Graham has
> suggested using temperamental complexity as a starting
> point, although I don't understand all the details of
> that.

What you can do is list every interval you're interested in
as a vector in terms of this subgroup. Then, put those
vectors into a matrix. Multiply that matrix by its
transpose to get a 4x4 matrix. This is the Gram matrix
that defines an inner product. Hopefully, it's the
"observation covariance matrix" that Matlab's lscov wants
for a general least-squares computation. I can't check
that because I don't have Matlab.

If you don't have a list of interesting intervals, the
first thing is to define the subgroup in terms of the
13-limit:

subgroup =
[1,0,0,0,0,0;0,1,0,0,0,0;0,0,0,1,0,0;0,0,-1,0,0,1];

Tenney weight it to give this weighted mapping matrix that
I'll call M:

[1.000000000000000000000000000 0 0 0 0 0]

[0 0.6309297535714574370995271143 0 0 0 0]

[0 0 0 0.4306765580733930506701065688 0 0]

[0 0 -0.3562071871080221765141770780 0 0
0.3562071871080221765141770780]

You can multiply M by its transpose to give a Gram matrix.
In Pari/GP, this is M~*M. In Matlab, it seems to be M'*M.
The result is:

[1.000000000000000000000000000 0 0 0]

[0 0.3980723539417400086049989598 0 0]

[0 0 0.1268835601474095202711337558 0]

[0 0 0 0.2585109577822286091855855181]

This happens to be the same as temperamental complexity.
To get an interval complexity metric, you'd take the
inverse. But for rating mappings you don't need that. If
you're using a formula that requires weighted mappings, you
can take the square roots of the diagonals to use as
weights.

That 0.259 is, in fact, (log(2)/log(5))^2 +
(log(2)/log(13))^2.

You could have chosen your subgroup with 13/10 instead of
13/5.

subgroup2 =
[1,0,0,0,0,0;0,1,0,0,0,0;0,0,0,1,0,0;-1,0,-1,0,0,1];

That leads to a weighted Gram matrix of

[1.000000000000000000000000000 0 0
-1.000000000000000000000000000]

[0 0.3980723539417400086049989598 0 0]

[0 0 0.1268835601474095202711337558 0]

[-1.000000000000000000000000000 0 0
1.258510957782228609185585518]

The -1 elements in the off-diagonals tell you that 13/10
isn't atomically complex, and could be replaced with 13/5.

Graham

🔗Mike Battaglia <battaglia01@gmail.com>

4/30/2011 4:59:14 AM

On Fri, Apr 29, 2011 at 4:37 AM, Graham Breed <gbreed@gmail.com> wrote:
>
> This happens to be the same as temperamental complexity.
> To get an interval complexity metric, you'd take the
> inverse. But for rating mappings you don't need that. If
> you're using a formula that requires weighted mappings, you
> can take the square roots of the diagonals to use as
> weights.

Alright. That makes sense. I also notice that 0.259, which as you said
is the value this spits out, is very close to 1/log2(78/5). So I guess
for the purposes of using your temperament finder, 2.3.7.78/5 is the
way to go.

-Mike