Generator complexity: Difference between revisions

From Xenharmonic Wiki
Jump to navigation Jump to search
Wikispaces>genewardsmith
**Imported revision 480039846 - Original comment: **
m Readers aren't obligated to see your poor-tasted operation name
 
(22 intermediate revisions by 8 users not shown)
Line 1: Line 1:
<h2>IMPORTED REVISION FROM WIKISPACES</h2>
{{Inacc}}
This is an imported revision from Wikispaces. The revision metadata is included below for reference:<br>
{{Todo|inline=1| intro }}
: This revision was by author [[User:genewardsmith|genewardsmith]] and made on <tt>2013-12-31 16:27:06 UTC</tt>.<br>
__FORCETOC__
: The original revision id was <tt>480039846</tt>.<br>
== Definition ==
: The revision comment was: <tt></tt><br>
{{Todo|inline=1| rework | comment= Try explaining without wedgies. }}
The revision contents are below, presented both in the original Wikispaces Wikitext format, and in HTML exactly as Wikispaces rendered it.<br>
<h4>Original Wikitext content:</h4>
<div style="width:100%; max-height:400pt; overflow:auto; background-color:#f8f9fa; border: 1px solid #eaecf0; padding:0em"><pre style="margin:0px;border:none;background:none;word-wrap:break-word;white-space: pre-wrap ! important" class="old-revision-html">[[toc|flat]]


=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-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
Suppose A = &lt;0 A₃ A₅ A₇ ... Ap| is the generator mapping val for a rank two temperament with P periods to the octave, and B = &lt;0 B₃ B₅ B₇ ... Bp| is the same val in weighted coordinates. For instance, &lt;0 1 -2 -2| is the generator mapping val for seven limit [[pajara]], and &lt;0 1/log2(3) -2/log2(5) -2/log2(7)| ≅ &lt;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 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) = 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.
<math>\displaystyle \operatorname {span}(\vec v) = \max(\vec v) - \min(\vec v)</math>


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#The OETES|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).
The '''generator complexity''' of the temperament is  


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.
<math>\displaystyle P \cdot \operatorname {span}(B)</math>


=Proving the relationship between generator complexity and Kees expressibility=
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.  
The following proof is due to Mike Battaglia.


If m = |m2 m3 m5 ... mp&gt; 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&gt;  ||/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.


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 &lt;f|A&gt; = 0; that is, it is the subspace of all the functionals f such that &lt;f|a&gt; = 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*.
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'').


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]|| = 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 &lt;f|x&gt;/||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*.
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.


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.</pre></div>
== Generator complexity and Kees expressibility ==
<h4>Original HTML content:</h4>
The following proof is due to [[Mike Battaglia]].
<div style="width:100%; max-height:400pt; overflow:auto; background-color:#f8f9fa; border: 1px solid #eaecf0; padding:0em"><pre style="margin:0px;border:none;background:none;word-wrap:break-word;width:200%;white-space: pre-wrap ! important" class="old-revision-html">&lt;html&gt;&lt;head&gt;&lt;title&gt;Generator complexity&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;!-- ws:start:WikiTextTocRule:8:&amp;lt;img id=&amp;quot;wikitext@@toc@@flat&amp;quot; class=&amp;quot;WikiMedia WikiMediaTocFlat&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/flat?w=100&amp;amp;h=16&amp;quot;/&amp;gt; --&gt;&lt;!-- ws:end:WikiTextTocRule:8 --&gt;&lt;!-- ws:start:WikiTextTocRule:9: --&gt;&lt;a href="#Definition"&gt;Definition&lt;/a&gt;&lt;!-- ws:end:WikiTextTocRule:9 --&gt;&lt;!-- ws:start:WikiTextTocRule:10: --&gt; | &lt;a href="#Proving the relationship between generator complexity and Kees expressibility"&gt;Proving the relationship between generator complexity and Kees expressibility&lt;/a&gt;&lt;!-- ws:end:WikiTextTocRule:10 --&gt;&lt;!-- ws:start:WikiTextTocRule:11: --&gt; | &lt;a href="#x0; that is, it is the subspace of all the functionals f such that"&gt; 0; that is, it is the subspace of all the functionals f such that &amp;lt;f|a&amp;gt; &lt;/a&gt;&lt;!-- ws:end:WikiTextTocRule:11 --&gt;&lt;!-- ws:start:WikiTextTocRule:12: --&gt; | &lt;a href="#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||*"&gt; 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||* &lt;/a&gt;&lt;!-- ws:end:WikiTextTocRule:12 --&gt;&lt;!-- ws:start:WikiTextTocRule:13: --&gt;
 
&lt;!-- ws:end:WikiTextTocRule:13 --&gt;&lt;br /&gt;
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.
&lt;!-- ws:start:WikiTextHeadingRule:0:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id="toc0"&gt;&lt;a name="Definition"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:0 --&gt;Definition&lt;/h1&gt;
 
Suppose A = &amp;lt;0 A₃ A₅ A₇ ... Ap| is the generator mapping val for a rank two temperament with P periods to the octave, and B = &amp;lt;0 B₃ B₅ B₇ ... Bp| is the same val in weighted coordinates. For instance, &amp;lt;0 1 -2 -2| is the generator mapping val for seven limit &lt;a class="wiki_link" href="/pajara"&gt;pajara&lt;/a&gt;, and &amp;lt;0 1/log2(3) -2/log2(5) -2/log2(7)| ≅ &amp;lt;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 &lt;em&gt;generator complexity&lt;/em&gt; 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. &lt;br /&gt;
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*.
&lt;br /&gt;
 
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 &lt;a class="wiki_link" href="/Kees%20height"&gt;Kees expressibility&lt;/a&gt; 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.&lt;br /&gt;
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*.
&lt;br /&gt;
 
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)&amp;gt;0. A related definition can be extended to higher ranks: since the &lt;a class="wiki_link" href="/Tenney-Euclidean%20metrics#The OETES"&gt;OETES&lt;/a&gt; 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).&lt;br /&gt;
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.
&lt;br /&gt;
 
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 &lt;a class="wiki_link" href="/the%20wedgie"&gt;the wedgie&lt;/a&gt; for temperaments below a certain complexity and badness bounds, allowing for a more efficient search.&lt;br /&gt;
== STD complexity ==
&lt;br /&gt;
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>).
&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id="toc1"&gt;&lt;a name="Proving the relationship between generator complexity and Kees expressibility"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;Proving the relationship between generator complexity and Kees expressibility&lt;/h1&gt;
 
The following proof is due to Mike Battaglia.&lt;br /&gt;
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>)).
&lt;br /&gt;
 
If m = |m2 m3 m5 ... mp&amp;gt; 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 &amp;quot;2&amp;quot; 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&amp;gt;  ||/2.&lt;br /&gt;
[[Category:Math]]
&lt;br /&gt;
[[Category:Temperament complexity measures]]
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 &amp;lt;f|A&amp;gt;  &lt;!-- ws:start:WikiTextHeadingRule:4:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id="toc2"&gt;&lt;a name="x0; that is, it is the  subspace of all the functionals f such that"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:4 --&gt; 0; that is, it is the  subspace of all the functionals f such that &amp;lt;f|a&amp;gt; &lt;/h1&gt;
[[Category:Generator]]
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*.&lt;br /&gt;
 
&lt;br /&gt;
{{Todo| add examples }}
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]||  &lt;!-- ws:start:WikiTextHeadingRule:6:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id="toc3"&gt;&lt;a name="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||*"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:6 --&gt; 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 &lt;a class="wiki_link" href="/dual%20norm"&gt;dual norm&lt;/a&gt; on X*, defined by setting, over all nonzero x ∈ X, ||f||* &lt;/h1&gt;
sup &amp;lt;f|x&amp;gt;/||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*.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/body&gt;&lt;/html&gt;</pre></div>

Latest revision as of 14:37, 25 June 2025

This page or section may be difficult to understand to those unfamiliar with the mathematical concepts involved. A more accessible version will be worked on; in the meantime, feel free to ask questions in the Xenharmonic Alliance Discord server or Facebook group.
Todo: intro

Definition

Todo: rework

Try explaining without wedgies.

Suppose A = 0 a3 a5 a7ap] is the generator mapping val for a rank-2 temperament with P periods to the octave, and B = 0 b3 b5 b7bp] 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

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

The generator complexity of the temperament is

[math]\displaystyle{ \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) = 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 m5mp 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 e5ep ‖/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 = 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 b3 b5 b7bp] 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 = [M0, M1]T 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) = sqrt(SS / dim(M1)⋅(M1)∙₱(M1)).