Cross-domain temperament merging

From Xenharmonic Wiki
Revision as of 04:57, 6 January 2022 by Cmloegcmluin (talk | contribs) (initial draft)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

It is possible to merge regular temperaments that are defined in separate interval subspaces.

(TODO: include variation on chart from main temperament merging page which also shows the effects on interval bases)

Steps

1. Determine the interval basis for the output temperament

A guiding principle when performing a cross-interval basis temperament merge is described on the main page for temperament merging:

Map-merging produces a temperament that tempers out only the commas that are tempered out by all of the input temperaments.
Conversely, comma-merging produces a temperament that tempers out every comma tempered out by any of the input temperaments.

From this, we can make some helpful statements about cross-interval basis temperament merges.

For a comma-merge, because the output temperament deals with every comma, then its interval basis must be capable of supporting this: specifically, it must include every formal prime from any of the input temperaments' interval bases. Think of it this way: for any given temperament, its interval basis's formal primes are the building blocks for its commas, and so in order to express every comma in the merged temperament, we will need every input temperament's building blocks gathered in one place. In other words, we must find the merge of all the input interval bases.

For a map-merge, then, because the output temperament will deal only with tempered commas shared by every input temperament, then its interval basis only needs to include the formal primes that are present in all of the input interval bases. Here's why: a comma built using a formal prime that isn't shared by all input temperaments couldn't even be built in all input temperaments, yet alone tempered out by all of them. And so, to build the set of commas that are tempered out by all temperaments, we only need the building blocks that can be found in all of them. In mathematical terms, we must find the intersection of the input interval bases.

2. Convert the input temperaments to the output interval basis

After determining the target interval basis, follow the instructions described here to convert the input temperament over: User:Cmloegcmluin/Interval basis#Changing interval basis.

3. Perform the merge as usual

See the instructions described here to perform the temperament merge: Temperament merging#Merging.

Examples

Comma-merge

First, let's work through an example of a cross-interval basis comma-merge: meantone [math]\displaystyle{ T_1 }[/math] with archytas [math]\displaystyle{ T_2 }[/math], where meantone is in the 5-limit standard interval basis 2.3.5, which we'll call [math]\displaystyle{ B_1 }[/math], and archytas is in the 2.3.7 interval basis, which we'll call [math]\displaystyle{ B_2 }[/math].

First we must merge these two temperaments' interval bases. Concatenate them to 2.3.5.2.3.7, then convert to matrix:


[math]\displaystyle{ \begin{array} {ccc} \begin{array} {ccc} \scriptsize{2} & \scriptsize{3} & \scriptsize{5} & \scriptsize{2} & \scriptsize{3} & \scriptsize{7}\\ \end{array} \\ \left[ \begin{array} {rrr} 1 & 0 & 0 & 1 & 0 & 0 \\ 0 & 1 & 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 \\ \end{array} \right] \end{array} }[/math]


Then column Hermite normal form:


[math]\displaystyle{ \begin{array} {ccc} \begin{array} {ccc} \scriptsize{2} & \scriptsize{3} & \scriptsize{5} & \scriptsize{7} &  &  \\ \end{array} \\ \left[ \begin{array} {rrr} 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 \\ \end{array} \right] \end{array} }[/math]


Then remove the columns of all zeros, go back to number list form, and make sure everything's greater than 1, which it is already. And so the merged interval basis [math]\displaystyle{ B_1|B_2 }[/math] is 2.3.5.7.

Now we change the interval basis for each comma basis to [math]\displaystyle{ B_1|B_2 }[/math]. Let's do meantone first. First we need to find our interval rebase [math]\displaystyle{ R_{B_1↔B_1|B_2} }[/math].

Actually, [math]\displaystyle{ R_{1↔1|2} }[/math] is easier enough to read, and still clear enough, so we'll use that notation moving forward. And here it is itself:


[math]\displaystyle{ \begin{array} {ccc} \begin{array} {rrr} \\ \end{array} \\ \begin{array} {rrr} \scriptsize{2} \\ \scriptsize{3} \\ \scriptsize{5} \\ \scriptsize{7} \\ \end{array} \end{array} \begin{array} {ccc} \begin{array} {ccc} \scriptsize{2} & \scriptsize{3} & \scriptsize{5} \\ \end{array} \\ \left[ \begin{array} {rrr} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \\ \end{array} \right] \end{array} }[/math]


Now we take our comma basis [math]\displaystyle{ C_1 }[/math] and left-multiply it by this [math]\displaystyle{ R_{1↔1|2} }[/math], just like we would left-multiply by a mapping:


[math]\displaystyle{ \begin{array} {ccc} \\ \begin{array} {rrr} \\ \end{array} \\ \begin{array} {rrr} \scriptsize{2} \\ \scriptsize{3} \\ \scriptsize{5} \\ \scriptsize{7} \\ \end{array} \end{array} \begin{array} {ccc} (1|2)C_1 \\ \begin{array} {ccc} \\ \end{array} \\ \left[ \begin{array} {rrr} 4 \\ -4 \\ 1 \\ 0 \\ \end{array} \right] \end{array} \hspace{0.5cm} \large{←} \normalsize{} \hspace{0.5cm} \begin{array} {ccc} \\ \begin{array} {ccc} \\ \end{array} \\ \begin{array} {rrr} \scriptsize{2} \\ \scriptsize{3} \\ \scriptsize{5} \\ \scriptsize{7} \\ \end{array} \end{array} \begin{array} {ccc} R_{1↔1|2} \\ \begin{array} {ccc} \scriptsize{2} & \scriptsize{3} & \scriptsize{5} \\ \end{array} \\ \left[ \begin{array} {rrr} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \\ \end{array} \right] \end{array} \hspace{0.5cm} \large{×} \normalsize{} \hspace{0.5cm} \begin{array} {ccc} \\ \begin{array} {ccc} \\ \end{array} \\ \begin{array} {rrr} \scriptsize{2} \\ \scriptsize{3} \\ \scriptsize{5} \\ \end{array} \\ \begin{array} {rrr} \\ \end{array} \\ \end{array} \begin{array} {ccc} C_1 \\ \begin{array} {ccc} \\ \end{array} \\ \left[ \begin{array} {rrr} 4 \\ -4 \\ 1 \\ \end{array} \right] \\ \begin{array} {rrr} \\ \end{array} \\ \end{array} }[/math]


Now we find our other [math]\displaystyle{ R }[/math], the one for archytas, i.e. [math]\displaystyle{ R_{2↔1|2} }[/math]:


[math]\displaystyle{ \begin{array} {rrr} \begin{array} {rrr} \\ \end{array} \\ \begin{array} {rrr} \scriptsize{2} \\ \scriptsize{3} \\ \scriptsize{5} \\ \scriptsize{7} \\ \end{array} \end{array} \begin{array} {ccc} \begin{array} {ccc} \scriptsize{2} & \scriptsize{9} & \scriptsize{7} \\ \end{array} \\ \left[ \begin{array} {rrr} 1 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 1 \\ \end{array} \right] \end{array} }[/math]


And change the interval basis for the archytas comma basis in the same way:


[math]\displaystyle{ \begin{array}{rrr} \\ \begin{array} {rrr} \\ \end{array} \\ \begin{array} {rrr} \scriptsize{2} \\ \scriptsize{3} \\ \scriptsize{5} \\ \scriptsize{7} \\ \end{array} \end{array} \begin{array} {ccc} (1|2)C_2 \\ \begin{array} {ccc} \\ \end{array} \\ \left[ \begin{array} {rrr} 6 \\ -2 \\ 0 \\ -1 \\ \end{array} \right] \end{array} \hspace{0.5cm} \large{←} \normalsize{} \hspace{0.5cm} \begin{array} {rrr} \\ \begin{array} {rrr} \\ \end{array} \\ \begin{array} {rrr} \scriptsize{2} \\ \scriptsize{3} \\ \scriptsize{5} \\ \scriptsize{7} \\ \end{array} \end{array} \begin{array} {ccc} R_{2↔1|2} \\ \begin{array} {ccc} \scriptsize{2} & \scriptsize{9} & \scriptsize{7} \\ \end{array} \\ \left[ \begin{array} {rrr} 1 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 1 \\ \end{array} \right] \end{array} \hspace{0.5cm} \large{×} \normalsize{} \hspace{0.5cm} \begin{array} {rrr} \\ \begin{array} {rrr} \\ \end{array} \\ \begin{array} {rrr} \scriptsize{2} \\ \scriptsize{3} \\ \scriptsize{7} \\ \end{array} \\ \begin{array} {rrr} \\ \end{array} \\ \end{array} \begin{array} {ccc} C_2 \\ \begin{array} {ccc} \\ \end{array} \\ \left[ \begin{array} {rrr} 6 \\ -1 \\ -1 \\ \end{array} \right] \\ \begin{array} {rrr} \\ \end{array} \\ \end{array} }[/math]


Finally, we can merge these two comma bases as usual:


[math]\displaystyle{ \begin{array} {ccc} (1|2)C_1 \\ \left[ \begin{array} {rrr} 4 \\ -4 \\ 1 \\ 0 \\ \end{array} \right] \\ \end{array} | \begin{array} {ccc} (1|2)C_2 \\ \left[ \begin{array} {rrr} 6 \\ -2 \\ 0 \\ -1\\ \end{array} \right] \end{array} = \begin{array} {ccc} (1|2)C_1|C_2 \\ \left[ \begin{array} {rrr} 4 & 6 \\ -4 & -2 \\ 1 & 0 \\ 0 & -1\\ \end{array} \right] \end{array} \text{which canonicalizes to} \left[ \begin{array} {rrr} 4 & -6 \\ -4 & 2 \\ 1 & 0 \\ 0 & 1\\ \end{array} \right] }[/math]


And so [4 -4 1]|(2.3.7)[6 -1 -1] = [4 -4 1 0 [6 -2 0 -1].

Map-merge

(WIP)

t1 = {{{22, 35, 51, 76}}, "co", {2, 3, 5, 11}};
t2 = {{{17, 54, 48, 59}}, "co", {2, 9, 7, 11}};
expectedT = {{{1, 0, 13}, {0, 1, -3}}, "co", {2, 9, 11}};(* {{{22,70,76},{17,54,59}},"co",{2,9,11}}; before canonicalization *)
test2args[mapMergeWithB, t1, t2, expectedT];