# Generator complexity

## Definition

Suppose *A* = ⟨0 *a*_{3} *a*_{5} *a*_{7} … *a*_{p}] is the generator mapping val for a rank-2 temperament with *P* periods to the octave, and *B* = ⟨0 *b*_{3} *b*_{5} *b*_{7} … *b*_{p}] 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/log_{2}(3) -2/log_{2}(5) -2/log_{2}(7)] ≅ ⟨0 0.631 -0.831 -0.712] is the val in weighted coordinates. For any vector **v**, let

[math]\displaystyle \operatorname {span}(\vec v) = \max(\vec v) - \min(\vec v)[/math]

The **generator complexity** of the temperament is

[math]\displaystyle P \cdot \operatorname {span}(B)[/math]

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) = log_{2}(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** = [*m*_{2} *m*_{3} *m*_{5} … *m*_{p}⟩ is a vector with weighted coordinates in interval space, then KE(**m**), the Kees expressibility of **m**, is (|*m*_{3} + *m*_{5} + … + *m*_{p}| + |*m*_{3}| + |*m*_{5}| + … + |*m*_{p}|)/2. The "2" coordinate, *m*_{2}, plays no role in Kees expressibility, so we may replace it with anything we choose. If we replace it with -*e*_{3} - *e*_{5} - … - *e*_{p}, we may define expressibility in terms of the *L*_{1} norm, as ‖ [-*e*_{3}-*e*_{5}-…-*e*_{p} *e*_{3} *e*_{5} … *e*_{p}⟩ ‖/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 *L*_{1} 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 *L*_{1} 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*‖_{∞} = 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*_{3} *b*_{5} *b*_{7} … *b*_{p}] 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*) = sqrt (*₱*(*V*)∙*₱*(*V*) / dim(*V*)), where dim(*V*) is the dimension of *V* and the "⋅" denotes the dot product. If *M* = [*M*_{0}, *M*_{1}]^{T} is the mapping matrix in weighted coordinates in the standard normal val list form, then we may express STD complexity as STDcom(*M*) = *M*_{0}[1]⋅STD(*M*_{1}).

Associated to STD complexity is STD error. If *S* = *₱*(*M*_{0}) ∧ ₱(*M*_{1}), then STDerr(*M*) = sqrt(*S*∙*S* / dim(*M*_{1})⋅*₱*(*M*_{1})∙₱(*M*_{1})).