back to list

Finity of parametric badness

🔗Graham Breed <gbreed@gmail.com>

3/9/2008 9:17:30 PM

I gave a badness function in http://x31eq.com/primerr.pdf that you could write as

B**2 = det(<M|A_k|M> + (1 - epsilon**2)<M|A_B - A_k|M>)
------------------------------------------------
<H|A_k|H>

Where B**2 is badness squared, |M> is the mapping with each equal mapping as a column vector, A_k is a metric giving scalar complexity, epsilon**2 is a small parameter, A_B is a metric giving scalar badness, det() is the determinant, |H> is a column vector with logs of primes, and a bra <..| is the transpose of a ket |..>.

That can be rearranged to give

B**2 = det(<M|A_k|M>epsilon**2 + <M|A_B|M>(1-epsilon**2))
--------------------------------------------------
<H|A_k|H>

Because complexity is generally much larger than the badness (as errors are much smaller than an octave) the parameter on the second term can be ignored:

B**2 ~ det(<M|A_k|M>epsilon**2 + <M|A_B|M>)
------------------------------------
<H|A_k|H>

More strictly, take out the common factor of (1-epsilon**2)

B**2 ~ det(<M|A_k|M>E_k**2 + <M|A_B|M>)
(1-epsilon**2) . --------------------------------
<H|A_k|H>

Where

E_k**2 = epsilon**2/(1-epsilon**2)

is a parameter similar to epsilon**2. That means the following badness is as good as what we started with:

B(E_k)**2 = det(<M|A_k|M>E_k**2 + <M|A_B|M>)
--------------------------------
<H|A_k|H>

For equal temperaments, the determinant is redundant, so this is

B(E_k)**2 = <M|A_k|M>E_k**2 + <M|A_B|M>
----------------------------
<H|A_k|H>

The metrics are defined so that <M|A_k|M>/<H|A_k|H> is scalar complexity and <M|A_B|M>/<H|A_k|H> is scalar badness. That means

B(E_k)**2 = k E_k**2 + B

where k is scalar complexity and B is now the plain badness with epsilon or E_k as zero.

Now, assume there's a perfect equal temperament out there with an error of zero. As scalar badness is error*complexity, its parametric badness is

B(E_k)**2 = k E_k**2

Hence the parameter adds a residual badness for zero errors. That means if you want all equal temperaments with a badness below a given threshold, you can easily set a threshold for the complexity

B_max(E_k)**2 <= k_max E_k**2

k_max >= B_max(E_k)**2 / E_k**2

If errors and complexities are standard deviations instead of RMSs, the complexity is the same as the number of notes to the octave, d. So the most complex possible equal temperament in the given badness range will have

d_max = floor(B_max(E_k)**2 / E_k**2)

The scalar complexity will be slightly different to the STD complexity, but as this temperament's supposed to have a very small error, you could safely say

d_max = round(B_max(E_k)**2 / E_k**2)

for the general case.

All this is to show that there really is a finite number of temperament classes below a reasonable parametric badness threshold, provided epsilon or E_k is above zero. I said before that I couldn't prove it. For higher rank temperaments there's a bit of hand-waving involved, saying that the badness of a rank r temperament will be roughly the product of the badnesses of its best r equal temperament instances. Maybe I'll deal with that more thoroughly one day.

Note that the name E_k is to show that the parameter has dimensions of weighted error and is paired with complexity. You can think of it as the worst error in temperaments you're interested in because better temperaments will be scored roughly the same as perfect ones.

Graham

🔗Graham Breed <gbreed@gmail.com>

3/9/2008 10:33:32 PM

I wrote:
> The metrics are defined so that <M|A_k|M>/<H|A_k|H> is scalar complexity > and <M|A_B|M>/<H|A_k|H> is scalar badness. That means
> > B(E_k)**2 = k E_k**2 + B

Bracketed operators should define the squares of measures, so that should have been

B(E_k)**2 = k**2 E_k**2 + B**2

For the residual badness it gets simpler

B(E_k) = k * E_k

and it follows through for the other equations I gave

B_max(E_k) <= k_max E_k

k_max >= B_max(E_k) / E_k

d_max = floor(B_max(E_k) / E_k)

d_max = round(B_max(E_k) / E_k)

(Note that E_k don't cancel out because the parentheses are for "function of".)

Graham