User:Frostburn/Geometric algebra for regular temperaments: Difference between revisions
→Improving the notation: Think about units of measurement. |
→Mapping: Remove the requirement for matrix inversion when calculating the mapping. |
||
(One intermediate revision by the same user not shown) | |||
Line 10: | Line 10: | ||
3D lines that pass through the origin find representation in the [[Wikipedia:Geometric Algebra|Geometric Algebra]] <math>\mathcal G(3,0)</math>. Our vals are now vectors, or points if you think projectively, in this space. | 3D lines that pass through the origin find representation in the [[Wikipedia:Geometric Algebra|Geometric Algebra]] <math>\mathcal G(3,0)</math>. Our vals are now vectors, or points if you think projectively, in this space. | ||
:<math> | :<math> \langle 5, 8, 12 \rbrack \mapsto 5e_1 + 8e_2 + 12e_3 =: \overleftarrow{5} </math> | ||
I will use the term pseudoscalar to refer to the combination of all basis vectors and denote it with ''i''. | I will use the term pseudoscalar to refer to the combination of all basis vectors and denote it with ''i''. | ||
Line 83: | Line 83: | ||
With a temperament of rank 2 the period <math>\overrightarrow{p}</math> and the generator <math>\overrightarrow{g}</math> together with n - 2 commas <math>\overrightarrow{c}_i</math> that are tempered out form a basis for the whole n-dimensional JI subgroup and can thus be inverted to produce a [[mapping]] for the temperament. | With a temperament of rank 2 the period <math>\overrightarrow{p}</math> and the generator <math>\overrightarrow{g}</math> together with n - 2 commas <math>\overrightarrow{c}_i</math> that are tempered out form a basis for the whole n-dimensional JI subgroup and can thus be inverted to produce a [[mapping]] for the temperament. | ||
Let's choose <math>\overrightarrow{p} = \overrightarrow{2/1} = [1, 0, 0></math> and <math>\overrightarrow{g} = \overrightarrow{3/2} = [-1, 1, 0> </math> as the period and generator for Meantone. In this case there's only a single comma <math>\overrightarrow{c} = \overrightarrow{81/80} = [-4, 4, 1 ></math>. | Any interval within the JI subgroup can be written as | ||
:<math> | |||
\overrightarrow{m} = x \overrightarrow{p} + y \overrightarrow{g} + z_1 \overrightarrow{c_1} + \ldots + z_{n-2} \overrightarrow{c_{n-2}} | |||
</math> | |||
The wedge product has some nice properties that allow us to extract <math>x</math> and <math>y</math>. Let's first calculate the relevant hyperwedge. | |||
:<math>\begin{align} | |||
\mathbf{H} &= \overrightarrow{p} \wedge \overrightarrow{g} \wedge \overrightarrow{c_1} \wedge \ldots \wedge \overrightarrow{c_{n-2}} \\ | |||
\mathbf{H} &= \overrightarrow{p} \wedge \overrightarrow{g} \wedge \mathbf{T}i | |||
\end{align}</math> | |||
where we've used the fact that the commas span the dual of the temperament. | |||
Finally we have | |||
:<math>\begin{align} | |||
x &= \frac{\overrightarrow{m} \wedge \overrightarrow{g} \wedge \mathbf{T}i}{\mathbf{H}} \\ | |||
y &= \frac{\overrightarrow{p} \wedge \overrightarrow{m} \wedge \mathbf{T}i}{\mathbf{H}} | |||
\end{align}</math> | |||
where the division is inverse scalar multiplication (or right multiplication by the geometric inverse. Same thing in this case where the relevant subspace attitudes align). | |||
Calculating the wedges can be computationally intensive so it's often convenient to precalculate the mapping for formal primes in the subgroup. | |||
Let's do that for meantone and choose <math>\overrightarrow{p} = \overrightarrow{2/1} = [1, 0, 0></math> and <math>\overrightarrow{g} = \overrightarrow{3/2} = [-1, 1, 0> </math> as the period and generator for Meantone. In this case there's only a single comma <math>\overrightarrow{c} = \overrightarrow{81/80} = [-4, 4, -1 ></math> so we can calculate the mapping in terms of that too, but in general we don't need to know the commas as long as we know the wedgie for the temperament. | |||
:<math>\begin{align} | |||
\overrightarrow{2/1} &= 1 \overrightarrow{p} + 0 \overrightarrow{g} + 0 \overrightarrow{c} \\ | |||
\overrightarrow{3/1} &= 1 \overrightarrow{p} + 1 \overrightarrow{g} + 0 \overrightarrow{c} \\ | |||
\overrightarrow{5/1} &= 0 \overrightarrow{p} + 4 \overrightarrow{g} - 1 \overrightarrow{c} | |||
\end{align}</math> | |||
Transposing the coefficients gives us the mapping: | |||
:<math>\begin{align} | :<math>\begin{align} | ||
\overleftarrow{p} &= < 1, 1, 0 ] \\ | \overleftarrow{p} &= < 1, 1, 0 ] \\ | ||
Line 93: | Line 118: | ||
For example <math>\overleftarrow{p} \cdot \overrightarrow{5/3} = -1</math> and <math>\overleftarrow{g} \cdot \overrightarrow{5/3} = 3</math>. Indeed <math>\frac{5}{3} \sim (\frac{2}{1})^{-1}(\frac{3}{2})^3 = \frac{27}{16}</math> in Meantone. Musically this means that the major sixth is constructed by stacking three perfect fifths and reducing by an octave. If we want to be pedantic we can calculate <math>\overleftarrow{c} \cdot \overrightarrow{5/3} = -1</math> for the final numerically correct expression <math>\frac{5}{3} = \frac{27}{16}(\frac{81}{80})^{-1}</math>. | For example <math>\overleftarrow{p} \cdot \overrightarrow{5/3} = -1</math> and <math>\overleftarrow{g} \cdot \overrightarrow{5/3} = 3</math>. Indeed <math>\frac{5}{3} \sim (\frac{2}{1})^{-1}(\frac{3}{2})^3 = \frac{27}{16}</math> in Meantone. Musically this means that the major sixth is constructed by stacking three perfect fifths and reducing by an octave. If we want to be pedantic we can calculate <math>\overleftarrow{c} \cdot \overrightarrow{5/3} = -1</math> for the final numerically correct expression <math>\frac{5}{3} = \frac{27}{16}(\frac{81}{80})^{-1}</math>. | ||
If you're worried about the potentially non-integral period ''e''<sub>1</sub>/''d'', | If you're worried about the potentially non-integral period ''e''<sub>1</sub>/''d'', the fractions in the mapping cluster on the commas so they don't matter in the end. The period and generator always get integral mappings. It should also always be possible to find a period monzo with integer components that has the same value in cents as the non-integral period, but I don't know how to find it algorithmically. | ||
== Optimizing database keys == | == Optimizing database keys == |