Kees space and Kees tuning

The Kees metric, named for Kees van Prooijen, is a way of measuring distance between pitch classes in a way analogous to the manner in which the Tenney metric does this for just intonation pitches. This page presupposes understanding of the page on
TOP tuning, but before getting to matters which are directly analogous, let us consider the symmetrical Euclidean lattice An for pitch classes.

Consider the integer lattice which consists of all vectors in real n+1 dimensional space whose coordinates are all integral, under the usual metric. The sublattice of lattice points whoose coordinates sum to zero, lying in the subspace x0+x1+...+xn = 0, is the n-dimensional lattice An. Since x0 = -x1-x2-...-xn, the usual Euclidean norm restricted to this subspace can be based on the quadratic form

(x1^2 + x2^2 + ... + xn^2 + (x1+x2+...+xn)^2)/2 = sum xi^2 + sum xi xj.

Hence, for instance, in three dimensions we get x1^2+x2^2+x3^2+x1x2+x1x3+x2x3. If these are the 3, 5, and 7 exponents for a 7-limit pitch class, we get the 7-limit symmetrical lattice of pitch classes. This lattice gives an equal size to all prime numbers, which after 7 includes primes larger than some odd composite numbers. We can adjust for the size of the primes by scaling by the logarithm base two, so that e0=x0, e1=x1/log2(3) and so forth. Then from x0+x1+...+xn = 0 we obtain e0 + log2(3)e1 + ... + log2(p)en = 0, where p is the nth prime. Lattice points other than the origin based on integer values of ei no longer lie on this subspace, but can come arbitarily close to it. If we consider the ei to be exponents of primes, the subspace condition tells us that points in the subspace evaluate to unisons. While they do not represent rational numbers, we have points on the subspace where every ei except for e0 is an integer, and these we may identify with pitch classes. We therefore obtain a metric on pitch classes.

We may do something precisely analogous starting from other vector space norms. Using the L1 norm, we may define a symmetrical lattice norm on pitch classes by

|| |* x1 ... xn> || = (|x1| + |x2| + ... + |xn| + |x1+x2+...+xn|)/2

Just as before, we may change coordinates to ei rather than x1, and obtain

|| |* e1 e2 ... en> || = (log2(3)|e1| + log2(5)|e2| + ... + log2(p)|en| +|log2(3)e1+...+log2(p)en|)/2

This norm, Kees expressibility, bears much the same relationship to pitch classes as the Tenney norm does to pitches. It is equivalent to taking that representative of a pitch class which is a ratio of odd integers, reduced to lowest terms, and then taking the log base two of the larger of the numerator or the denominator. This is becasue if N is the numerator and D is the denominator, then |log2(3)e1 + ... + log2(p)en| is log2(N/D) if N is larger than D, or log2(D/N) if D is larger than N. Then the result will be the log of the square root of ND N/D = N^2 or ND D/N = D^2 depending on which is larger, hence either log2(N) or log2(D).

By definition, the dual metric is defined on vals as the maximum value attained on a unit ball. The unit Kees ball has verticies consisting of |... +-1/log2(p) ...>; that is with one coordinate cooresponding to the odd prime p +-1/log2(p), and the rest zero, or |... +-1/log2(p) ... -+1/log2(q) ...>, that is, with opposite signs on the coordinates for two odd primes p and q. In terms of the version expressed via e0 = -log2(3)e3-...-log2(p)en, we can write this as |...+-1/log2(p)...-+1/log2(q)...> in all cases, where p may now be 2. Evaluating a point in val space lying in the "flat"--that is, the translated subspace--whose first coordinate is 1 on these verticies, and taking the maximum, gives us a distance measure for vals in this flat from the JIP. This measure is on such a val <1 x2 x3 ... xp| is max(|xn/log2(pn)-1|, |xn/log2(pn) - xm/log2(pm)|), where the maximum is taken over all odd primes pn, and all pairs of odd primes pn, pm, and where xn, xm are the cooresponding val space coordiante values, that is, the numbers the point in val space (linear functional) maps the prime pn, pm to. As before we can set this up as a linear programming problem and solve to quickly determine a numerical answer.