Temperament merging: Difference between revisions

Cmloegcmluin (talk | contribs)
mNo edit summary
No edit summary
 
(11 intermediate revisions by 4 users not shown)
Line 1: Line 1:
This page gives a general introduction to this concept; for a more mathematical take on this, see [[Meet and join]].
{{Beginner|Meet and join}}
'''Temperament merging''' is a way to find new [[regular temperaments]] by merging others. There are two ways to merge temperaments: '''joining''' (or map-merge), which works by merging the temperaments' [[mapping]]s, and '''comma-merge''', which works by merging the temperaments' [[comma basis|comma bases]].  


'''Temperament merging''' is a way to find new [[regular temperaments]] by merging others. There are two ways to merge temperaments: '''map-merge''', which works by merging the temperaments' [[mapping]]s, and '''comma-merge''', which works by merging the temperaments' [[comma basis|comma bases]].  
These are multiple ways in which a temperament can be defined in terms of the properties of another temperament.  


== Merging ==
'''Joining''' two temperaments ''a'' and ''b'' (notated a & b) results in a higher-rank temperament which tempers out only the commas that both ''a'' and ''b'' temper out. Usually, this is done with two [[Equal temperament|ETs]] ([[vals]], usually written in wart notation) to receive a rank-2 temperament (sometimes called cross-breeding), and indeed, all possible rank-2 temperaments can be written as a combination of two ETs. The resulting rank-2 essentially captures the similarities between the two ETs: [[15edo|15]] & [[22edo|22]] is [[porcupine]], because both ETs have an [[11/10]] that doubles to [[6/5]] and triples to [[4/3]]. Similarly, [[19edo|19]] & [[26edo|26]] is [[flattone]], because in the diatonic scale of both edos, the [[Major third (interval region)|major third]] is 5/4 and the [[Major sixth#As a diatonic interval category|diminished seventh]] is 7/4. Higher-rank temperaments can also be joined; [[garibaldi]] & [[rodan]] is [[hemifamity]], because both garibaldi and rodan conflate [[81/80]] and [[64/63]] into a single comma-sized interval. 


"Merging" in this context refers to concatenating the matrices in question and then [[Temperament merging#Canonicalization|canonicalizing]] them.  
'''Comma-merging''' two temperaments ''a'' and ''b'' (notated a | b) results in a lower-rank temperament which tempers out all of the commas that either ''a'' or ''b'' temper out. This can be done with two rank-2 temperaments to find the equal temperament which [[Support|supports]] them both. For example, [[meantone]] | [[Augmented (temperament)|augmented]] is [[12edo|12-ET]], since 12-ET both has 5/4 as its diatonic major third and has that 5/4 equal to [[3edo|1\3]] of the [[Octave|octave.]]
 
More than two temperaments may be merged at once. For example, joining three ETs results in a [[rank-3 temperament]] (e.g. 22 & 34d & 37 is [[ares]]).
 
Note that while a given temperament merging expression unambiguously refers to a single temperament, a given temperament can be expressed by many possible different temperament merging expressions.
 
== With mappings ==
To perform the join with mappings, we vertically concatenate the matrices. In this form, the mapping does represent the temperament (and is the form used in [[Diatonic, chromatic, enharmonic, and subchromatic steps|diatonic, chromatic, enharmonic, and subchromatic]] theory), but to get a more conventional mapping, we can then [[Temperament merging#Canonicalization|canonicalize]] it.
 
Similarly, to perform the join with comma bases, we horizontally concatenate them, and then canonicalize the result.  


For mappings, the concatenation is vertical, while for comma-bases, the concatenation is horizontal:




<math>
<math>
\hspace{1cm}
\hspace{1cm}
\begin{array} {ccc}
\begin{array} {ccc}
 
\left[ \begin{matrix}
\left[ \begin{array} {rrr}
12 & 19 & 28  \\
12 & 19 & 28  \\
\end{array} \right] \\
\end{matrix} \right] \\


\text{map-merge} \\
\text{map-merge} \\


\left[ \begin{array} {rrr}
\left[ \begin{matrix}
19 & 30 & 44  \\
19 & 30 & 44  \\
\end{array} \right] \\
\end{matrix} \right] \\


↓ \\
↓ \\


\left[ \begin{array} {rrr}
\left[ \begin{matrix}
12 & 19 & 28  \\
12 & 19 & 28  \\
19 & 30 & 44  \\
19 & 30 & 44  \\
\end{array} \right] \\
\end{matrix} \right] \\


\text{which canonicalizes to} \\
\text{which canonicalizes to} \\


\left[ \begin{array} {rrr}
\left[ \begin{matrix}
1 & 0 & -4  \\
1 & 0 & -4  \\
0 & 1 & 4  \\
0 & 1 & 4  \\
\end{array} \right] \\
\end{matrix} \right] \\


\end{array}  
\end{array}  
Line 45: Line 51:
\hspace{1cm}
\hspace{1cm}


\left[ \begin{array} {rrr}
\left[ \begin{matrix}
-4 \\
-4 \\
4 \\
4 \\
-1 \\
-1 \\
\end{array} \right]
\end{matrix} \right]


\text{comma-merge}
\text{comma-merge}


\left[ \begin{array} {rrr}
\left[ \begin{matrix}
7 \\
7 \\
0 \\
0 \\
-3 \\
-3 \\
\end{array} \right]
\end{matrix} \right]


→  
→  


\left[ \begin{array} {rrr}
\left[ \begin{matrix}
-4 & 7 \\
-4 & 7 \\
4 & 0 \\
4 & 0 \\
-1 & -3 \\
-1 & -3 \\
\end{array} \right]
\end{matrix} \right]


\text{which canonicalizes to}
\text{which canonicalizes to}


\left[ \begin{array} {rrr}
\left[ \begin{matrix}
-19 & -15 \\
-19 & -15 \\
12 & 8 \\
12 & 8 \\
0 & 1 \\
0 & 1 \\
\end{array} \right]
\end{matrix} \right]
 
</math>
</math>


 
== With multivals ==
== Application ==
Joining is equivalent to the [[wedge product]], and can be calculated in that manner. Wedging two vals results in the same temperament (in [[wedgie]] form) as joining them does.  
 
Map-merging produces a temperament that ''only'' makes to [[vanish]] those commas that are made to vanish by ''all'' of the input temperaments. Conversely, comma-merging produces a temperament that makes to vanish ''every'' comma made to vanish by ''any'' of the input temperaments.
 
== Notation ==
 
The & ("ampersand") symbol is used (for example, on [http://x31eq.com/temper/ Graham Breed's temperament finding tool]) to notate map-merging, as in 12&19 = meantone; we can read this as "12-ET and 19-ET is meantone" or "12-ET map-merge 19-ET is meantone". Here, 12 and 19 are [[wart notation]] for 12-ET and 19-ET.
 
The | ("pipe") symbol may be used to notate comma-merging, as in meantone|porcupine = 7. We could read this as "meantone or porcupine" or "meantone comma-merge porcupine is 7-ET". As a mnemonic, because commas are represented by vectors, which are vertical columns, when they merge together into matrices, the pipe resembles the seam between them as they merge.
 
The & symbol is associated with the word "and", and in many programming languages, the | symbol is associated with the word "or". So a further mnemonic can be used to remember this pair of symbols: <math>𝓣_1 \& 𝓣_2</math> is the merge that results in the temperament that makes the commas vanish which are made to vanish by ''both'' <math>𝓣_1</math> ''and'' <math>𝓣_2</math>, and <math>𝓣_1 | 𝓣_2</math> is the merge that results in the temperament that makes the commas vanish which are made to vanish by ''either'' <math>𝓣_1</math> ''or'' <math>𝓣_2</math>.
 
== Cross-breeding ==
 
Perhaps the most basic example of temperament merging is map-merging [[equal temperament]]s (ETs). This is sometimes called "cross-breeding", because ET maps are sometimes called "[[breed]]s". And so meantone could be said to be a cross-breed of 12-ET and 19-ET, because 12&19 = meantone.
 
== Multiple temperament merging ==
 
More than two temperaments may be merged at a time, such as 22&34d&37 to give [[ares]].
 
== Non-uniqueness ==
 
Note that while a given temperament merging expression unambiguously refers to a single temperament, a given temperament can be expressed by many possible different temperament merging expressions.


== Canonicalization ==
== Canonicalization ==
The canonicalization step is important for eliminating any redundancies that may have been introduced by merging related temperaments, such as [[rank-deficient|rank-deficiencies]] or [[enfactoring]].


The canonicalization step is important for eliminating any redundancies that may have been introduced by merging related temperaments, such as [[rank-deficient|grade-deficiencies]] or [[enfactoring]].
=== Rank-deficiencies ===
 
Sometimes when temperaments are merged, rank-deficiencies may occur. For example, comma-merging septimal meantone and miracle temperaments:  
=== Grade-deficiencies ===
 
Sometimes when temperaments are merged, grade-deficiencies may occur. For example, comma-merging septimal meantone and miracle temperaments:  




Line 141: Line 122:


\left[ \begin{array} {r|r|r|r}
\left[ \begin{array} {r|r|r|r}
 
\style{background-color:#F2B2B4;padding:5px}{0} & -49 & -45 & -36 \\
\colorbox{pink}0 & -49 & -45 & -36 \\
\style{background-color:#F2B2B4;padding:5px}{0} & 31 & 27 & 21 \\
\colorbox{pink}0 & 31 & 27 & 21 \\
\style{background-color:#F2B2B4;padding:5px}{0} & 0 & 1 & 0 \\
\colorbox{pink}0 & 0 & 1 & 0 \\
\style{background-color:#F2B2B4;padding:5px}{0} & 0 & 0 & 1 \\
\colorbox{pink}0 & 0 & 0 & 1 \\
 
\end{array} \right]
\end{array} \right]
</math>
</math>




We haven't ''completely'' canonicalized yet; we didn't remove the all-zero column (highlighted in red) that was created by the [[Hermite normal form]] step. The existence of any all-zero columns like this tells us that our matrix was nullity-deficient, or in layperson's terms, that it contained redundant commas. In other words, these two temperaments make some of the same commas vanish, and so when we merged them — even though the input temperaments required 2 vectors each to represent — their merged result doesn't require all 4 vectors; it can be completely represented using only 3 vectors. So once we fully [[canonical form|canonicalize]], any all-zero column(s) are removed, and we end up with:
We haven't ''completely'' canonicalized yet; we didn't remove the all-zero column (highlighted in red) that was created by the [[Hermite normal form]] step. The existence of any all-zero columns like this tells us that our matrix was column-rank-deficient, or in layperson's terms, that it contained redundant commas. In other words, these two temperaments make some of the same commas vanish, and so when we merged them—even though the input temperaments required 2 vectors each to represent—their merged result doesn't require all 4 vectors; it can be completely represented using only 3 vectors. So once we fully [[canonical form|canonicalize]], any all-zero column(s) are removed, and we end up with:




<math>
<math>
\left[ \begin{array} {r|r|r}
\left[ \begin{array} {r|r|r}
-49 & -45 & -36 \\
-49 & -45 & -36 \\
Line 163: Line 140:
0 & 0 & 1 \\
0 & 0 & 1 \\
\end{array} \right]
\end{array} \right]
</math>
</math>


=== Enfactoring ===
=== Enfactoring ===
Sometimes when temperaments are merged, enfactoring may occur. For example:  
Sometimes when temperaments are merged, enfactoring may occur. For example:  




<math>
<math>
\begin{array} {ccc}
\begin{array} {ccc}


Line 191: Line 165:
19 & 30 & 44  \\
19 & 30 & 44  \\
\end{array} \right] \\
\end{array} \right] \\
\end{array}
\end{array}
</math>
</math>


Line 201: Line 173:


<math>
<math>
\left[ \begin{array} {rrr}
\left[ \begin{array} {rrr}
1 & 0 & -4  \\
1 & 0 & -4  \\
Line 214: Line 185:


<math>
<math>
\left[ \begin{array} {rrr}
\left[ \begin{array} {rrr}
1 & 0 & -4  \\
1 & 0 & -4  \\
0 & 1 & 4  \\
0 & 1 & 4  \\
\end{array} \right]
\end{array} \right]
</math>
</math>


Line 226: Line 195:


=== Non-canonicalizing definition ===
=== Non-canonicalizing definition ===
 
By some definitions of the &amp; operator, the [[defactoring]] part of canonicalization is not include—for example on [http://x31eq.com/temper/ Graham Breed's temperament finding tool]. This allows for things like {{nowrap|5 &amp; 19}} to represent 2-enfactored meantone, rather than meantone itself. Instead of a full canonicalization, then, this definition merely puts the result into Hermite normal form and removes any all-zero rows or columns resulting from rank-deficiencies.
By some definitions of the & operator, the [[defactoring]] part of canonicalization is not included — for example on [http://x31eq.com/temper/ Graham Breed's temperament finding tool]. This allows for things like 5&19 to represent 2-enfactored meantone, rather than meantone itself. Instead of a full canonicalization, then, this definition merely puts the result into normal form and removes any all-zero rows or columns resulting from grade-deficiencies.


== Parallel intersections ==
== Parallel intersections ==
Every temperament mapping has a dual comma basis, and every comma basis has a dual mapping. Because of this duality, a special parallelism exists.
Every temperament mapping has a dual comma basis, and every comma basis has a dual mapping. Because of this duality, a special parallelism exists.


Line 245: Line 212:


== Example system of temperaments related by merging ==
== Example system of temperaments related by merging ==
Here we have a group of temperaments that are related by merges. Moving up in this diagram corresponds with map-merges, and downward movement corresponds with comma-merges. Temperaments lower on the chart [[support]] ones higher on the chart.
Here we have a group of temperaments that are related by merges. Moving up in this diagram corresponds with map-merges, and downward movement corresponds with comma-merges. Temperaments lower on the chart [[support]] ones higher on the chart.


[[File:Temperament merging 7-limit example.png|1000px|frameless|center]]
[[File:Temperament merging 7-limit example.png|1000px|frameless|center]]
== Vs. the wedge product ==
Temperament merging is closely related to the wedge product. For more information, see: [[Douglas Blumeyer and Dave Keenan's Intro to exterior algebra for RTT#Temperament merging]].


== Cross-domain temperament merging ==
== Cross-domain temperament merging ==
It is possible to merge temperaments from different domains. For more information, see [[Cross-domain temperament merging]].
It is possible to merge temperaments from different domains. For more information, see [[Cross-domain temperament merging]].


== Wolfram implementation ==
== Wolfram implementation ==
Temperament merging has been implemented as the functions <code>mapMerge</code> and <code>commaMerge</code> in the [[RTT library in Wolfram Language]].
Temperament merging has been implemented as the functions <code>mapMerge</code> and <code>commaMerge</code> in the [[RTT library in Wolfram Language]].