Douglas Blumeyer's RTT How-To: Difference between revisions
Cmloegcmluin (talk | contribs) |
Cmloegcmluin (talk | contribs) incorporating most of Dave Keenan's recommendations from a full review |
||
| Line 7: | Line 7: | ||
What’s tempering, you ask, and why temper? I won’t be answering those questions in depth here. Plenty has been said about the “what” and “why” elsewhere<ref>And curiously little about the history.</ref>. These materials are about the “how”. | What’s tempering, you ask, and why temper? I won’t be answering those questions in depth here. Plenty has been said about the “what” and “why” elsewhere<ref>And curiously little about the history.</ref>. These materials are about the “how”. | ||
But I will at least give brief answers. In the most typical case, tempering means adjusting the tuning of the | But I will at least give brief answers. In the most typical case, tempering means adjusting the tuning of the prime numbers that make up the frequency ratios of just intonation — the harmonic building blocks of your music — only a little bit, so that you can still sense what chords and melodies are “supposed” to be, but in just such a way that the interval math “adds up” in more practical ways than it does in pure [[just intonation]] (JI). This is also what [[Equal-step_tuning|equal divisions]] (EDs) do, but where EDs go “all the way”, compromising more JI accuracy for more ease of use, RTT finds a “middle path”: minimizing the accuracies you sacrifice, while maximizing ease of use. Understanding that much of the “what”, you can refer to this table to see basically “why”: | ||
{| class="wikitable" | {| class="wikitable" | ||
| Line 45: | Line 45: | ||
Until stated otherwise, this material will assume the [[5-limit|5 prime-limit]]. | Until stated otherwise, this material will assume the [[5-limit|5 prime-limit]]. | ||
If you’ve previously worked with JI, you may already be familiar with vectors. Vectors are a compact way to express JI intervals in terms of their prime factorization, or in other words, their harmonic building blocks. In JI, and in most contexts in RTT, vectors simply list the count of each prime, in order. For example, 16/15 is {{vector|4 -1 -1}} because it has four 2’s in its numerator, one 3 in its denominator, and also one 5 in its denominator. You can look at each term as an exponent: 2⁴ × 3⁻¹ × 5⁻¹ = 16/15. | If you’ve previously worked with JI, you may already be familiar with vectors. Vectors are a compact way to express JI intervals in terms of their prime factorization, or in other words, their harmonic building blocks. In JI, and in most contexts in RTT, vectors simply list the count of each prime, in order. For example, 16/15 is {{vector|4 -1 -1}} because it has four 2’s in its numerator, one 3 in its denominator, and also one 5 in its denominator. You can look at each term as an exponent: 2⁴ × 3⁻¹ × 5⁻¹ = 16/15. If we need to distinguish these vectors from other kinds of vectors used in RTT, we call these prime count vectors or PC-vectors. | ||
And if you’ve previously worked with EDOs, you may already be familiar with covectors. Covectors are a compact way to express EDOs in terms of the count of its steps it takes to reach its approximation of each prime harmonic, in order. For example, 12-EDO is {{map|12 19 28}}. The first term is the same as the name of the EDO, because the first prime harmonic is 2/1, or in other words: the octave. So this covector tells us that it takes 12 steps to reach 2/1 (the [[octave]]), 19 steps to reach 3/1 (the [[tritave]]), and 28 steps to each 5/1 (the [[pentave]]). Any or all of those intervals may be approximate. | And if you’ve previously worked with EDOs, you may already be familiar with covectors. Covectors are a compact way to express EDOs in terms of the count of its steps it takes to reach its approximation of each prime harmonic, in order. For example, 12-EDO is {{map|12 19 28}}. The first term is the same as the name of the EDO, because the first prime harmonic is 2/1, or in other words: the octave. So this covector tells us that it takes 12 steps to reach 2/1 (the [[octave]]), 19 steps to reach 3/1 (the [[tritave]]), and 28 steps to each 5/1 (the [[pentave]]). Any or all of those intervals may be approximate. | ||
If | If the mathematical structure called a vector represents the musical structure called an '''interval''', the mathematical structure called a covector represents the musical structure called a '''map'''. Elsewhere you may see these referred to as “monzos” or “vals”, respectively, but we will be avoiding unhelpful jargon like that here<ref>"Val" creates an unnecessary barrier to understanding for those already familiar with established terms for concepts RTT borrows from linear algebra. Even if it does have some connection to the mathematical concept of a "valuation", this is of no help in illuminating its music-theory meaning, which is simply that of being a mapping from a single generator to primes. The first sentence in the Xenharmonic Wiki article for "val" says, "a val is a linear map". And the first sentence of the Wikipedia article where "covector" redirects to is: "... a covector is a linear map from a vector space to its field of scalars". So that is why we use "map" in this material instead.<br><br>As for “monzo”, I feel I must say that the man Joe Monzo deserves to be celebrated. He is a friend and has even sung for me in a recording of a piece of music I composed. But I simply prefer descriptive, established, obvious names for things, and eponyms do not fit that bill.</ref>. | ||
Note the different direction of the brackets between covectors and vectors: covectors {{map|}} point left, vectors {{vector|}} point right. | Note the different direction of the brackets between covectors and vectors: covectors {{map|}} point left, vectors {{vector|}} point right. | ||
| Line 59: | Line 59: | ||
So, 16/15 maps to one step in 12-EDO ''(see Figure 2a)''. | So, 16/15 maps to one step in 12-EDO ''(see Figure 2a)''. | ||
For another example, can quickly find the fifth size for 12-EDO from its map, because 3/2 is {{vector|-1 1 0}}, and so {{map|12 19 28}}{{vector|-1 1 0}} = (12 × -1) + (19 × 1) = 7. Similarly, the major third — 5/4, or {{vector|-2 0 1}} — is simply 28 - 12 - 12 = 4. | For another example, we can quickly find the fifth size for 12-EDO from its map, because 3/2 is {{vector|-1 1 0}}, and so {{map|12 19 28}}{{vector|-1 1 0}} = (12 × -1) + (19 × 1) = 7. Similarly, the major third — 5/4, or {{vector|-2 0 1}} — is simply 28 - 12 - 12 = 4. | ||
WolframAlpha's syntax is slightly different than what we use in RTT, but it's pretty alright for a free online tool capable of handling most of the math we need to do in RTT, so we're going to be supplementing several topics with WolframAlpha examples as we go. Here's the first: | WolframAlpha's syntax is slightly different than what we use in RTT, but it's pretty alright for a free online tool capable of handling most of the math we need to do in RTT, so we're going to be supplementing several topics with WolframAlpha examples as we go. Here's the first: | ||
| Line 114: | Line 114: | ||
So when I say 12:19:28 ≈ log(2:3:5) what I’m saying is that there is indeed some shared generator g for which log<sub>g</sub>2 ≈ 12, log<sub>g</sub>3 ≈ 19, and log<sub>g</sub>5 ≈ 28 are all good approximations all at the same time, or, equivalently, a shared generator g for which g¹² ≈ 2, g¹⁹ ≈ 3, and g²⁸ ≈ 5 are all good approximations at the same time ''(see Figure 2c)''. And that’s a pretty cool thing to find! To be clear, with g = 1.059, we get g¹² ≈ 1.9982, g¹⁹ ≈ 2.9923, and g²⁸ ≈ 5.0291. | So when I say 12:19:28 ≈ log(2:3:5) what I’m saying is that there is indeed some shared generator g for which log<sub>g</sub>2 ≈ 12, log<sub>g</sub>3 ≈ 19, and log<sub>g</sub>5 ≈ 28 are all good approximations all at the same time, or, equivalently, a shared generator g for which g¹² ≈ 2, g¹⁹ ≈ 3, and g²⁸ ≈ 5 are all good approximations at the same time ''(see Figure 2c)''. And that’s a pretty cool thing to find! To be clear, with g = 1.059, we get g¹² ≈ 1.9982, g¹⁹ ≈ 2.9923, and g²⁸ ≈ 5.0291. | ||
Another glowing example is the map {{map|53 84 123}}, for which a good generator will give you g⁵³ ≈ 2.0002, g⁸⁴ ≈ 3.0005, g¹²³ ≈ 4.9974. This speaks to historical attention given to [[53edo|53-ET]]. So while 53:84:123 is an even better approximation of log(2:3:5) (and [https://en.xen.wiki/images/a/a2/Generalized_Patent_Vals.png you won’t find a better one] until 118:187:274), of course its integers aren’t as low, so that lessens its appeal. | Another glowing example is the map {{map|53 84 123}}, for which a good generator will give you g⁵³ ≈ 2.0002, g⁸⁴ ≈ 3.0005, g¹²³ ≈ 4.9974. This speaks to historical attention given to [[53edo|53-ET]]. So while 53:84:123 is an even better approximation of log(2:3:5) (and [https://en.xen.wiki/images/a/a2/Generalized_Patent_Vals.png you won’t find a better one] until 118:187:274, though you’ll have to zoom in on this linked image and scroll across it horizontally to convince yourself of it, because it’s an extremely wide image), of course its integers aren’t as low, so that lessens its appeal. | ||
Why is this rare? Well, it’s like a game of trying to get these numbers to line up ''(see Figure 2d)'': | Why is this rare? Well, it’s like a game of trying to get these numbers to line up ''(see Figure 2d)'': | ||
[[File:Near linings up rare2.png|600px|thumb|right|'''Figure 2d.''' Texture of ETs approximating prime harmonics. Where the ''numerals'' | [[File:Near linings up rare2.png|600px|thumb|right|'''Figure 2d.''' Texture of ETs approximating prime harmonics. Where the ''numerals'' line up, all primes are closely approximated by a single step size (the boundaries between cells are midpoints between perfect approximations, or in other words, the point where the closest approximation switches over from one generator count to the next) (the numerals are meant to be centered in each cell). Nudging one of the maps' vertical lines to the right would mean decreasing the generator size, flattening the tunings of all the primes, and vice versa, nudging it to the left would mean increasing the generator size, sharpening the tunings of all the primes. You can visualize this on Figure 2c. as shrinking or growing the height of the rectangular bricks. The positions of each map's vertical line, or in other words the tuning of its generator, has been optimized using some formula to distribute the deviations amongst the three primes; that's why you do not see any vertical line here for which the closest step counts for each prime are all on one side of it.]] | ||
If the distance between entries in the row for 2 are defined as 1 unit apart, then the distance between entries in the row for prime 3 are 1/log₂3 units apart, and 1/log₂5 units apart for the prime 5. So, near-linings up don’t happen all that often!<ref>For more information, see: [[The_Riemann_zeta_function_and_tuning|The Riemann zeta function and tuning]].</ref> (By the way, any vertical line drawn through a chart like this is what we'll be calling here a '''uniform map'''; elsewhere you may find this called a “[[generalized patent val]]”.<ref>My main concern with the term "generalized patent val", or GPV, is that it gets things backwards: it posits the GPV as a type of patent val, when it makes more sense to think of it the other way around, with the patent val as a type of GPV. | If the distance between entries in the row for 2 are defined as 1 unit apart, then the distance between entries in the row for prime 3 are 1/log₂3 units apart, and 1/log₂5 units apart for the prime 5. So, near-linings up don’t happen all that often!<ref>For more information, see: [[The_Riemann_zeta_function_and_tuning|The Riemann zeta function and tuning]].</ref> (By the way, any vertical line drawn through a chart like this is what we'll be calling here a '''uniform map'''; elsewhere you may find this called a “[[generalized patent val]]”.<ref>My main concern with the term "generalized patent val", or GPV, is that it gets things backwards: it posits the GPV as a type of patent val, when it makes more sense to think of it the other way around, with the patent val as a type of GPV. | ||
| Line 124: | Line 124: | ||
The present definition of GPV on the wiki bends over backwards to make its way work, essentially using non-integer EDOs, which are a contradiction in terms. Consider this alternative definition, however, which is more straightforward: | The present definition of GPV on the wiki bends over backwards to make its way work, essentially using non-integer EDOs, which are a contradiction in terms. Consider this alternative definition, however, which is more straightforward: | ||
<br><br> | <br><br> | ||
''A GPV is any relatively near-just map found by uniformly multiplying | ''A GPV is any relatively near-just map found by uniformly multiplying the generators for JI (⟨log₂2 log₂3 log₂5 ... ]) by any value before rounding it to integers. For example, choosing 17.1, we find the map 17.1⟨1 1.585 2.322] = ⟨17.1 27.103 39.705] which rounds to ⟨17 27 40]. This is one of the many GPVs for 17-EDO, and every EDO has many possible GPVs. To find a GPV for n-EDO, choose any multiplier that rounds to n; another example for 17-EDO could be 16.9⟨1 1.585 2.322] = ⟨16.9 26.786 39.241] which rounds to ⟨17 27 39].'' | ||
<br><br> | <br><br> | ||
The key element in this definition is the uniform multiplier, and from it we draw our proposed replacement name for this structure: a uniform map. | The key element in this definition is the uniform multiplier, and from it we draw our proposed replacement name for this structure: a uniform map. So the definition could be: | ||
<br><br> | <br><br> | ||
''A uniform map is any relatively near-just map found by uniformly multiplying the generators for JI (⟨log₂2 log₂3 log₂5 ... ]) by any value before rounding it to integers. For example, choosing 17.1, we find the map 17.1⟨1 1.585 2.322] = ⟨17.1 27.103 39.705] which rounds to ⟨17 27 40]. This is one of the many uniform maps for 17-EDO, and every EDO has many possible uniform maps. To find a uniform map for n-EDO, choose any multiplier that rounds to n; another example for 17-EDO could be 16.9⟨1 1.585 2.322] = ⟨16.9 26.786 39.241] which rounds to ⟨17 27 39].'' | ''A uniform map is any relatively near-just map found by uniformly multiplying the generators for JI (⟨log₂2 log₂3 log₂5 ... ]) by any value before rounding it to integers. For example, choosing 17.1, we find the map 17.1⟨1 1.585 2.322] = ⟨17.1 27.103 39.705] which rounds to ⟨17 27 40]. This is one of the many uniform maps for 17-EDO, and every EDO has many possible uniform maps. To find a uniform map for n-EDO, choose any multiplier that rounds to n; another example for 17-EDO could be 16.9⟨1 1.585 2.322] = ⟨16.9 26.786 39.241] which rounds to ⟨17 27 39].'' | ||
<br><br> | <br><br> | ||
Any uniform map whose multiplier is an integer — or "integer uniform map" — is always the | Any uniform map whose multiplier is an integer — or "integer uniform map" — is always the simple map for the corresponding EDO. And every simple map is also an integer uniform map. These are just two different helpful ways of thinking about the same structure; in contexts pertaining to tuning accuracy, "simple map" works great, and in contexts pertaining to other uniform maps, "integer uniform map" works great.</ref>) | ||
And why is this cool? Well, if {{map|12 19 28}} approximates the harmonic building blocks well individually, then JI intervals built out of them, like 16/15, 5/4, 10/9, etc. should also be reasonably closely approximated overall, and thus recognizable as their JI counterparts in musical context. You could think of it like taking all the primes in a prime factorization and swapping in their approximations. For example, if 16/15 = 2⁴ × 3⁻¹ × 5⁻¹ ≈ 1.067, and {{map|12 19 28}} approximates 2, 3, and 5 by 1.059¹² ≈ 1.998, 1.059¹⁹ ≈ 2.992, and 1.059²⁸ ≈ 5.029, respectively, then {{map|12 19 28}} maps 16/15 to 1.998⁴ × 2.992⁻¹ × 5.029⁻¹ ≈ 1.059, which is indeed pretty close to 1.067. Of course, we should also note that 1.059 is the same as our step of {{map|12 19 28}}, which checks out with our calculation we made in the previous section that the best approximation of 16/15 in {{map|12 19 28}} would be 1 step. | And why is this cool? Well, if {{map|12 19 28}} approximates the harmonic building blocks well individually, then JI intervals built out of them, like 16/15, 5/4, 10/9, etc. should also be reasonably closely approximated overall, and thus recognizable as their JI counterparts in musical context. You could think of it like taking all the primes in a prime factorization and swapping in their approximations. For example, if 16/15 = 2⁴ × 3⁻¹ × 5⁻¹ ≈ 1.067, and {{map|12 19 28}} approximates 2, 3, and 5 by 1.059¹² ≈ 1.998, 1.059¹⁹ ≈ 2.992, and 1.059²⁸ ≈ 5.029, respectively, then {{map|12 19 28}} maps 16/15 to 1.998⁴ × 2.992⁻¹ × 5.029⁻¹ ≈ 1.059, which is indeed pretty close to 1.067. Of course, we should also note that 1.059 is the same as our step of {{map|12 19 28}}, which checks out with our calculation we made in the previous section that the best approximation of 16/15 in {{map|12 19 28}} would be 1 step. | ||
| Line 150: | Line 150: | ||
=== a multitude of maps === | === a multitude of maps === | ||
Suppose we want to experiment with {{map|12 19 28}} | Suppose we want to experiment with the {{map|12 19 28}} map a bit. We’ll change one of the terms by 1, so now we have {{map|12 20 28}}. Because the previous map did such a great job of approximating the 5-limit (i.e. log(2:3:5)), though, it should be unsurprising that this new map cannot achieve that feat. The proportions, 12:20:28, should now be about as out of whack as they can get. The best generator we can do here is about 1.0583 (getting a little more precise now), and 1.0583¹² ≈ 1.9738 which isn’t so bad, but 1.0583¹⁹ = 3.1058 and 1.0583²⁸ = 4.8870 which are both way off! And they’re way off in the opposite direction — 3.1058 is too big and 4.8870 is too small — which is why our tuning formula for g, which is designed to make the approximation good for every prime at once, can’t improve the situation: either sharpening or flattening helps one but hurts the other. | ||
The results of such inaccurate approximation are a bit chaotic. A ratio like 16/15 — where the factors of 3 and 5 are on the same side of the fraction bar and therefore cancel out each other’s error — fares relatively alright, if by “alright” we mean it gets tempered out despite being about 112¢ in JI. On the other hand, an interval like 27/25 where the factors of 3 and 5 are on opposite sides of the fraction bar and thus their errors compound, gets mapped to a whopping 4 steps, despite only being about 133¢ in JI. | The results of such inaccurate approximation are a bit chaotic. A ratio like 16/15 — where the factors of 3 and 5 are on the same side of the fraction bar and therefore cancel out each other’s error — fares relatively alright, if by “alright” we mean it gets tempered out despite being about 112¢ in JI. On the other hand, an interval like 27/25 where the factors of 3 and 5 are on opposite sides of the fraction bar and thus their errors compound, gets mapped to a whopping 4 steps, despite only being about 133¢ in JI. | ||
| Line 208: | Line 208: | ||
If you did guess this, you are on the right track, but the full truth is a bit more complicated than that. | If you did guess this, you are on the right track, but the full truth is a bit more complicated than that. | ||
The first difference to understand is that each axis’s steps have been scaled proportionally according to their prime ''(see Figure 3e)''. To illustrate this, let’s | The first difference to understand is that each axis’s steps have been scaled proportionally according to their prime ''(see Figure 3e)''. We will see in a moment that the scaling factor, to be precise, is the inverse of the logarithm of the prime. To illustrate this, let’s choose an example ET and compare its position with the positions of three other closely-related ETs: | ||
# the one which is one step away from it on the 5-axis, | # the one which is one step away from it on the 5-axis, | ||
| Line 216: | Line 216: | ||
[[File:Shape_of_scale_of_movements_on_axes.png|thumb|left|200px|'''Figure 3e.''' the basic shape the scaled axes make between neighbor maps (maps with only 1 difference between their terms)]] | [[File:Shape_of_scale_of_movements_on_axes.png|thumb|left|200px|'''Figure 3e.''' the basic shape the scaled axes make between neighbor maps (maps with only 1 difference between their terms)]] | ||
Our example ET will be 40. We'll start out at the map {{map|40 63 93}}. This map is a default of sorts for 40-ET, because it’s the map where all three terms are as close as possible to JI when prime 2 is exact (we'll be calling it a '''simple map''' here, though elsewhere you may find it called a "[[patent val]]"<ref>My first concern with “patent” map is | Our example ET will be 40. We'll start out at the map {{map|40 63 93}}. This map is a default of sorts for 40-ET, because it’s the map where all three terms are as close as possible to JI when prime 2 is exact (we'll be calling it a '''simple map''' here, though elsewhere you may find it called a "[[patent val]]"<ref>My first concern with “patent” map is that "patent", as an adjective, is unfamiliar to most people, unless it relates to those documents called patents. Calling them "obvious maps" would have been better than "patent maps". | ||
<br><br> | <br><br> | ||
The second concern is that they are not always obvious. | The second concern is that they are not always obvious. If it were, there would be no contention about it. This name suggests a positive value judgment (and dismissive value judgement on other maps) which we think is inappropriate. A name like “patent” or "obvious" map may lead too many people concerned with accurate tuning to accept this map when if they'd known better they may have preferred the map with the most accurate tuning overall, i.e. the “best” map. The classic example of a best map which is not the patent map is 17c at the 5-limit. | ||
<br><br> | <br><br> | ||
These concerns arose in recent public discussion I was involved in, and it was agreed at that time that "naive" was an apt replacement for "patent". But through further discussion, we decided that this would have the opposite problem: where "patent" had excessively positive connotations, "naive" would have had inappropriately negative connotations, and might run the risk of discouraging people from using them despite such maps being relatively good. So we concluded that a word with more neutral connotations was appropriate, and so we're going with "simple". | These concerns arose in recent public discussion I was involved in, and it was agreed at that time that "naive" was an apt replacement for "patent". But through further discussion, we decided that this would have the opposite problem: where "patent" had excessively positive connotations, "naive" would have had inappropriately negative connotations, and might run the risk of discouraging people from using them despite such maps being relatively good. So we concluded that a word with more neutral connotations was appropriate, and so we're going with "simple". These maps may not always be obvious, but they are always simple to calculate. | ||
<br><br> | <br><br> | ||
The simple map sets octaves pure, and then for each other prime harmonic individually, chooses the nearest mapping (the one with least error). That's clearly simple, and it's good, but it's not necessarily best. On the other hand, the best map is not strictly defined yet, but it would have a more elaborate definition, involving | The simple map sets octaves pure, and then for each other prime harmonic individually, chooses the nearest mapping (the one with least error). That's clearly simple, and it's good, but it's not necessarily best. On the other hand, the best map is not strictly defined yet, but it would have a more elaborate definition, involving a consideration of errors in the ratios ''between'' primes, not only in the primes themselves.</ref>). | ||
From here, let’s move by a single step on the 5-axis by adding 1 to the 5-term of our map, from 93 to 94, therefore moving to the map {{map|40 63 94}}. This map is found directly to the left. This makes sense because the orientation of the 5-axis is horizontal, and the positive direction points out from the origin toward the left, so increases to the 5-term move us in that direction. | From here, let’s move by a single step on the 5-axis by adding 1 to the 5-term of our map, from 93 to 94, therefore moving to the map {{map|40 63 94}}. This map is found directly to the left. This makes sense because the orientation of the 5-axis is horizontal, and the positive direction points out from the origin toward the left, so increases to the 5-term move us in that direction. | ||
| Line 282: | Line 282: | ||
In between where the colored lines touch the maps themselves and the page, we see a cluster of more maps, each of which starts with 6. In other words, these maps are about twice as far away from us as the others. Let’s consider {{map|6 10 14}} first. Notice that each of its terms is exactly 2x the corresponding term in {{map|3 5 7}}. In effect, {{map|6 10 14}} is redundant with {{map|3 5 7}}. If you imagine doing a mapping calculation or two, you can easily convince yourself that you’ll get the same answer as if you’d just done it with {{map|3 5 7}} instead and then simply divided by 2 one time at the end. It behaves in the exact same way as {{map|3 5 7}} in terms of the relationships between the intervals it maps, the only difference being that it needlessly includes twice as many steps to do so, never using every other one. So we don’t really care about {{map|6 10 14}}. Which is great, because it’s hidden exactly behind {{map|3 5 7}} from where we’re looking. | In between where the colored lines touch the maps themselves and the page, we see a cluster of more maps, each of which starts with 6. In other words, these maps are about twice as far away from us as the others. Let’s consider {{map|6 10 14}} first. Notice that each of its terms is exactly 2x the corresponding term in {{map|3 5 7}}. In effect, {{map|6 10 14}} is redundant with {{map|3 5 7}}. If you imagine doing a mapping calculation or two, you can easily convince yourself that you’ll get the same answer as if you’d just done it with {{map|3 5 7}} instead and then simply divided by 2 one time at the end. It behaves in the exact same way as {{map|3 5 7}} in terms of the relationships between the intervals it maps, the only difference being that it needlessly includes twice as many steps to do so, never using every other one. So we don’t really care about {{map|6 10 14}}. Which is great, because it’s hidden exactly behind {{map|3 5 7}} from where we’re looking. | ||
The same is true of the map pair {{map|3 4 7}} and {{map|6 8 14}}, as well as of {{map|3 5 8}} and {{map|6 10 16}}. Any map whose terms have a common | The same is true of the map pair {{map|3 4 7}} and {{map|6 8 14}}, as well as of {{map|3 5 8}} and {{map|6 10 16}}. Any map whose terms have a common factor other than 1 is going to be redundant in this sense, and therefore hidden. You can imagine that even further past {{map|3 5 7}} you’ll find {{map|9 15 21}}, {{map|12 20 28}}, and so on, and these we could call “enfactored” maps<ref>”Enfactored” is not yet an established term; elsewhere you may see enfactored maps called “contorted”, but I think that name is strange unhelpful.</ref><ref>On some versions of PTS which Paul prepared, these enfactored ETs are actually printed on the page.</ref>. More on those later. What’s important to realize here is that Paul found a way to collapse 3 dimensions worth of information down to 2 dimensions without losing anything important. Each of these lines connecting redundant ETs have been [https://en.wikipedia.org/wiki/Projection_(mathematics) projected] onto the page as a single point. That’s why the diagram is called "projective" tuning space. | ||
Now, to find a 6-ET with anything new to bring to the table, we’ll need to find one whose terms don’t share a common factor. That’s not hard. We’ll just take one of the ones halfway between the ones we just looked at. How about {{map|6 11 14}}, which is halfway between {{map|6 10 14}} and {{map|6 12 14}}. Notice that the purple line that runs through it lands halfway between the red and blue lines on the page. Similarly, {{map|6 10 15}} is halfway between {{map|6 10 14}} and {{map|6 10 16}}, and its yellow line appears halfway between the red and green lines on the page. What this is demonstrating is that halfway between any pair of n-ETs on the diagram, whether this pair is separated along the 3-axis or 5-axis, you will find a 2n-ET. We can’t really demonstrate this with 3-ET and 6-ET on the diagram, because those ETs are too inaccurate; they’ve been cropped off. But if we return to our 40-ET example, that will work just fine. | Now, to find a 6-ET with anything new to bring to the table, we’ll need to find one whose terms don’t share a common factor. That’s not hard. We’ll just take one of the ones halfway between the ones we just looked at. How about {{map|6 11 14}}, which is halfway between {{map|6 10 14}} and {{map|6 12 14}}. Notice that the purple line that runs through it lands halfway between the red and blue lines on the page. Similarly, {{map|6 10 15}} is halfway between {{map|6 10 14}} and {{map|6 10 16}}, and its yellow line appears halfway between the red and green lines on the page. What this is demonstrating is that halfway between any pair of n-ETs on the diagram, whether this pair is separated along the 3-axis or 5-axis, you will find a 2n-ET. We can’t really demonstrate this with 3-ET and 6-ET on the diagram, because those ETs are too inaccurate; they’ve been cropped off. But if we return to our 40-ET example, that will work just fine. | ||
[[File:Plot of 5 10 20 40 80.png|800px|thumb|left|'''Figure 3j.'''Plot of 40-ETs with 80-ETs halfway between each pair, including the | [[File:Plot of 5 10 20 40 80.png|800px|thumb|left|'''Figure 3j.'''Plot of 40-ETs with 80-ETs halfway between each pair, including the enfactored 40-ETs hiding behind 20-ET and 10-ET]] | ||
I’ve circled every 40-ET visible in the chart ''(see Figure 3j)''. And you can see that halfway between each one, there’s an [[80edo|80-ET]] too. Well, sometimes it’s not actually printed on the diagram<ref>The reason is that Paul’s diagram, in addition to cutting off beyond 99-ET, also filters out maps that aren’t | I’ve circled every 40-ET visible in the chart ''(see Figure 3j)''. And you can see that halfway between each one, there’s an [[80edo|80-ET]] too. Well, sometimes it’s not actually printed on the diagram<ref>The reason is that Paul’s diagram, in addition to cutting off beyond 99-ET, also filters out maps that aren’t uniform maps.</ref>, but it’s still there. You will also notice that if we also land right about on top of [[20edo|20-ET]] and [[10edo|10-ET]]. That’s no coincidence! Hiding behind that 20-ET is a redundant 40-ET whose terms are all 2x the 20-ET’s terms, and hiding behind the 10-ET is a redundant 40-ET whose terms are all 4x the 40-ET’s terms (and also a redundant 20-ET and a [[30edo|30-ET]], and [[50edo|50-ET]], [[60edo|60-ET]], etc. etc. etc.) | ||
Also, check out the spot halfway between our two 17-ETs: there’s the 34-ET we briefly mused about earlier, which would solve 17’s problem of approximating prime 5 by subdividing each of its steps in half. We can confirm now that this 34-ET does a superb job at approximating prime 5, because it is almost vertically aligned with the JI red hexagram. | Also, check out the spot halfway between our two 17-ETs: there’s the 34-ET we briefly mused about earlier, which would solve 17’s problem of approximating prime 5 by subdividing each of its steps in half. We can confirm now that this 34-ET does a superb job at approximating prime 5, because it is almost vertically aligned with the JI red hexagram. | ||
| Line 346: | Line 346: | ||
If you’re new to RTT, all of the other temperaments besides meantone, like “[[dicot]]”, “[[porcupine]]”, and “[[mavila]]”, are probably unfamiliar and their names may seem sort of random or bizarre looking. Well, you’re not wrong about the names being random and bizarre. But mathematically and musically, these temperaments are every bit as much real and of interest as meantone. One day you too may compose a piece or write an academic paper about porcupine temperament. | If you’re new to RTT, all of the other temperaments besides meantone, like “[[dicot]]”, “[[porcupine]]”, and “[[mavila]]”, are probably unfamiliar and their names may seem sort of random or bizarre looking. Well, you’re not wrong about the names being random and bizarre. But mathematically and musically, these temperaments are every bit as much real and of interest as meantone. One day you too may compose a piece or write an academic paper about porcupine temperament. | ||
But hold up now: points are ETs, which are temperaments, too, right? Well, yes, that’s still true. But while points are equal, or '''[[List_of_rank_one_temperaments_by_step_size|rank-1 temperaments]]''', the lines represent what we call '''[https://en.xen.wiki/index.php?title=Rank_two_temperament rank-2 temperaments]'''. It may be helpful to differentiate the names in your mind in terms of their geometric dimensionality. Recall that projective tuning space has compressed all our information by one dimension; every point on our diagram is actually a line radiating out from our eye. So a rank-1 temperament is really a line, which is one-dimensional; rank-1, 1D. And the rank-2 temperaments, which are seen as lines in our diagram, are truly planes coming up out of the page, and planes are of course two-dimensional; rank-2, 2D. If you wanted to, you could even say 5-limit JI was a rank-3 temperament, because that’s this entire space, which is 3-dimensional; rank-3, 3D. | But hold up now: points are ETs, which are temperaments, too, right? Well, yes, that’s still true. But while points are equal temperaments, or '''[[List_of_rank_one_temperaments_by_step_size|rank-1 temperaments]]''', the lines represent what we call '''[https://en.xen.wiki/index.php?title=Rank_two_temperament rank-2 temperaments]'''. It may be helpful to differentiate the names in your mind in terms of their geometric dimensionality. Recall that projective tuning space has compressed all our information by one dimension; every point on our diagram is actually a line radiating out from our eye. So a rank-1 temperament is really a line, which is one-dimensional; rank-1, 1D. And the rank-2 temperaments, which are seen as lines in our diagram, are truly planes coming up out of the page, and planes are of course two-dimensional; rank-2, 2D. If you wanted to, you could even say 5-limit JI was a rank-3 temperament, because that’s this entire space, which is 3-dimensional; rank-3, 3D. | ||
“[[Rank]]” has a slightly different meaning than dimension, but that’s not important yet. We’ll define rank, and discuss what exactly a rank-2 or -3 temperament means later. For now, it’s enough to know that each temperament line on this 5-limit PTS diagram is defined by tempering out a comma which has the same name. For now, we’re still focusing on visually how to navigate PTS. So the natural thing to wonder next, then, is what’s up with the slopes of all these temperament lines? | “[[Rank]]” has a slightly different meaning than dimension, but that’s not important yet. We’ll define rank, and discuss what exactly a rank-2 or -3 temperament means later. For now, it’s enough to know that each temperament line on this 5-limit PTS diagram is defined by tempering out a comma which has the same name. For now, we’re still focusing on visually how to navigate PTS. So the natural thing to wonder next, then, is what’s up with the slopes of all these temperament lines? | ||
| Line 398: | Line 398: | ||
First of all, and this difference is superficial, it’s in a different format. We were expressing 12-ET’s generator 1.059 as a frequency multiplier; it’s like 2, 3, or 5, and this could be measured in Hz, say, by multiplying by 440 if A4 was our 1/1 (1.059 away from A is 466Hz, which is #A). But the meantone generators we’re looking at now in forms like <span><math>\frac 25</math></span>, <span><math>\frac 37</math></span>, or <span><math>\frac{5}{12}</math></span>, are expressed as fractional octaves, i.e. they’re in terms of pitch, something that could be measured in cents if we multiplied by 1200 (2/5 × 1200¢ = 480¢). We have a special way of writing fractional octaves, and that’s with a backslash instead of a slash, like this: 2\5, 3\7, 5\12. | First of all, and this difference is superficial, it’s in a different format. We were expressing 12-ET’s generator 1.059 as a frequency multiplier; it’s like 2, 3, or 5, and this could be measured in Hz, say, by multiplying by 440 if A4 was our 1/1 (1.059 away from A is 466Hz, which is #A). But the meantone generators we’re looking at now in forms like <span><math>\frac 25</math></span>, <span><math>\frac 37</math></span>, or <span><math>\frac{5}{12}</math></span>, are expressed as fractional octaves, i.e. they’re in terms of pitch, something that could be measured in cents if we multiplied by 1200 (2/5 × 1200¢ = 480¢). We have a special way of writing fractional octaves, and that’s with a backslash instead of a slash, like this: 2\5, 3\7, 5\12. | ||
Cents and | Cents and hertz values can readily be converted between one form and the other, so it’s the second difference which is more important. It’s their size. If we do convert 12-ET’s generator to cents so we can compare it with meantone’s generator at 12-ET, we can see that 12-ET’s generator is 100¢ (log₂1.059 × 1200¢ = 100¢) while meantone’s generator at 12-ET is 500¢ (5/12 × 1200¢ = 500¢). What is the explanation for this difference? | ||
Well, notice that meantone is not the only temperament which passes through 12-ET. Consider augmented temperament. | Well, notice that meantone is not the only temperament which passes through 12-ET. Consider augmented temperament. It has a generator at 12-ET that is 400¢<ref>This statement is slightly misleading, in order to help make the more important point it's in the context of. The full truth is that augmented's ''period'' is 400¢ at 12-ET. As you'll soon see, the period is just a special name for the first one of a temperament's generators, but because in rank-2 situations like this where there are only two generators, referring to ''the'' generator typically implies the second generator, the one which is not the period. For augmented, this generator is 100¢ at 12-ET.</ref>. What's key here is that all three of these generators — 100¢, 500¢, and 400¢ — are multiples of 100¢. | ||
Let’s put it this way. When we look at 12-ET in terms of itself, rather than in terms of any particular rank-2 temperament, its generator is 1\12. That’s the simplest, smallest generator which if we iterate it 12 times will touch every pitch in 12-ET. But when we look at 12-ET not as the end goal, but rather as a foundation upon which we could work with a given temperament, things change. We don’t necessarily need to include every pitch in 12-ET to realize a temperament it supports. | Let’s put it this way. When we look at 12-ET in terms of itself, rather than in terms of any particular rank-2 temperament, its generator is 1\12. That’s the simplest, smallest generator which if we iterate it 12 times will touch every pitch in 12-ET. But when we look at 12-ET not as the end goal, but rather as a foundation upon which we could work with a given temperament, things change. We don’t necessarily need to include every pitch in 12-ET to realize a temperament it supports. | ||
| Line 412: | Line 412: | ||
We mentioned that the generator value changes continuously as we move along a temperament line. So just to either side of 12-ET along the meantone line, the tuning of 2, 3, and 5 supports a generator size which in turn supports meantone, but it wouldn’t support augmented. And just to either side of 12-ET along the augmented line, the tuning of 2, 3, and 5 supports a generator which still supports augmented, but not meantone. 12-ET, we could say, is a convergence point between the meantone generator and the augmented generator. But it is not a convergence point because the two generators become identical in 12-ET, but rather because they can both be achieved in terms of 12-ET’s generator. In other words, 5\12 ≠ 4\12, but they are both multiples of 1\12. | We mentioned that the generator value changes continuously as we move along a temperament line. So just to either side of 12-ET along the meantone line, the tuning of 2, 3, and 5 supports a generator size which in turn supports meantone, but it wouldn’t support augmented. And just to either side of 12-ET along the augmented line, the tuning of 2, 3, and 5 supports a generator which still supports augmented, but not meantone. 12-ET, we could say, is a convergence point between the meantone generator and the augmented generator. But it is not a convergence point because the two generators become identical in 12-ET, but rather because they can both be achieved in terms of 12-ET’s generator. In other words, 5\12 ≠ 4\12, but they are both multiples of 1\12. | ||
Here’s a diagram that shows how the generator size changes gradually across each line in PTS. It may seem weird how the same generator size appears in multiple different places across the space. But keep in mind that pretty much any generator is possible pretty much anywhere here. This is simply the generator size pattern you get when you lock the | Here’s a diagram that shows how the generator size changes gradually across each line in PTS. It may seem weird how the same generator size appears in multiple different places across the space. But keep in mind that pretty much any generator is possible pretty much anywhere here. This is simply the generator size pattern you get when you lock the octave to exactly 1200 cents, to establish a common basis for comparison. This is what enables us to produce maps of temperaments such as the one found at [[Map_of_linear_temperaments|this Xen wiki page]], or this chart here ''(see Figure 4b)''. | ||
[[File:Generator sizes in PTS.png|800px|thumb|'''Figure 4b.''' Generator sizes of linear temperaments in PTS. Don't worry too much about the valid ranges yet; we'll discuss that part later. And I didn’t break down what’s happening along the blackwood, compton, augmented, dimipent, and some other lines which are labelled on the original PTS diagram. In some cases, it’s just because I got lazy and didn’t want to deal with fitting more numbers on this thing. But in the case of all those that I just listed, it’s because those temperaments all have non-octave periods | [[File:Generator sizes in PTS.png|800px|thumb|'''Figure 4b.''' Generator sizes of linear temperaments in PTS. Don't worry too much about the valid ranges yet; we'll discuss that part later. And I didn’t break down what’s happening along the blackwood, compton, augmented, dimipent, and some other lines which are labelled on the original PTS diagram. In some cases, it’s just because I got lazy and didn’t want to deal with fitting more numbers on this thing. But in the case of all those that I just listed, it’s because although they are rank-2, those temperaments all have non-octave periods and are therefore not linear, and so it doesn't make enough sense to compare their generators here. You'll learn about periods in the next section.]] | ||
=== periods and generators === | === periods and generators === | ||
| Line 420: | Line 420: | ||
Earlier we mentioned the term “rank”. I warned you then that it wasn’t actually the same thing as dimensionality, even though we could use dimensionality in the PTS to help differentiate rank-2 from rank-1 temperaments. Now it’s time to learn the true meaning of rank: it’s how many generators a temperament has. So, it ''is'' the dimensionality of the ''tempered'' lattice; but it's still important to stay clear about the fact that it's different from the dimensionality of the original system from which you are tempering. | Earlier we mentioned the term “rank”. I warned you then that it wasn’t actually the same thing as dimensionality, even though we could use dimensionality in the PTS to help differentiate rank-2 from rank-1 temperaments. Now it’s time to learn the true meaning of rank: it’s how many generators a temperament has. So, it ''is'' the dimensionality of the ''tempered'' lattice; but it's still important to stay clear about the fact that it's different from the dimensionality of the original system from which you are tempering. | ||
When we spoke of | When we spoke of “the” generator for a rank-2 temperament such as meantone, we were taking advantage of the fact that the other generator is generally assumed to be the octave (or a unit fraction of the octave) and it gets its own special name: the period. It’s technically a generator too, but when we say “the” generator of a rank-2 temperament, we mean the one that’s not the period. | ||
The period, usually being the largest generator, serves as the [[interval of repetition]]. Rank-1 temperaments have only one generator, so that generator technically is the period, though we usually don’t think of it that way; that’s because the word “period” is designed to convey the way in which the other smaller generators can be understood to cycle within it, and so without any smaller generators doing that, it sort of loses its meaning. Sometimes the octave (or a fraction thereof) is treated as the “period” of an ET, especially when comparing the ET with a related rank-2 temperament; that may make sense in context, though technically this interval could only be the [[interval of equivalence]], not also the interval of repetition. | |||
As we’ll soon see, there’s more than one way to generate a given rank-2 temperament. For example, meantone can be generated by an octave and a fourth. But it could equivalently be generated by an octave and a fifth. Or an octave and an [https://en.wikipedia.org/wiki/Augmented_unison augmented unison]. It could even be generated by cycling a fourth against a fifth. And so on. | As we’ll soon see, there’s more than one way to generate a given rank-2 temperament. For example, meantone can be generated by an octave and a fourth. But it could equivalently be generated by an octave and a fifth. Or an octave and an [https://en.wikipedia.org/wiki/Augmented_unison augmented unison]. It could even be generated by cycling a fourth against a fifth. And so on. | ||
And so it’s good to have a standard form for the generators of a | And so it’s good to have a standard form for the generators of a linear temperament. One excellent standard is to set the period to an octave and the generator set to anything less than half the size of the period, as we did earlier. | ||
Let’s bring up MOS theory again. We mentioned earlier that you might have been familiar with the scale tree if you’d worked with MOS scales before, and if so, the connection was scale cardinalities, or in other words, how many notes are in the resultant scales when you continuously iterate the generator until you reach points where there are only two scale step sizes. At these points scales tend to sound relatively good, and this is in fact the definition of a MOS scale. There’s a mathematical explanation for how to know, given a ratio between the size of your generator and period, the cardinalities of scales possible; we won’t re-explain it here. The point is that the scale tree can show you that pattern visually. And so if each temperament line in PTS is its own segment of the scale tree, then we can use it in a similar way. | Let’s bring up MOS theory again. We mentioned earlier that you might have been familiar with the scale tree if you’d worked with MOS scales before, and if so, the connection was scale cardinalities, or in other words, how many notes are in the resultant scales when you continuously iterate the generator until you reach points where there are only two scale step sizes. At these points scales tend to sound relatively good, and this is in fact the definition of a MOS scale. There’s a mathematical explanation for how to know, given a ratio between the size of your generator and period, the cardinalities of scales possible; we won’t re-explain it here. The point is that the scale tree can show you that pattern visually. And so if each temperament line in PTS is its own segment of the scale tree, then we can use it in a similar way. | ||
| Line 450: | Line 450: | ||
When specifying a rank-1 temperament in terms of two rank-2 temperaments, an obvious constraint is that the two rank-2 temperaments cannot be parallel. When specifying a rank-2 temperament in terms of two rank-1 temperaments, it seems like things should be more open-ended. Indeed, however, there is a special additional constraint on either method, and they’re related to each other. Let’s look at rank-2 as the join of rank-1 first. | When specifying a rank-1 temperament in terms of two rank-2 temperaments, an obvious constraint is that the two rank-2 temperaments cannot be parallel. When specifying a rank-2 temperament in terms of two rank-1 temperaments, it seems like things should be more open-ended. Indeed, however, there is a special additional constraint on either method, and they’re related to each other. Let’s look at rank-2 as the join of rank-1 first. | ||
7&12 is valid for meantone. So is 5&7, and 7&12. 12&19 and 19&7 are both fine too, and so are 5&17 and 17&12. Yes, these are all literally the same thing (though you may connote a meantone generator size on the meantone line somewhere between these two ETs). So how could we mess this one up, then? Well, | 7&12 is valid for meantone. So is 5&7, and 7&12. 12&19 and 19&7 are both fine too, and so are 5&17 and 17&12. Yes, these are all literally the same thing (though you may connote a meantone generator size on the meantone line somewhere between these two ETs). So how could we mess this one up, then? Well, here are our first counterexamples: 5&19, 7&17, and 17&19. And what problem do all these share in common? The problem is that between 5 and 19 on the meantone line we find 12, and 12 is a smaller number than 19 (or, if you prefer, on PTS, it is printed as a larger numeral). It’s the same problem with 17&19, and with 7&17 the problem is that 12 is smaller than 17. It’s tricky, but you have to make sure that between the two ETs you join there’s not a smaller ET (which you should be joining instead). The reason why is out of scope to explain here, but we’ll get to it eventually. | ||
I encourage you to spend some time playing around with [[Graham Breed]]'s [http://x31eq.com/temper/ online RTT tool]. For example, at http://x31eq.com/temper/net.html you can enter <code>12&19</code> in the "list of steps to the octave" field and <code>5</code> in the "limit" field and Submit, and you'll be taken to a results page for meantone. | I encourage you to spend some time playing around with [[Graham Breed]]'s [http://x31eq.com/temper/ online RTT tool]. For example, at http://x31eq.com/temper/net.html you can enter <code>12&19</code> in the "list of steps to the octave" field and <code>5</code> in the "limit" field and Submit, and you'll be taken to a results page for meantone. | ||
| Line 483: | Line 483: | ||
Now how in the world could that matrix represent the same temperament as {{map|19 30 44}}? Well, they’re two different ways of describing it. {{map|19 30 44}}, as we know, tells us how many generator steps it takes to reach each prime approximation. This matrix, it turns out, is an equivalent way of stating the same information. This matrix is a minimal representation of the null-space of that mapping, or in other words, of all the commas it tempers out. (Don't worry about the word "mapping" just yet; for now, just imagine I'm writing "map". We'll explain the difference very soon.). | Now how in the world could that matrix represent the same temperament as {{map|19 30 44}}? Well, they’re two different ways of describing it. {{map|19 30 44}}, as we know, tells us how many generator steps it takes to reach each prime approximation. This matrix, it turns out, is an equivalent way of stating the same information. This matrix is a minimal representation of the null-space of that mapping, or in other words, of all the commas it tempers out. (Don't worry about the word "mapping" just yet; for now, just imagine I'm writing "map". We'll explain the difference very soon.). | ||
This was a bit tricky for me to get my head around, so let me hammer this point home: when you say "the null-space", you're referring to ''the entire infinite set of all commas that a mapping tempers out'', ''not only'' the two commas you see in any given basis for it. Think of the comma basis as one of many valid sets of instructions to find every possible comma, by adding or subtracting these two commas from each other<ref>To be clear, because what you are adding and subtracting in interval vectors are exponents (as you know), the commas are actually being multiplied by each other; e.g. {{vector|-4 4 -1}} + {{vector|10 1 -5}} = {{vector|6 5 -6}}, which is the same thing as <span><math>\frac{81}{80} × \frac{3072}{3125} = \frac{15552}{15625}</math></span></ref>. The math term for adding and subtracting vectors like this, which you will certainly see plenty of as you explore RTT, is "linear combination". It should be visually clear from the PTS diagram that this 19-ET comma basis couldn't be listing every single comma 19-ET tempers out, because we can see there are at least four temperament lines that pass through it (there are actually infinity of them!). But so it turns out that picking two commas is perfectly enough; every other comma that 19-ET tempers out could be expressed in terms of these two! | This was a bit tricky for me to get my head around, so let me hammer this point home: when you say "the null-space", you're referring to ''the entire infinite set of all commas that a mapping tempers out'', ''not only'' the two commas you see in any given basis for it. Think of the comma basis as one of many valid sets of instructions to find every possible comma, by adding or subtracting (integer multiples of) these two commas from each other<ref>To be clear, because what you are adding and subtracting in interval vectors are exponents (as you know), the commas are actually being multiplied by each other; e.g. {{vector|-4 4 -1}} + {{vector|10 1 -5}} = {{vector|6 5 -6}}, which is the same thing as <span><math>\frac{81}{80} × \frac{3072}{3125} = \frac{15552}{15625}</math></span></ref>. The math term for adding and subtracting vectors like this, which you will certainly see plenty of as you explore RTT, is "linear combination". It should be visually clear from the PTS diagram that this 19-ET comma basis couldn't be listing every single comma 19-ET tempers out, because we can see there are at least four temperament lines that pass through it (there are actually infinity of them!). But so it turns out that picking two commas is perfectly enough; every other comma that 19-ET tempers out could be expressed in terms of these two! | ||
Try one. How about the hanson comma, {{vector|6 5 -6}}. Well that one’s too easy! Clearly if you go down by one magic comma to {{vector|10 1 -5}} and then up by one meantone comma you get one hanson comma. What you’re doing when you’re adding and subtracting multiples of commas from each other like this | Try one. How about the hanson comma, {{vector|6 5 -6}}. Well that one’s too easy! Clearly if you go down by one magic comma to {{vector|10 1 -5}} and then up by one meantone comma you get one hanson comma. What you’re doing when you’re adding and subtracting multiples of commas from each other like this are technically called [https://en.wikipedia.org/wiki/Elementary_matrix|elementary column operations]. Feel free to work through any other examples yourself. | ||
A good way to explain why we don’t need three of these commas is that if you had three of them, you could use any two of them to create the third, and then subtract the result from the third, turning that comma into a zero vector, or a vector with only zeroes, which is pretty useless, so we could just discard it. | A good way to explain why we don’t need three of these commas is that if you had three of them, you could use any two of them to create the third, and then subtract the result from the third, turning that comma into a zero vector, or a vector with only zeroes, which is pretty useless, so we could just discard it. | ||
| Line 495: | Line 495: | ||
[[File:Different nestings.png|400px|thumb|left|'''Figure 5a.''' How to write matrices in terms of either columns/vectors/commas or rows/covectors/maps.]] | [[File:Different nestings.png|400px|thumb|left|'''Figure 5a.''' How to write matrices in terms of either columns/vectors/commas or rows/covectors/maps.]] | ||
We can extend our angle bracket notation (technically called [https://en.wikipedia.org/wiki/Bra%E2%80%93ket_notation bra-ket notation, or Dirac notation]<ref>Bra-ket notation comes to RTT from quantum mechanics, not algebra.</ref>) to handle matrices by nesting rows inside columns, or columns inside rows ''(see Figure 5a)''. For example, we could have written our comma basis like this: {{map|{{vector|-4 4 -1}} {{vector|-10 -1 5}}}}. Starting from the outside, the {{map|}} tells us to think in terms of a row. It's just that this | We can extend our angle bracket notation (technically called [https://en.wikipedia.org/wiki/Bra%E2%80%93ket_notation bra-ket notation, or Dirac notation]<ref>Bra-ket notation comes to RTT from quantum mechanics, not algebra.</ref>) to handle matrices by nesting rows inside columns, or columns inside rows ''(see Figure 5a)''. For example, we could have written our comma basis like this: {{map|{{vector|-4 4 -1}} {{vector|-10 -1 5}}}}. Starting from the outside, the {{map|}} tells us to think in terms of a row. It's just that this row isn't a row of numbers, like the ones we've gotten used to by now, but rather a row of ''columns of'' numbers. So this row houses two such columns. Alternatively, we could have written this same matrix like {{vector|{{map|-4 -10}} {{map|4 -1}} {{map|-1 5}}}}, but that would obscure the fact that it is the combination of two familiar commas (but that notation ''would'' be useful for expressing a matrix built out of multiple maps, as we will soon see). | ||
Sometimes a comma basis may have only a single comma. That’s okay. A single vector can become a matrix. To disambiguate this situation, you could put the vector inside | Sometimes a comma basis may have only a single comma. That’s okay. A single vector can become a matrix. To disambiguate this situation, you could put the vector inside row brackets, like this: {{map|{{vector|-4 4 -1}}}}. Similarly, a single covector can become a matrix, by nesting inside column brackets, like this: {{vector|{{map|19 30 44}}}}. | ||
If a comma basis is the name for the matrix made out of commas, then we could say a “'''mapping'''” is the name for the matrix made out of maps. Why isn't this one a "basis", you ask? Well, it can be thought of as a basis too. It depends on the context. When you use the word "mapping" for it, you're treating it like a function, or a machine: it takes in intervals, and spits out new forms of intervals. That's how we've been using it here. But in other places, you may be thinking of this matrix as a basis for the infinite space of possible maps that could be combined to produce a matrix which works the same way as a given mapping, i.e. it tempers out the same commas. In these contexts, it might make more sense to call such a mapping matrix a "mapping-row basis". | If a comma basis is the name for the matrix made out of commas, then we could say a “'''mapping'''” is the name for the matrix made out of maps. Why isn't this one a "basis", you ask? Well, it can be thought of as a basis too. It depends on the context. When you use the word "mapping" for it, you're treating it like a function, or a machine: it takes in intervals, and spits out new forms of intervals. That's how we've been using it here. But in other places, you may be thinking of this matrix as a basis for the infinite space of possible maps that could be combined to produce a matrix which works the same way as a given mapping, i.e. it tempers out the same commas. In these contexts, it might make more sense to call such a mapping matrix a "mapping-row basis". | ||
| Line 615: | Line 615: | ||
</math> | </math> | ||
And ta-da! You’ve found a mapping | And ta-da! You’ve found a mapping from a comma basis, and it is {{vector|{{map|19 30 44}}}}. In other words, for this temperament, you have converted a basis for its null-space to a row-basis for its mapping row-space. Feel free to try this with any other combination of two commas tempered out by this mapping-row. | ||
So why the anti-transpose sandwich? What we (and everyone) want in a | So why the anti-transpose sandwich? What we (and everyone) want in a canonical mapping is to have a triangle of zeros in the bottom left corner. What we want in a comma basis is also to have a triangle of zeros in the bottom left corner. But the comma basis is on the other side of duality from the mapping, so it must be transposed before we can apply our nullSpaceBasis[] function to it, because that function is designed for mappings. But when we transpose the comma basis we end up with the triangle of zeros in the top right. If we take the null-space of that and then transpose it back again, we don't get our canonical form of the mapping, we get a mapping with a triangle of zeros in the top right. The way to fix this is to anti-transpose instead of transpose, before and after taking the null-space. Because when you anti-transpose the comma basis, you still turn columns into rows, but this time the triangle of zeros stays on the bottom left. | ||
Unfortunately, to the best of my Wolfram Alpha ability, I'm unable to make the entire process work in one go with Wolfram Alpha. Here is just the part where you take the null-space of the already anti-transposed comma basis: | Unfortunately, to the best of my Wolfram Alpha ability, I'm unable to make the entire process work in one go with Wolfram Alpha. Here is just the part where you take the null-space of the already anti-transposed comma basis: | ||
| Line 743: | Line 743: | ||
</math> | </math> | ||
This matrix represents meantone. In our angle bracket notation, we would write it as two covectors inside a | This matrix represents meantone. In our angle bracket notation, we would write it as two covectors inside a column bracket (one column of two rows), like this: {{vector|{{map|5 8 12}} {{map|7 11 16}}}}. | ||
Again, we find ourselves in the position where we must reconcile a strange new representation of an object with an existing one. We already know that meantone can be represented by the vector for the comma it tempers out, {{vector|-4 4 -1}}. How are these two representations related? | Again, we find ourselves in the position where we must reconcile a strange new representation of an object with an existing one. We already know that meantone can be represented by the vector for the comma it tempers out, {{vector|-4 4 -1}}. How are these two representations related? | ||
Well, it’s actually quite simple! They’re related in the same way as {{vector|{{map|19 30 44}}}} was related to {{map|{{vector|-4 4 -1}} {{vector|-10 -1 5}}}}: by the null-space operation. Specifically, {{map|{{vector|-4 4 -1}}}} is a basis for the null-space of the temperament with mapping-row basis {{vector|{{map|5 8 12}} {{map|7 11 16}}}}, because it is the minimal representation of all the commas tempered out by meantone temperament. | Well, it’s actually quite simple! They’re related in the same way as {{vector|{{map|19 30 44}}}} was related to {{map|{{vector|-4 4 -1}} {{vector|-10 -1 5}}}}: by the null-space operation. Specifically, {{map|{{vector|-4 4 -1}}}} is a basis for the null-space of the temperament with mapping-row basis {{vector|{{map|5 8 12}} {{map|7 11 16}}}}, because it is the minimal representation of all the commas tempered out by meantone temperament, which means mapped to zeros by the meantone mapping. | ||
We can work this one out by hand too: | We can work this one out by hand too: | ||
| Line 891: | Line 891: | ||
So in this meantone mapping, the best approximation of the JI interval 10/9 is found by moving 1 step in each generator. We could write this in vector form as {{vector|1 1}}. | So in this meantone mapping, the best approximation of the JI interval 10/9 is found by moving 1 step in each generator. We could write this in vector form as {{vector|1 1}}. | ||
If the familiar usage of vectors has been as prime count | If the familiar usage of vectors has been as prime count vectors or PC-vectors, we can now generalize that definition to things like this {{vector|1 1}}: generator count vectors or GC-vectors. Since interval vectors are often called monzos, you’ll often see these called tempered monzos or [[Tmonzos_and_Tvals|tmonzos]] for short. There’s very little difference. We can use these vectors as coordinates in a lattice just the same as before. The main difference is that the nodes we visit on this lattice aren’t pure JI; they’re a tempered lattice. | ||
We haven’t specified the size of either of these generators, but that’s not important here. These mappings are just like a set of requirements for any pair of generators that might implement this temperament. This is as good a time as any to emphasize the fact that temperaments are abstract; they are not ready-to-go tunings, but more like instructions for a tuning to follow. This can sometimes feel frustrating or hard to understand, but ultimately it’s a big part of the power of temperament theory. | We haven’t specified the size of either of these generators, but that’s not important here. These mappings are just like a set of requirements for any pair of generators that might implement this temperament. This is as good a time as any to emphasize the fact that temperaments are abstract; they are not ready-to-go tunings, but more like instructions for a tuning to follow. This can sometimes feel frustrating or hard to understand, but ultimately it’s a big part of the power of temperament theory. In this case, a common method for optimizing tunings from temperaments would give these two generators as 73.756¢ and 118.945¢, respectively, which gives the tempered 10/9 as 73.756¢ + 118.945¢ = 192.701¢, which is about 10¢ sharp from its JI cents value of 182.404¢. We’ll learn more about tuning methods later. | ||
The critical thing here is that if {{vector|-4 4 -1}} is mapped to 0 steps by {{map|5 8 12}} individually and to 0 steps by {{map|7 11 16}} individually, then in total it comes out to 0 steps in the temperament, and thus is tempered out, or has vector {{vector|0 0}}. | The critical thing here is that if {{vector|-4 4 -1}} is mapped to 0 steps by {{map|5 8 12}} individually and to 0 steps by {{map|7 11 16}} individually, then in total it comes out to 0 steps in the temperament, and thus is tempered out, or has vector {{vector|0 0}}. | ||
Previously we mentioned that any given rank-2 temperaments can be generated by a wide variety of combinations of intervals. In other words, the absolute size of the intervals is not the important part, in terms of their potential for generating the temperament; only their relative size matters. However, for us humans, it’s much easier to make sense of these things if we get them in a good old standard form, by locking one generator to the octave to establish a common basis for comparison, and the other generator to a size less than half of the octave (because anything past the halfway point and it would be the octave-complement of a smaller and therefore in some sense simpler interval). And there’s a way to find this form by transforming our matrix. | Previously we mentioned that any given rank-2 temperaments can be generated by a wide variety of combinations of intervals. In other words, the absolute size of the intervals is not the important part, in terms of their potential for generating the temperament; only their relative size matters. However, for us humans, it’s much easier to make sense of these things if we get them in a good old standard form, by locking one generator to the octave to establish a common basis for comparison, and the other generator to a size less than half of the octave (because anything past the halfway point and it would be the octave-complement of a smaller and therefore in some sense simpler interval). And there’s a way to find this form by transforming our matrix. This time we’ll use elementary ''row'' operations (which are more common than elementary column operations, anyway). Our target this time is a bit harder to explain ahead of time, so this first time through, just watch, and we’ll review the result. | ||
<math> | <math> | ||
| Line 950: | Line 950: | ||
* We’ve made it to a critical point here: we are now able to explain why RTT is called “regular” temperament theory. Regular here is a mathematical term, and I don’t have a straightforward definition of it for you, but it apparently refers to the fact that all intervals in the tuning are combinations of only these specified generators. So there you go. | * We’ve made it to a critical point here: we are now able to explain why RTT is called “regular” temperament theory. Regular here is a mathematical term, and I don’t have a straightforward definition of it for you, but it apparently refers to the fact that all intervals in the tuning are combinations of only these specified generators. So there you go. | ||
* Both {{vector|{{map|5 8 12}} {{map|7 11 16}}}} and {{vector|{{map|1 1 0}} {{map|0 1 4}}}} are equivalent mappings, then. In other words, they are both mapping-row bases of the same mapping row-space. Converting between them we | * Both {{vector|{{map|5 8 12}} {{map|7 11 16}}}} and {{vector|{{map|1 1 0}} {{map|0 1 4}}}} are equivalent mappings, then. In other words, they are both mapping-row bases of the same mapping row-space. Converting between them is sometimes called a “change of basis”, though this is a different sort of “basis” than the basis of a space, like comma bases or mapping-row bases. Using what we know now, it may be clearer to think of it as a “change of generators”. We’ll look at this idea more in the tuning section later. | ||
* Note well: this is not to say that {{map|1 1 0}} or {{map|0 1 4}} ''are'' the generators for meantone. They are generator ''mappings'': when assembled together, they collectively describe behavior of the generators, but they are ''not'' themselves the generators. This situation can be confusing; it confused me for many weeks. I thought of it this way: because the first generator is 2/1 — i.e. {{vector|1 0 0}} maps to {{vector|1 0}} — referring to {{map|1 1 0}} as the octave or period seems reasonable and is effective when the context is clear. And similarly, because the second generator is 3/2 — i.e. {{vector|-1 1 0}} maps to {{vector|0 1}} — referring to {{map|0 1 4}} as the fifth or the generator seems reasonable as is effective when the context is clear. But it's critical to understand that the first generator "being" the octave here is ''contingent upon the definition of the second generator'', and vice versa, the second generator "being" the fifth here is ''contingent upon the definition of the first generator''. Considering {{map|1 1 0}} or {{map|0 1 4}} individually, we cannot say what intervals the generators are. What if the mapping was {{vector|{{map|0 1 4}} {{map|1 2 4}}} instead? We'd still have the first generator mapping as {{map|1 1 0}}, but now that the second generator mapping is {{map|1 2 4}}, the two generators must be the fourth and the fifth. In summary, neither mapping-row describes a generator in a vacuum, but does so in the context of all the other mapping-rows. | * Note well: this is not to say that {{map|1 1 0}} or {{map|0 1 4}} ''are'' the generators for meantone. They are generator ''mappings'': when assembled together, they collectively describe behavior of the generators, but they are ''not'' themselves the generators. This situation can be confusing; it confused me for many weeks. I thought of it this way: because the first generator is 2/1 — i.e. {{vector|1 0 0}} maps to {{vector|1 0}} — referring to {{map|1 1 0}} as the octave or period seems reasonable and is effective when the context is clear. And similarly, because the second generator is 3/2 — i.e. {{vector|-1 1 0}} maps to {{vector|0 1}} — referring to {{map|0 1 4}} as the fifth or the generator seems reasonable as is effective when the context is clear. But it's critical to understand that the first generator "being" the octave here is ''contingent upon the definition of the second generator'', and vice versa, the second generator "being" the fifth here is ''contingent upon the definition of the first generator''. Considering {{map|1 1 0}} or {{map|0 1 4}} individually, we cannot say what intervals the generators are. What if the mapping was {{vector|{{map|0 1 4}} {{map|1 2 4}}} instead? We'd still have the first generator mapping as {{map|1 1 0}}, but now that the second generator mapping is {{map|1 2 4}}, the two generators must be the fourth and the fifth. In summary, neither mapping-row describes a generator in a vacuum, but does so in the context of all the other mapping-rows. | ||
* This also gives us a new way to think about the scale tree patterns. Remember how earlier we pointed out that {{map|12 19 28}} was simply {{map|5 8 12}} + {{map|7 11 16}}? Well, if {{vector|{{map|5 8 12}} {{map|7 11 16}}}} is a way of expressing meantone in terms of its two generators, you can imagine that 12-ET is the point where those two generators converge on being the same exact size<ref>For real numbers <span><math>p,q</math></span> we can make the two generators respectively <span><math>\frac{p}{5p+7q}</math></span> and <span><math>\frac{q}{5p+7q}</math></span> of an octave, e.g. <span><math>(p,q)=(1,0)</math></span> for 5-ET, <span><math>(0,1)</math></span> for 7-ET, <span><math>(1,1)</math></span> for 12-ET, and many other possibilities.</ref>. If they become the same size, then they aren’t truly two separate generators, or at least there’s no effect in thinking of them as separate. And so for convenience you can simply combine their mappings into one. You could imagine gradually increasing the size of one generator and decreasing the size of the other until they were both 100¢. As long as you maintain the correct proportion, you'll stay along the meantone line.. | * This also gives us a new way to think about the scale tree patterns. Remember how earlier we pointed out that {{map|12 19 28}} was simply {{map|5 8 12}} + {{map|7 11 16}}? Well, if {{vector|{{map|5 8 12}} {{map|7 11 16}}}} is a way of expressing meantone in terms of its two generators, you can imagine that 12-ET is the point where those two generators converge on being the same exact size<ref>For real numbers <span><math>p,q</math></span> we can make the two generators respectively <span><math>\frac{p}{5p+7q}</math></span> and <span><math>\frac{q}{5p+7q}</math></span> of an octave, e.g. <span><math>(p,q)=(1,0)</math></span> for 5-ET, <span><math>(0,1)</math></span> for 7-ET, <span><math>(1,1)</math></span> for 12-ET, and many other possibilities.</ref>. If they become the same size, then they aren’t truly two separate generators, or at least there’s no effect in thinking of them as separate. And so for convenience you can simply combine their mappings into one. You could imagine gradually increasing the size of one generator and decreasing the size of the other until they were both 100¢. As long as you maintain the correct proportion, you'll stay along the meantone line.. | ||
| Line 975: | Line 975: | ||
</math> | </math> | ||
I won’t work through this by hand, but if you’re feeling | I won’t work through this by hand, but if you’re feeling up to it, you could do Gauss-Jordan elimination on this thing, and what you’d achieve is this: | ||
<math> | <math> | ||
| Line 1,103: | Line 1,103: | ||
The latter is sometimes called the “musician’s form” of the temperament, because it’s easy to reason about from a musical perspective. But it turns out there’s not a particularly clean function for consistently getting to it, or even defining it. | The latter is sometimes called the “musician’s form” of the temperament, because it’s easy to reason about from a musical perspective. But it turns out there’s not a particularly clean function for consistently getting to it, or even defining it. | ||
Another form you might want the mapping-row basis in is the type Graham Breed's temperament finder puts them in, where all values in a mapping-row basis row may be negative, but this is in the service of the generator being less than half the size of the period. For example, for meantone, we'd want the fourth instead of the fifth, and we can see that | Another form you might want the mapping-row basis in is the type Graham Breed's temperament finder puts them in, where all values in a mapping-row basis row may be negative, but this is in the service of the generator being positive, and less than half the size of the period. For example, for meantone, we'd want the fourth instead of the fifth, and we can see that | ||
<math> | <math> | ||
| Line 1,118: | Line 1,118: | ||
To be clear, canonical form isn’t necessary to avoid ambiguity: you will never find a comma basis that could represent more than one temperament. | To be clear, canonical form isn’t necessary to avoid ambiguity: you will never find a comma basis that could represent more than one temperament. | ||
I've seen many specialized matrix forms used in RTT for problems like this, such as [ | I've seen many specialized matrix forms used in RTT for problems like this, such as "[[IRREF|integer canonical form]]", [https://en.wikipedia.org/wiki/Hermite_normal_form Hermite Normal Form], and maybe others. What we will be using here is a form I’ve developed recently in collaboration with Dave Keenan that we’re calling [[TBD canonical form]].<ref>Historically, Hermite Normal Form was used as if it gave a unique identifier for each temperament, when in fact it did not. It failed to remove possibly-hidden common factors in the columns of comma bases and rows of mapping-row bases, leading to situations which were named "[[torsion]]" and "[[contorsion]]", respectively. Hermite Canonical Form goes too far; it reduces the matrix's diagonals to all 1's or 0's, which loses important information for temperaments with non-octave periods. Integer canonical form removes such common factors without compromising non-octave periods, therefore truly giving a unique identifier, and also eliminating the need to deal with enfactored mappings or comma-bases.</ref>. | ||
For example, the canonical form of meantone is: | For example, the canonical form of meantone is: | ||
| Line 1,169: | Line 1,169: | ||
* They both exist on the left half of tuning duality, on the side built up out of ETs which concerns rank (not the side built up out of commas, which uses vectors/columns, and concerns nullity). | * They both exist on the left half of tuning duality, on the side built up out of ETs which concerns rank (not the side built up out of commas, which uses vectors/columns, and concerns nullity). | ||
The main difference between the two is superficial, and has to do with the “multi” part of the name. A plain covector comes in only one type, but a multicovector can be a bicovector, tricovector, | The main difference between the two is superficial, and has to do with the “multi” part of the name. A plain covector comes in only one type, but a multicovector can be a bicovector, tricovector, quadricovector, etc. Yes, a multicovector can even be a plain covector, which can be called a monocovector when there might otherwise be ambiguity. Depending on its numeric prefix, a multicovector will be written with a different count of brackets on either side. For example, a bicovector uses two of each: {{multicovector|}}. A tricovector uses three of each: {{multicovector|rank=3|}}. And of course a (mono)covector is written with one of each, like {{map|}}. | ||
In order to make these materials as accessible as possible, I have been doing what I can to lean away from RTT jargon and instead toward generic, previously established mathematical and/or musical concepts. That is why I have avoided the terms "monzo", "val", "breed", and why I will now avoid "wedgie". When established mathematical and/or musical concepts are unavailable, we can at least use unmistakable analogs built upon what we do have. In this case, if in RTT we use covectors to represent maps, then analogously, we can refer to the thing multicovectors represent in RTT as a '''multimap'''. | In order to make these materials as accessible as possible, I have been doing what I can to lean away from RTT jargon and instead toward generic, previously established mathematical and/or musical concepts. That is why I have avoided the terms "monzo", "val", "breed", and why I will now avoid "wedgie". When established mathematical and/or musical concepts are unavailable, we can at least use unmistakable analogs built upon what we do have. In this case, if in RTT we use covectors to represent maps, then analogously, we can refer to the thing multicovectors represent in RTT as a '''multimap'''. | ||
| Line 1,179: | Line 1,179: | ||
Alright, then, sounds great! But how do I convert a mapping-row basis to a multimap? The process is doable. It’s closely related to the wedge product<ref>The wedge product is also known as the exterior product. Exterior and interior products (∧ and ⨼) should not be confused with outer and inner products, which in RTT are ordinary matrix products between a vector and a covector. The outer product gives a matrix and the inner product a scalar. e.g. [1 2⟩⟨3 4] = ⟨[3 4⟩ [6 8⟩] and ⟨3 4][1 2⟩ = 11. In our application, the inner product is the same as the dot product used for maps and intervals.</ref> (hence the name “wedgie”), which we write it with the symbol ∧. | Alright, then, sounds great! But how do I convert a mapping-row basis to a multimap? The process is doable. It’s closely related to the wedge product<ref>The wedge product is also known as the exterior product. Exterior and interior products (∧ and ⨼) should not be confused with outer and inner products, which in RTT are ordinary matrix products between a vector and a covector. The outer product gives a matrix and the inner product a scalar. e.g. [1 2⟩⟨3 4] = ⟨[3 4⟩ [6 8⟩] and ⟨3 4][1 2⟩ = 11. In our application, the inner product is the same as the dot product used for maps and intervals.</ref> (hence the name “wedgie”), which we write it with the symbol ∧. | ||
First I’ll list the steps. Don’t worry if it doesn’t all make sense the first time. We’ll work through an example and go into more detail as we do. To be clear, what we're doing here is | First I’ll list the steps. Don’t worry if it doesn’t all make sense the first time. We’ll work through an example and go into more detail as we do. To be clear, what we're doing here is different from the strict definition of the wedge product as you may see it elsewhere; I'm specifically here describing the process for finding the multimap in the form you're going to be interested in for RTT purposes. | ||
# Take each combination of <span><math>r</math></span> primes where <span><math>r</math></span> is the rank, sorted in [https://en.wikipedia.org/wiki/Lexicographic_order lexicographic order], e.g. if we're in the 7-limit, we'd have <span><math>(2,3,5)</math></span>, <span><math>(2,3,7)</math></span>, <span><math>(2,5,7)</math></span>, and <span><math>(3,5,7)</math></span>. | # Take each combination of <span><math>r</math></span> primes where <span><math>r</math></span> is the rank, sorted in [https://en.wikipedia.org/wiki/Lexicographic_order lexicographic order], e.g. if we're in the 7-limit, we'd have <span><math>(2,3,5)</math></span>, <span><math>(2,3,7)</math></span>, <span><math>(2,5,7)</math></span>, and <span><math>(3,5,7)</math></span>. | ||
| Line 1,188: | Line 1,188: | ||
And you've got your multimap! | And you've got your multimap! | ||
Another way to think about this is that you've found all of the '''[https://en.wikipedia.org/wiki/Minor_(linear_algebra) minors]''' of the matrix, where a minor is the determinant of a square submatrix. So we can think of multimaps as lists of minors<ref>This operation is called the wedge product. Another way to think of it is as the difference between two outer products. For example, consider wedging {{map|7 11 16}} with {{map|12 19 28}}. Call these u and v, respectively. So u∧v (that's the wedge product) is the same thing as u.v - v.u (where the dots are outer products). Those two outer products are:<br> | Another way to think about this is that you've found all of the '''[https://en.wikipedia.org/wiki/Minor_(linear_algebra) minors]''' (short for “minor determinants”) of the matrix, where a minor is the determinant of a square submatrix. So we can think of multimaps as lists of minors<ref>This operation is called the wedge product. Another way to think of it is as the difference between two outer products. For example, consider wedging {{map|7 11 16}} with {{map|12 19 28}}. Call these u and v, respectively. So u∧v (that's the wedge product) is the same thing as u.v - v.u (where the dots are outer products). Those two outer products are:<br> | ||
<br> | <br> | ||
{{vector|{{covector|84 133 196}} {{covector|132 209 308}} {{covector|192 304 448}}}}<br> | {{vector|{{covector|84 133 196}} {{covector|132 209 308}} {{covector|192 304 448}}}}<br> | ||
| Line 1,669: | Line 1,669: | ||
|- | |- | ||
!RTT jargon | !RTT jargon | ||
|val | |val | ||
|list of vals | |list of vals | ||
|wedgie, multival | |wedgie, multival | ||
| Line 1,693: | Line 1,693: | ||
I couldn’t have put this together without the help of: | I couldn’t have put this together without the help of: | ||
* [[Dave Keenan]] | |||
* [[Paul Erlich]] | * [[Paul Erlich]] | ||
* [[Mike Battaglia]] | * [[Mike Battaglia]] | ||
* [[Graham Breed]] | * [[Graham Breed]] | ||
* [[Steve Martin]] | * [[Steve Martin]] | ||
* [[Herman Miller]] | * [[Herman Miller]] | ||
| Line 1,712: | Line 1,712: | ||
Happy tempering! | Happy tempering! | ||