editing disabled

Definition | Generator complexity and Kees expressibility | STD complexity


Suppose A = <0 A₃ A₅ A₇ ... Ap| is the generator mapping val for a rank two temperament with P periods to the octave, and B = <0 B₃ B₅ B₇ ... Bp| is the same val in weighted coordinates. For instance, <0 1 -2 -2| is the generator mapping val for seven limit pajara, and <0 1/log2(3) -2/log2(5) -2/log2(7)| ≅ <0 0.631 -0.831 -0.712| is the val in weighted coordinates. For any vector V, let max(V) - min(V) = span(V). The generator complexity of the temperament is P span(B). In the case of pajara, which has two periods to the octave, this would be 2*(0.631 - (-0.861)) = 2.984. This can also be described in terms of the wedgie W of the temperament, as span(2∨W), which is the span of 0 followed by the first n-1 elements of W, where n is the number of primes in the p-limit.

Generator complexity satisfies the inequality, for any p-limit interval I, G(I) ≤ C KE(I), where C is the generator complexity of the temperament, G(I) is the number of generator steps, times P, required to reach the tempered version of I, and KE(I) is the Kees expressibility of I. So for instance, in meantone G(5/4) = 4, since it requires four generator steps to get to 5/4, and KE(5/4) = log2(5). In pajara, G(5/4) = 4 also, since two generator steps are required to get to 5/4 (5/4 = (4/3)^2 * 45/64), and P = 2, so that G(5/4) = 2*2.

This inequality can be used to give an alternative definition of generator complexity: C = sup G(I)/KE(I) over non-octave intervals, where KE(I)>0. A related definition can be extended to higher ranks: since the OETES in the case of a rank two temperament is proportional (albeit with a different proportionality factor for each temperament) to G(I), we can define a complexity measure for any rank of temperament by C = sup OETES(I)/KE(I).

Generator complexity has the nice property that for any MOS of size N, floor(N/(C KE(I))) intervals with pitch class corresponding to I are guaranteed to exist in the MOS. Generator complexity is also useful in making complete searches using the wedgie for temperaments below a certain complexity and badness bounds, allowing for a more efficient search.

Generator complexity and Kees expressibility

The following proof is due to Mike Battaglia.

If m = |m2 m3 m5 ... mp> is a vector with weighted coordinates in interval space, then KE(m), the Kees expressibility of m, is (|m3 + m5+ ... +mp| + |m3| + |m5| + ... + |mp|)/2. The "2" coordinate, m2, plays no role in Kees expressibility, so we may replace it with anything we choose. If we replace it with -e3 -e5-...-ep, we may define expressibility in terms of the L1 norm, as || |-e3-e5-...-ep e3 e5 ... ep> ||/2.

For any vector space X with a subspace A, we may define a quotient space X/A as the equivalence classes of vectors in X where two vectors are equivalent iff their difference lies in A. Then we have a short exact sequence 0 → A → X → X/A → 0. Taking the duals of this gives us 0 → (X/A)* → X* → A* → 0. The annihilator of A is the subspace A⁀ of X* consisting of those functionals f such that <f|A> equals 0; that is, it is the subspace of all the functionals f such that <f|a> equals 0 for every a in A. There is a natural isomorphism between the annihilator A⁀ of A and the dual of the quotient (X/A)*, and also between X*/A⁀ and A*.

Now suppose X is a finite dimensional real normed vector space. A is then also a finite dimensional real normed vector space, inheriting its norm from X, and X/A is a finite dimensional real normed vector space, with a norm given by, for an equivalence class [x], ||[x]|| equals inf {||x + a||, a∈ A}. Algebraically X is (noncanonically) isomorphic to X*, but in general they are no longer isomorphic as normed spaces. Instead, we have the dual norm on X*, defined by setting, over all nonzero x ∈ X, ||f||* = sup <f|x>/||x||. Under the dual norm X* is also a finite dimensional normed vector space, A⁀ is isometrically isomorphic to (X/A)*, and X*/A⁀ is isometrically isomorphic to A*.

In the situation which concerns us, X is the p-limit interval space of dimension n under a norm of one half times the L1 norm, A is a subspace of dimension n-1, whose coordinates sum to 0; hence A can be described as having the one-dimensional subspace A⁀ = {kJ}, where J is the JIP, as its annihilator. X has a norm of half the L1 norm, and hence X* has a norm of twice the L∞ norm. The norm on A* is defined by its isomorphism with X*/A⁀; the minimum defining inf {||f + kJ||} occurs for the value of k where the maximum of f + kJ and minus the minimum of f + kj are the same. In that case, 2||f + kJ||_L∞ = span(f), which is the generator complexity of f. Hence generator complexity is the dual norm for Kees expressibility as a norm on pitch classes.

STD complexity

If B = <0 B₃ B₅ B₇ ... Bp| is the generator mapping val in weighted coordinates, and P is the period, then the STD complexity (a term due to Graham Breed) is P STD(B), where "STD" means the standard deviation. If μ(V) is the mean of the components of the vector V, and J is the JIP <1 1 1 ... 1|, then ₱(V) = V - μ(V)J is the projection of V onto the subspace of vectors with zero mean value. We have STD(V) = √( ₱(V) ∙ ₱(V) / dim(V)), where dim(V) is the dimension of V and the " ∙ " denotes the dot product. If M = [M0, M1] is the mapping matrix in weighted coordinates in the standard normal val list form, then we may express STD complexity as STDcom(M) = M0[1] STD(M1).

Associated to STD complexity is STD error. If S = ₱(M0) ∧ ₱(M1), then STDerr(M) = √(S ∙ S / dim(M1)*₱(M1) ∙ ₱(M1)).