Generator complexity: Difference between revisions

m Improve wiki markup (2/2)
m Linking; style; recategorize; +todo
Line 1: Line 1:
__FORCETOC__
__FORCETOC__
== Definition ==
== Definition ==
Suppose ''A'' = {{val| 0 ''a''<sub>3</sub> ''a''<sub>5</sub> ''a''<sub>7</sub> … ''a''<sub>''p''</sub> }} is the generator mapping val for a rank two temperament with ''P'' periods to the octave, and ''B'' = {{val| 0 ''b''<sub>3</sub> ''b''<sub>5</sub> ''b''<sub>7</sub> … ''b''<sub>''p''</sub> }} is the same val in weighted coordinates. For instance, {{val| 0 1 -2 -2 }} is the generator mapping val for seven limit [[pajara]], and {{val| 0 1/log<sub>2</sub>(3) -2/log<sub>2</sub>(5) -2/log<sub>2</sub>(7) }} ≅ {{val| 0 0.631 -0.831 -0.712 }} is the val in weighted coordinates. For any vector '''v''', let span('''v''') = max('''v''') - min('''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.  
Suppose ''A'' = {{val| 0 ''a''<sub>3</sub> ''a''<sub>5</sub> ''a''<sub>7</sub> … ''a''<sub>''p''</sub> }} is the generator mapping [[val]] for a [[rank-2 temperament]] with ''P'' [[period]]s to the [[octave]], and ''B'' = {{val| 0 ''b''<sub>3</sub> ''b''<sub>5</sub> ''b''<sub>7</sub> … ''b''<sub>''p''</sub> }} is the same val in weighted coordinates. For instance, {{val| 0 1 -2 -2 }} is the generator mapping val for seven limit [[pajara]], and {{val| 0 1/log<sub>2</sub>(3) -2/log<sub>2</sub>(5) -2/log<sub>2</sub>(7) }} ≅ {{val| 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 semi-height|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<sub>2</sub>(5). In pajara, G(5/4) = 4 also, since two generator steps are required to get to 5/4 (5/4 = (4/3)<sup>2</sup> ⋅ 45/64), and ''P'' = 2, so that G(5/4) = 2×2.
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 semi-height|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<sub>2</sub>(5). In pajara, G(5/4) = 4 also, since two generator steps are required to get to 5/4 (5/4 = (4/3)<sup>2</sup> ⋅ 45/64), and ''P'' = 2, so that G(5/4) = 2×2.
Line 7: Line 15:
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'') &gt; 0. A related definition can be extended to higher ranks: since the [[Tenney-Euclidean metrics #Octave equivalent TE seminorm|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'').
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'') &gt; 0. A related definition can be extended to higher ranks: since the [[Tenney-Euclidean metrics #Octave equivalent TE seminorm|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 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 ==
== Generator complexity and Kees expressibility ==
The following proof is due to Mike Battaglia.
The following proof is due to [[Mike Battaglia]].


If '''m''' = {{monzo| ''m''<sub>2</sub> ''m''<sub>3</sub> ''m''<sub>5</sub> … ''m''<sub>''p''</sub> }} is a vector with weighted coordinates in interval space, then KE('''m'''), the Kees expressibility of '''m''', is (|''m''<sub>3</sub> + ''m''<sub>5</sub> + … + ''m''<sub>''p''</sub>| + |''m''<sub>3</sub>| + |''m''<sub>5</sub>| + … + |''m''<sub>''p''</sub>|)/2. The "2" coordinate, ''m''<sub>2</sub>, plays no role in Kees expressibility, so we may replace it with anything we choose. If we replace it with -''e''<sub>3</sub> - ''e''<sub>5</sub> - … - ''e''<sub>''p''</sub>, we may define expressibility in terms of the ''L''<sub>1</sub> norm, as ‖ {{monzo| -''e''<sub>3</sub>-''e''<sub>5</sub>-…-''e''<sub>''p''</sub>  ''e''<sub>3</sub>  ''e''<sub>5</sub> … ''e''<sub>''p''</sub> }} ‖/2.
If '''m''' = {{monzo| ''m''<sub>2</sub> ''m''<sub>3</sub> ''m''<sub>5</sub> … ''m''<sub>''p''</sub> }} is a vector with weighted coordinates in interval space, then KE('''m'''), the Kees expressibility of '''m''', is (|''m''<sub>3</sub> + ''m''<sub>5</sub> + … + ''m''<sub>''p''</sub>| + |''m''<sub>3</sub>| + |''m''<sub>5</sub>| + … + |''m''<sub>''p''</sub>|)/2. The "2" coordinate, ''m''<sub>2</sub>, plays no role in Kees expressibility, so we may replace it with anything we choose. If we replace it with -''e''<sub>3</sub> - ''e''<sub>5</sub> - … - ''e''<sub>''p''</sub>, we may define expressibility in terms of the ''L''<sub>1</sub> norm, as ‖ {{monzo| -''e''<sub>3</sub>-''e''<sub>5</sub>-…-''e''<sub>''p''</sub>  ''e''<sub>3</sub>  ''e''<sub>5</sub> … ''e''<sub>''p''</sub> }} ‖/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*.
For any {{w|vector space}} X with a {{w|Linear subspace|subspace}} A, we may define a {{w|Quotient space (linear algebra)|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 {{w|Dual space #Quotient spaces and annihilators|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*.
Now suppose X is a finite dimensional real {{w|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''<sub>1</sub> 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''<sub>1</sub> norm, and hence X* has a norm of twice the ''L''<sub>∞</sub> 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''‖<sub>∞</sub> = 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.
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''<sub>1</sub> 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''<sub>1</sub> norm, and hence X* has a norm of twice the ''L''<sub>∞</sub> 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''‖<sub>∞</sub> = 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 ==
== STD complexity ==
If ''B'' = {{val| 0 ''b''<sub>3</sub> ''b''<sub>5</sub> ''b''<sub>7</sub> … ''b''<sub>''p''</sub> }} 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]] {{val| 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''<sub>0</sub>, ''M''<sub>1</sub>]<sup>T</sup> is the [[Temperament mapping matrices|mapping matrix]] in weighted coordinates in the standard [[Normal lists #Normal val lists|normal val list]] form, then we may express STD complexity as STDcom(''M'') = ''M''<sub>0</sub>[1]⋅STD(''M''<sub>1</sub>).
If ''B'' = {{val| 0 ''b''<sub>3</sub> ''b''<sub>5</sub> ''b''<sub>7</sub> … ''b''<sub>''p''</sub> }} 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 {{w|standard deviation}}. If ''μ''(''V'') is the mean of the components of the vector ''V'', and ''J'' is the [[JIP]] {{val| 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''<sub>0</sub>, ''M''<sub>1</sub>]<sup>T</sup> is the [[Temperament mapping matrices|mapping matrix]] in weighted coordinates in the standard [[Normal lists #Normal val lists|normal val list]] form, then we may express STD complexity as STDcom(''M'') = ''M''<sub>0</sub>[1]⋅STD(''M''<sub>1</sub>).


Associated to STD complexity is STD error. If ''S'' = ''₱''(''M''<sub>0</sub>) ∧ ₱(''M''<sub>1</sub>), then STDerr(''M'') = sqrt(''S''∙''S'' / dim(''M''<sub>1</sub>)⋅''₱''(''M''<sub>1</sub>)∙₱(''M''<sub>1</sub>)).
Associated to STD complexity is STD error. If ''S'' = ''₱''(''M''<sub>0</sub>) ∧ ₱(''M''<sub>1</sub>), then STDerr(''M'') = sqrt(''S''∙''S'' / dim(''M''<sub>1</sub>)⋅''₱''(''M''<sub>1</sub>)∙₱(''M''<sub>1</sub>)).


[[Category:Math]]
[[Category:Temperament complexity measures]]
[[Category:Generator]]
[[Category:Generator]]
[[Category:Math]]
[[Category:Theory]]


[[Category:todo:add examples]]
{{Todo| add examples | intro }}