Dave Keenan & Douglas Blumeyer's guide to RTT/Units analysis

From Xenharmonic Wiki
Revision as of 17:42, 15 December 2022 by Cmloegcmluin (talk | contribs) (tweak intro)
Jump to navigation Jump to search

This is article 5 in the series of articles about RTT, by Dave Keenan & Douglas Blumeyer (D&D for short). This article is not strongly sequenced with the others, however, so it can be read at any time.

In this article, we will be conducting units analyses of regular temperament structures in order to better understand how they connect with each other to give us the information we seek about sizes in cents, generator counts, and more.

Stylistic note

It is a rule of the International System of Units (SI) that unit symbols, like [math]\displaystyle{ \small\mathsf{km}/\mathsf{h} }[/math], are set in plain upright type. This helps to distinguish them from quantity symbols or variables like [math]\displaystyle{ d }[/math] for distance and [math]\displaystyle{ t }[/math] for time, which are usually set in italics (or bold, for vectors).

It is also an SI rule that when one unit is divided by another, their symbols are written horizontally, either with a slash between them like [math]\displaystyle{ \small\mathsf{km}/\mathsf{h} }[/math] (the style we prefer), or with a middle dot or narrow no-break space between them and an exponent of -1 on the second unit, like [math]\displaystyle{ \small\mathsf{km\!·\!h^{-1}} }[/math] or [math]\displaystyle{ \small\mathsf{km\,h^{-1}} }[/math]. They should never be written in the "built-up" style [math]\displaystyle{ \frac{\mathsf{km}}{\mathsf{h}} }[/math] as variables often are, e.g. [math]\displaystyle{ \frac{d}{t} }[/math].

Nor are units ever subscripted, like [math]\displaystyle{ \small\mathsf{h_1} }[/math], as variables often are, like [math]\displaystyle{ t_1 }[/math].

But when performing a units analysis, we are essentially treating the units as if they are — if not variables — at least constants, and so in this article we will often violate these rules in the interest of explanation.

Because we use multiple text styles for our variables to indicate the class of object they represent,[1] including plain and bold upright styles, and because we also use a plain upright style for our ordinary units and a bold upright style for what we call vectorized units, we distinguish unit symbols from variables by setting the unit symbols in a [math]\displaystyle{ \small\mathsf{sans}\text{-}\mathsf{serif}\text{ }\mathsf{font} }[/math] while variables are set in a [math]\displaystyle{ \text{serif font} }[/math].

Introduction

In regular temperament theory (RTT), vectors and matrices are used to represent information about intervals, temperaments, and tunings. Typically, the values in these objects are shown only as numerical amounts, that is, without any indication of their units.

For instance, the interval ratio [math]\displaystyle{ \frac54 }[/math] is represented by the vector [-2 0 1:


[math]\displaystyle{ \left[ \begin{array} {rrr} {-2} \\ 0 \\ 1 \\ \end{array} \right] }[/math]


One of the first things a student of RTT learns — if they haven't already learned it from studying JI — is that a prime-count vector like this is a concise way to represent an interval in terms of the prime harmonics which comprise it. In this example, the prime factorization of [math]\displaystyle{ \frac54 }[/math] is the product of prime powers [math]\displaystyle{ 2^{{-2}}×3^{0}×5^{1} }[/math]. That representation isn't bad, but we can improve upon it. If we all agree to memorize the sequence of prime numbers (2, 3, 5), then we're able to assume that sequence of bases, and thereby get away with representing [math]\displaystyle{ \frac54 }[/math] as nothing more than that sequence of exponents: (-2, 0, 1).

We can say that the prime harmonic bases that we've dropped here are the units of these values, where the exponents give the corresponding amounts (or counts; the word "counts" is more natural when the amounts are integers). Calling these primes "units" is no different, really, than saying that the "Hz" in "440 Hz" answers the question,

"440 what?"

"hertz"

or that the cents symbol "[math]\displaystyle{ \mathsf{¢} }[/math]" in the amount "1200 [math]\displaystyle{ \mathsf{¢} }[/math]" answers the question,

"1200 what?"

"cents"

The answer to the question "-2 what?" in this prime-count vector for [math]\displaystyle{ \frac54 }[/math] is "prime 2's". Similarly, the answer to "0 what?" is "prime 3's", and "1 what?" is "prime 5's".

What we have here, then, is not a singular unit "primes", as we have with the singular unit of hertz, or the singular unit of cents. In fact, each prime is its own separate unit. These separate prime units are certainly closely related, though. It may be helpful to think of them as a family of related units, which share a symbol, [math]\displaystyle{ \small\mathsf{p} }[/math], distinguishing themselves from each other using subscripts. Prime 2, being the 1st prime, would be represented as [math]\displaystyle{ \small\mathsf{p_1} }[/math], read "p sub 1". And prime 3, being the 2nd prime, may be represented as [math]\displaystyle{ \small\mathsf{p_2} }[/math], read "p sub 2". And prime 5 is [math]\displaystyle{ \small\mathsf{p_3} }[/math], "p sub 3". And so forth.

Explicitly labeling the prime-count vector in this way, then, we'd get:


[math]\displaystyle{ \left[ \begin{array} {rrr} {-2} \mathsf{p_1} \\ 0 \mathsf{p_2} \\ 1 \mathsf{p_3} \\ \end{array} \right] }[/math]


Clearly, this version which includes both the counts and the units is a bit cumbersome, which is why we don't usually see this. In general, the representation without units is the right representation for day-to-day work in RTT; the conciseness we achieve by letting the prime units be implicit is critical to its usefulness.

We can use the shorthand of a bold [math]\displaystyle{ \small 𝗽 }[/math] to represent all the [math]\displaystyle{ \small\mathsf{p} }[/math]'s collectively, in the same way we use bold variables to represent vectors. In many cases we can treat this as if it is a singular unit "primes", but the bolding is there to remind us that it isn't really. We call this sort of unit a vectorized unit, and you can read more about them in the later section of this article dedicated to that topic. Using the vectorized unit we could write the above vector, with units, as [-2 0 1[math]\displaystyle{ \small 𝗽 }[/math].

But the purpose of this article is not to argue that the vector notated even with the single bold unit symbol is preferable for general use. The actual purpose here is to conduct a review of basic RTT concepts, but with particular attention paid to the units of the values involved. We may call such a review a "units analysis".

We suggest that a heightened awareness of the units of RTT objects can help us compartmentalize our understanding of various RTT objects, as well as broaden and deepen our understanding of how RTT works overall. After all, in an important sense, practitioners of RTT share traits with physicists more so than pure mathematicians, because what we model are physical phenomena of sound, with units of measurement grounded in reality.[2]

Units vs dimensions

The type of analysis we're calling a "units analysis" here is more commonly called a "dimensional analysis", where "dimension" here is a scientific term for physical properties such as length, time, and mass. However, the word "dimension" already has an important mathematical meaning in RTT, as the number of coordinates in our just interval vectors. In fact we have already avoided three other potential uses of "dimension" in RTT by using "order", "shape" and "rank" instead. So we will limit our use of the physical sense of "dimension" to this article, and elsewhere refer to it as units analysis.

In science and engineering, and indeed everyday life, values are understood to have both quantity and units, where the quantity shows up as the number, and the units follow it, imbuing the number with meaning. The physical dimensions, then, are properties that these units might have; for examples, kilometers and miles are both units of length, minutes and seconds are both units of time, and octaves and cents are both units of relative pitch (defined as log of frequency ratio, to avoid confusion with perceptual notions of pitch, such as mels). So by referring to a "dimensional analysis" as a "units analysis", we are not being disingenuous; we're merely highlighting a different aspect of the same idea.

And while breaking from established terminology is always a con to some extent, we note that there are definitely pros to us highlighting the analysis differently in this way. It is plain to see that our needs as musicians practicing RTT are different from those of scientists who are generally modeling the physical world. To physicists, quantities having units is taken for granted, and so it makes sense that it would be a "dimensional analysis" whenever they get more deeply interested in how these units interrelate via their dimensions; in our RTT application, on the other hand, the units of our quantities are not widely acknowledged, and so it's helpful for us to illuminate the presence of these units in the first place by calling it a "units analysis". Furthermore, dimensions in physics do often get complicated enough that it's the actual dimensions which warrant analysis (for an example, the dimensions of pressure are mass over length by time squared), whereas in RTT the actual dimensions of our units never get too complicated, and it's really only the units that we're ever worried about.

We should also acknowledge that not all of the things we're calling "units" in our system would be properly considered units to a physicist, namely: our prime units and generator units. Primes and generators are countable things. So when we measure them, it's easy; we just count them. We don't need a standard meter engraved on precious metal and kept in a vault.[3] In one way of thinking, our prime counts and generator counts have no units, but the standard description says that they have the unit one, or their unit is unity, which is usually invisible, but we (Dave and Douglas) choose to sometimes represent it as a double-struck digit [math]\displaystyle{ \small \mathsf{𝟙} }[/math] for explanatory purposes. The standard description says instead that they have no dimension, they are called dimensionless units. However, outside this article we use the shorthand "is unitless" when we mean "has dimensionless units" in order to avoid confusion with the RTT meaning of "dimension". And so while counts of primes and generators behave well enough within our physics-inspired analysis, we do recognize and respect the limitations of comparing what we're doing to what physicists actually do. We can say that [math]\displaystyle{ \small\mathsf{p_1} }[/math] is just the unit of the quantity "prime-one count" and [math]\displaystyle{ \small\mathsf{g_2} }[/math] is the unit of the quantity "generator-two count", and define each prime and each generator as a having its own different dimension, which is different still from the log-frequency-ratio dimension of octaves and cents, so that none of these cancel with each other. However, if you're a hardline physicist, or for whatever reason object to thinking of these things as "units", then we suggest you might be amenable to thinking of them as "identifiers", which serve to identify the kinds of objects we're counting.[4]

Illustrative examples

Size of JI interval

As a basic illustrative example of the power of such a units analysis, let's find the size in cents of our [math]\displaystyle{ \frac54 }[/math] interval. This interval is 5-limit, and the just tuning map for this prime limit is represented by the vector [math]\displaystyle{ 𝒋 }[/math] = 1200 1901.955 2786.314]:


[math]\displaystyle{ \begin{array} {c} 𝒋 \\ \left[ \begin{array} {rrr} 1200 & 1901.955 & 2786.314 \end{array} \right] \end{array} }[/math]


In the typical fashion, without thinking about units, we'd tune [math]\displaystyle{ \frac54 }[/math]'s prime-count vector with this tuning map to find its size. Let's start calling the [math]\displaystyle{ \frac54 }[/math] vector [math]\displaystyle{ \textbf{i} }[/math], for "interval". So in other words, we do [math]\displaystyle{ 𝒋·\textbf{i} }[/math]:


[math]\displaystyle{ \begin{align} \begin{array} {c} 𝒋 \\ \left[ \begin{array} {rrr} 1200 & 1901.955 & 2786.314 \end{array} \right] \end{array} \begin{array} {c} \textbf{i} \\ \left[ \begin{array} {rrr} {-2} \\ 0 \\ 1 \\ \end{array} \right] \end{array} &\begin{array}{c}\\=\end{array} \begin{array} {c} 𝒋\textbf{i} = \mathrm{o} \\ \left[ \begin{array} {rrr} (1200×{-2}) + (1901.955×0) + (2786.314×1) \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{o} \\ \left[ \begin{array} {rrr} {-2400} + 0 + 2786.314 \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{o} \\ \left[ \begin{array} {rrr} 386.314 \end{array} \right] \end{array} \end{align} }[/math]


Now let's take a look at how this basic operation works out when we include units. We've already determined the units of the prime-count vector are the primes [math]\displaystyle{ \small\mathsf{p_1} }[/math], [math]\displaystyle{ \small\mathsf{p_2} }[/math], and [math]\displaystyle{ \small\mathsf{p_3} }[/math]. But what about the tuning map? Our instinct may be to go with the simplest take, that every entry is in cents:


[math]\displaystyle{ \begin{array} {c} 𝒋 \\ \left[ \begin{array} {rrr} 1200\,{\large\mathsf{¢}} & 1901.955\,{\large\mathsf{¢}} & 2786.314\,{\large\mathsf{¢}} \end{array} \right] \end{array} }[/math]


Well, let's give this a shot and see what we get.


[math]\displaystyle{ \begin{align} \begin{array} {c} 𝒋 \\ \left[ \begin{array} {rrr} 1200\,{\large\mathsf{¢}} & 1901.955\,{\large\mathsf{¢}} & 2786.314\,{\large\mathsf{¢}} \end{array} \right] \end{array} \begin{array} {c} \textbf{i} \\ \left[ \begin{array} {rrr} {-2}\,\mathsf{p_1} \\ 0\,\mathsf{p_2} \\ 1\,\mathsf{p_3} \\ \end{array} \right] \end{array} &\begin{array}{c}\\=\end{array} \begin{array} {c} 𝒋\textbf{i} = \mathrm{o} \\ \left[\begin{array} {rrr} (1200\,{\large\mathsf{¢}}×{-2}\,\mathsf{p_1}) + (1901.955\,{\large\mathsf{¢}}×0\,\mathsf{p_2}) + (2786.314\,{\large\mathsf{¢}}×1\,\mathsf{p_3}) \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{o} \\ \left[ \begin{array} {rrr} {-2400}\,{\large\mathsf{¢}}\mathsf{p_1} + 0\,{\large\mathsf{¢}}\mathsf{p_2} + 2786.314\,{\large\mathsf{¢}}\mathsf{p_3} \end{array} \right] \end{array} \end{align} }[/math]


But now we're stuck. We appear to have three different amounts which can not be reconciled with each other and thus cannot be combined. Furthermore, the units for each of these three amounts are compound units that don't seem to make much sense: what would a [math]\displaystyle{ \mathsf{¢}\small\mathsf{p_1} }[/math] be, exactly? No idea. We must have gone wrong at an earlier step.

Indeed, we went wrong back when we accepted the units of the just tuning map [math]\displaystyle{ 𝒋 }[/math] to be simply cents. We failed to recognize the function of this tuning map, which is to convert prime-count vectors — such as the one for [math]\displaystyle{ \frac54 }[/math] we looked at earlier — from units of primes into units of cents.

Compound units allow for the conversion of amounts from one type of unit into another (they are as opposed to simple units which, as the name suggests, are simply one type of unit). A familiar everyday example of a compound unit is [math]\displaystyle{ \small\mathsf{km}/\mathsf{h} }[/math] (while both [math]\displaystyle{ \small\mathsf{km} }[/math] and [math]\displaystyle{ \small\mathsf{h} }[/math] are separately simple units). We often think of amounts in [math]\displaystyle{ \small\mathsf{km}/\mathsf{h} }[/math] in and of themselves; through experience, we've developed an association with what 100 [math]\displaystyle{ \small\mathsf{km}/\mathsf{h} }[/math] is like. But there's another important sense in which values with the compound unit [math]\displaystyle{ \small\mathsf{km}/\mathsf{h} }[/math] allow us to convert values in hours ([math]\displaystyle{ \small\mathsf{h} }[/math]) to values in kilometers ([math]\displaystyle{ \small\mathsf{km} }[/math]). For example, if I drive for half an hour at 100 [math]\displaystyle{ \small\mathsf{km}/\mathsf{h} }[/math], then I can see how I will have gone 50 [math]\displaystyle{ \small\mathsf{km} }[/math]:


[math]\displaystyle{ \frac{1}{2}\,\mathsf{h} × 100\,\frac{\mathsf{km}}{\mathsf{h}} = \frac{100}{2}\,\cancel{\mathsf{h}}\frac{\mathsf{km}}{\cancel{\mathsf{h}}} = 50\,\mathsf{km} }[/math]


So the type of units we're looking for in our just tuning map [math]\displaystyle{ 𝒋 }[/math] are something more like this [math]\displaystyle{ \small\mathsf{km}/\mathsf{h} }[/math] example. We need compound units that capture the fact that the tuning map converts each different prime into cents.

For starters, we know that there are 1200 cents per octave, and since the octave is the same as prime 2, the first prime harmonic, [math]\displaystyle{ \small\mathsf{p_1} }[/math], we can express that relationship as 1200 [math]\displaystyle{ \mathsf{¢}/\small\mathsf{p_1} }[/math]. So following the same pattern for the units of the other two entries of the just tuning map, we find [math]\displaystyle{ 𝒋 }[/math] to be:


[math]\displaystyle{ \left[ \begin{array} {rrr} 1200\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}} & 1896.578\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}} & 2786.314\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}} \end{array} \right] }[/math]


And repeating our mapping experiment [math]\displaystyle{ 𝒋·\textbf{i} }[/math], then, but this time using these compound units:


[math]\displaystyle{ \begin{align} \begin{array} {c} 𝒋 \\ \left[ \begin{array} {rrr} 1200\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}} & 1901.955\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}} & 2786.314\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}} \end{array} \right] \end{array} \begin{array} {c} \textbf{i} \\ \left[ \begin{array} {rrr} {-2}\,\mathsf{p_1} \\ 0\,\mathsf{p_2} \\ 1\,\mathsf{p_3} \\ \end{array} \right] \end{array} &\begin{array}{c}\\=\end{array} \begin{array} {c} 𝒋\textbf{i} = \mathrm{o} \\ \left[\begin{array} {rrr} (1200\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}}×{-2}\,\mathsf{p_1}) + (1901.955\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}}×0\,\mathsf{p_2}) + (2786.314\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}}×1\,\mathsf{p_3}) \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{o} \\ \left[ \begin{array} {rrr} {-2400}\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{p_1}}}\cancel{\mathsf{p_1}} + 0\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{p_2}}}\cancel{\mathsf{p_2}} + 2786.314\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{p_3}}}\cancel{\mathsf{p_3}} \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{o} \\ \left[ \begin{array} {rrr} 386.314\,{\large\mathsf{¢}} \end{array} \right] \end{array} \end{align} }[/math]


So now we get a reasonable result. The compound units lead to all of the prime units canceling out and disappearing, so we are left with all values in cents. At this point, they can all be combined into a single amount.

Becoming aware of the fact that the units of tuning maps are not simply cents, but rather cents per prime, [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math], may not feel revelatory. Really, none of the results of a proper units analysis should be terribly surprising. The expectation here is simply that as we expand our survey, we find that all the units of the various RTT objects collaborate well together, coming together in a big picture where everything makes sense together.

At this point, we've actually only looked at a JI interval tuned by a just tuning map. We haven't even begun to apply our units analysis to distinctively RTT objects yet.

Size of tempered interval

Let's take a look at another tuning map, the one for 5-limit 12-ET with an unchanged octave: 1200 1900 2800]. Imbued with its units, that looks like:


[math]\displaystyle{ \begin{array} {c} 𝒕 \\ \left[ \begin{array} {rrr} 1200\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}} & 1900\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}} & 2800\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}} \\ \end{array} \right] \end{array} }[/math]


And we could tune the same vector we've been looking at so far — the one for [math]\displaystyle{ \frac54 }[/math], [-2 0 1 — with this new tuning map:


[math]\displaystyle{ \begin{align} \begin{array} {c} 𝒕 \\ \left[ \begin{array} {rrr} 1200\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}} & 1900\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}} & 2800\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}} \\ \end{array} \right] \end{array} \begin{array} {c} \textbf{i} \\ \left[ \begin{array} {rrr} {-2}\,\mathsf{p_1} \\ 0\,\mathsf{p_2} \\ 1\,\mathsf{p_3} \\ \end{array} \right] \end{array} &\begin{array}{c}\\=\end{array} \begin{array} {c} 𝒕\textbf{i} = \mathrm{a} \\ \left[\begin{array} {rrr} (1200\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}}×{-2}\,\mathsf{p_1}) + (1900\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}}×0\,\mathsf{p_2}) + (2800\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}}×1\,\mathsf{p_3}) \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{a} \\ \left[ \begin{array} {rrr} {-2400}\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{p_1}}}\cancel{\mathsf{p_1}} + 0\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{p_2}}}\cancel{\mathsf{p_2}} + 2800\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{p_3}}}\cancel{\mathsf{p_3}} \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{a} \\ \left[ \begin{array} {rrr} 400\,{\large\mathsf{¢}} \end{array} \right] \end{array} \end{align} }[/math]


Unsurprisingly, since the structure is the exact same here, we end up with a result in the same units, just a different amount.

Mapped interval

Now it's also very common to look at temperaments as mappings. The mapping for 12-ET is [12 19 28]}. This is clearly not going to cents; it's taking us instead to steps of the ET. For better consistency with temperaments that are rank-2 and beyond, we're going to go ahead and refer to steps here as generators, and even label this generator as [math]\displaystyle{ \small\mathsf{g_1} }[/math] even though here there's only one of them:


[math]\displaystyle{ \begin{align} \begin{array} {c} M\textbf{i} \\ \left[ \begin{array} {rrr} 12\,\frac{\mathsf{g_1}}{\mathsf{p_1}} & 19\,\frac{\mathsf{g_1}}{\mathsf{p_2}} & 28\,\frac{\mathsf{g_1}}{\mathsf{p_3}} \\ \end{array} \right] \end{array} \begin{array} {c} \textbf{i} \\ \left[ \begin{array} {rrr} {-2}\,\mathsf{p_1} \\ 0\,\mathsf{p_2} \\ 1\,\mathsf{p_3} \\ \end{array} \right] \end{array} &\begin{array}{c}\\=\end{array} \begin{array} {c} M\textbf{i} = \textbf{y} \\ \left[\begin{array} {rrr} (12\,\frac{\mathsf{g_1}}{\mathsf{p_1}}×{-2}\,\mathsf{p_1}) + (19\,\frac{\mathsf{g_1}}{\mathsf{p_2}}×0\,\mathsf{p_2}) + (28\,\frac{\mathsf{g_1}}{\mathsf{p_3}}×1\,\mathsf{p_3}) \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \textbf{y} \\ \left[ \begin{array} {rrr} {-24}\,\frac{\mathsf{g_1}}{\cancel{\mathsf{p_1}}}\cancel{\mathsf{p_1}} + 0\,\frac{\mathsf{g_1}}{\cancel{\mathsf{p_2}}}\cancel{\mathsf{p_2}} + 28\,\frac{\mathsf{g_1}}{\cancel{\mathsf{p_3}}}\cancel{\mathsf{p_3}} \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \textbf{y} \\ \left[ \begin{array} {rrr} 4\,\mathsf{g_1} \end{array} \right] \end{array} \end{align} }[/math]


Rank-2 mapped interval

So what about rank-2? Suppose we have more than one generator. Let's try meantone temperament. Looking at this mapping, we can see by columns we have the different primes and by rows we have the different generators:


[math]\displaystyle{ \begin{align} \begin{array} {c} M \\ \left[ \begin{array} {rrr} 1\,\frac{\mathsf{g_1}}{\mathsf{p_1}} & 1\,\frac{\mathsf{g_1}}{\mathsf{p_2}} & 0\,\frac{\mathsf{g_1}}{\mathsf{p_3}} \\ 0\,\frac{\mathsf{g_2}}{\mathsf{p_1}} & 1\,\frac{\mathsf{g_2}}{\mathsf{p_2}} & 4\,\frac{\mathsf{g_2}}{\mathsf{p_3}} \\ \end{array} \right] \end{array} \begin{array} {c} \textbf{i} \\ \left[ \begin{array} {rrr} {-2}\,\mathsf{p_1} \\ 0\,\mathsf{p_2} \\ 1\,\mathsf{p_3} \\ \end{array} \right] \end{array} &\begin{array}{c}\\=\end{array} \begin{array} {c} M\textbf{i} = \textbf{y} \\ \left[\begin{array} {rrr} (1\,\frac{\mathsf{g_1}}{\mathsf{p_1}}×{-2}\,\mathsf{p_1}) + (1\,\frac{\mathsf{g_1}}{\mathsf{p_2}}×0\,\mathsf{p_2}) + (0\,\frac{\mathsf{g_1}}{\mathsf{p_3}}×1\,\mathsf{p_3}) \\ (0\,\frac{\mathsf{g_2}}{\mathsf{p_1}}×{-2}\,\mathsf{p_1}) + (1\,\frac{\mathsf{g_2}}{\mathsf{p_2}}×0\,\mathsf{p_2}) + (4\,\frac{\mathsf{g_2}}{\mathsf{p_3}}×1\,\mathsf{p_3}) \\ \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \textbf{y} \\ \left[ \begin{array} {rrr} {-2}\,\frac{\mathsf{g_1}}{\cancel{\mathsf{p_1}}}\cancel{\mathsf{p_1}} + 0\,\frac{\mathsf{g_1}}{\cancel{\mathsf{p_2}}}\cancel{\mathsf{p_2}} + 0\,\frac{\mathsf{g_1}}{\cancel{\mathsf{p_3}}}\cancel{\mathsf{p_3}} \\ 0\,\frac{\mathsf{g_2}}{\cancel{\mathsf{p_1}}}\cancel{\mathsf{p_1}} + 0\,\frac{\mathsf{g_2}}{\cancel{\mathsf{p_2}}}\cancel{\mathsf{p_2}} + 4\,\frac{\mathsf{g_2}}{\cancel{\mathsf{p_3}}}\cancel{\mathsf{p_3}} \\ \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \textbf{y} \\ \left[ \begin{array} {rrr} {-2}\,\mathsf{g_1} \\ 4\,\mathsf{g_2} \\ \end{array} \right] \end{array} \end{align} }[/math]


Our result here is a generator-count vector. This is useful itself. It tells us that [math]\displaystyle{ \frac54 }[/math] in this form of meantone is represented by two approximate-octave generators down and four approximate-fifth generators back up.

Just as we used the shorthand of a bold [math]\displaystyle{ \small 𝗽 }[/math] to represent all the [math]\displaystyle{ \small\mathsf{p} }[/math]'s collectively, we can use a bold [math]\displaystyle{ \small 𝗴 }[/math] to represent all the [math]\displaystyle{ \small\mathsf{g} }[/math]'s collectively. Using this vectorized unit we could write the above vector, with units, as [-2 4}[math]\displaystyle{ \small 𝗴 }[/math].

Rank-2 size of tempered interval

But what if we now want to get from here to a size in cents? Well, we can't use a meantone tuning map anymore. Here's an example meantone tuning map, specifically quarter-comma tuning:


[math]\displaystyle{ \begin{array} {c} 𝒕 \\ \left[ \begin{array} {rrr} 1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}} & 1896.578\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}} & 2786.314\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}} \\ \end{array} \right] \end{array} }[/math]


We can't combine this with our generator-count vector. For starters, they have different proportions; our generator-count vector is a [math]\displaystyle{ (r, 1) }[/math]-shaped vector, while this tuning map is a [math]\displaystyle{ (1, d) }[/math]-shaped covector; [math]\displaystyle{ d }[/math] and [math]\displaystyle{ r }[/math] are what need to match here, and they don't. But we can also use our units analysis to help realize why we can't use this here: the tuning map is designed to convert things from units of primes [math]\displaystyle{ \small 𝗽 }[/math] into units of cents [math]\displaystyle{ \mathsf{¢} }[/math], but our generator-count vector isn't in units of primes; it's in units of generators [math]\displaystyle{ \small 𝗴 }[/math].

What we need to use instead if we want to get from our generator-count vector to its cents is a generator tuning map. Here's the generator tuning map for quarter-comma meantone:


[math]\displaystyle{ \begin{array} {c} 𝒈 \\ \left[ \begin{array} {rrr} 1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{g_1}} & 696.578\,\frac{{\large\mathsf{¢}}}{\mathsf{g_2}} \\ \end{array} \right] \end{array} }[/math]


With this we can straightforwardly tune whichever mapped interval to its cents size. Let's do it for our example:


[math]\displaystyle{ \begin{align} \begin{array} {c} 𝒈 \\ \left[ \begin{array} {rrr} 1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{g_1}} & 696.578\,\frac{{\large\mathsf{¢}}}{\mathsf{g_2}} \\ \end{array} \right] \end{array} \begin{array} {c} M\textbf{i} \\ \left[ \begin{array} {rrr} {-2}\,\mathsf{g_1} \\ 4\,\mathsf{g_2} \\ \end{array} \right] \end{array} &\begin{array}{c}\\=\end{array} \begin{array} {c} 𝒈M\textbf{i} = \mathrm{a} \\ \left[\begin{array} {rrr} (1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{g_1}}×{-2}\,\mathsf{g_1}) + (696.578\,\frac{{\large\mathsf{¢}}}{\mathsf{g_2}}×4\,\mathsf{g_2}) \\ \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{a} \\ \left[ \begin{array} {rrr} (1200.000\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{g_1}}}×{-2}\,\cancel{\mathsf{g_1}}) + (696.578\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{g_2}}}×4\,\cancel{\mathsf{g_2}}) \\ \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{a} \\ \left[ \begin{array} {rrr} {-2400}\,{\large\mathsf{¢}} + 2786.314\,{\large\mathsf{¢}} \\ \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{a} \\ \left[ \begin{array} {rrr} 386.314\,{\large\mathsf{¢}} \\ \end{array} \right] \end{array} \end{align} }[/math]


Relationship between generator tuning map and tempered-prime tuning map

But where did this generator tuning map come from? More importantly, perhaps, how does it relate to the (tempered-prime) tuning map? We can see that they're definitely somewhat related, because if we give the tempered-prime tuning map the original prime-count vector for [math]\displaystyle{ \frac54 }[/math] then we'll get the same answer as we got with the generator-count vector through the generator tuning map:


[math]\displaystyle{ \begin{align} \begin{array} {c} 𝒕 \\ \left[ \begin{array} {rrr} 1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}} & 1896.578\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}} & 2786.314\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}} \\ \end{array} \right] \end{array} \begin{array} {c} \textbf{i} \\ \left[ \begin{array} {rrr} {-2}\,\mathsf{p_1} \\ 0\,\mathsf{p_2} \\ 1\,\mathsf{p_3} \\ \end{array} \right] \end{array} &\begin{array}{c}\\=\end{array} \begin{array} {c} 𝒕\textbf{i} = \mathrm{a} \\ \left[\begin{array} {rrr} (1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}}×{-2}\,\mathsf{p_1}) + (1896.578\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}}×0\,\mathsf{p_2}) + (2786.314\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}}×1\,\mathsf{p_3})\\ \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{a} \\ \left[ \begin{array} {rrr} (1200.000\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{p_1}}}×{-2}\,\cancel{\mathsf{p_1}}) + (1896.578\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{p_2}}}×0\,\cancel{\mathsf{p_2}}) + (2786.314\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{p_3}}}×1\,\cancel{\mathsf{p_3}2}) + \\ \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{a} \\ \left[ \begin{array} {rrr} {-2400}\,{\large\mathsf{¢}} + 0\,{\large\mathsf{¢}} + 2786.314\,{\large\mathsf{¢}} \\ \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} \mathrm{a} \\ \left[ \begin{array} {rrr} 386.314\,{\large\mathsf{¢}} \\ \end{array} \right] \end{array} \end{align} }[/math]


The relationship between the (tempered-primes) tuning map and the generator tuning map is simple. Every tuning map has a matching generator tuning map. And the tuning map is simply the generator tuning map times the temperament mapping:


[math]\displaystyle{ \begin{align} \begin{array} {c} 𝒕 \\ \left[ \begin{array} {rrr} 1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}} & 1896.578\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}} & 2786.314\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}} \\ \end{array} \right] \end{array} &\begin{array}{c}\\=\end{array} \begin{array} {c} 𝒈 \\ \left[ \begin{array} {rrr} 1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{g_1}} & 696.578\,\frac{{\large\mathsf{¢}}}{\mathsf{g_2}} \\ \end{array} \right] \end{array} \begin{array} {c} M \\ \left[ \begin{array} {rrr} 1\,\frac{\mathsf{g_1}}{\mathsf{p_1}} & 1\,\frac{\mathsf{g_1}}{\mathsf{p_2}} & 0\,\frac{\mathsf{g_1}}{\mathsf{p_3}} \\ 0\,\frac{\mathsf{g_2}}{\mathsf{p_1}} & 1\,\frac{\mathsf{g_2}}{\mathsf{p_2}} & 4\,\frac{\mathsf{g_2}}{\mathsf{p_3}} \\ \end{array} \right] \end{array} \end{align} }[/math]


In other words, if you do you make a [math]\displaystyle{ {\large\mathsf{¢}}/𝗴 }[/math] matrix times a [math]\displaystyle{ \small 𝗴 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] matrix you get a [math]\displaystyle{ {\large\mathsf{¢}}/𝗽 }[/math] matrix again. So the tempered-prime tuning map basically does both things together, the mapping and the tuning, composing the mapping and the tuning steps into one:


[math]\displaystyle{ \begin{align} \begin{array} {c} 𝒈 \\ \left[ \begin{array} {rrr} 1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{g_1}} & 696.578\,\frac{{\large\mathsf{¢}}}{\mathsf{g_2}} \\ \end{array} \right] \end{array} \begin{array} {c} M \\ \left[ \begin{array} {rrr} 1\,\frac{\mathsf{g_1}}{\mathsf{p_1}} & 1\,\frac{\mathsf{g_1}}{\mathsf{p_2}} & 0\,\frac{\mathsf{g_1}}{\mathsf{p_3}} \\ 0\,\frac{\mathsf{g_2}}{\mathsf{p_1}} & 1\,\frac{\mathsf{g_2}}{\mathsf{p_2}} & 4\,\frac{\mathsf{g_2}}{\mathsf{p_3}} \\ \end{array} \right] \end{array} &\begin{array}{c}\\=\end{array} \begin{array} {c} 𝒈M = 𝒕 \\ \left[ \begin{array} {rrr} (1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{g_1}}×1\,\frac{\mathsf{g_1}}{\mathsf{p_1}}) + (696.578\,\frac{{\large\mathsf{¢}}}{\mathsf{g_2}}×0\,\frac{\mathsf{g_2}}{\mathsf{p_1}}) & (1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{g_1}}×1\,\frac{\mathsf{g_1}}{\mathsf{p_2}}) + (696.578\,\frac{{\large\mathsf{¢}}}{\mathsf{g_2}}×1\,\frac{\mathsf{g_2}}{\mathsf{p_2}}) & (1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{g_1}}×0\,\frac{\mathsf{g_1}}{\mathsf{p_3}}) + (696.578\,\frac{{\large\mathsf{¢}}}{\mathsf{g_2}}×4\,\frac{\mathsf{g_2}}{\mathsf{p_3}}) \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} 𝒕 \\ \left[ \begin{array} {rrr} (1200.000\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{g_1}}}\,\frac{\cancel{\mathsf{g_1}}}{\mathsf{p_1}}) + (0\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{g_2}}}\,\frac{\cancel{\mathsf{g_2}}}{\mathsf{p_1}}) & (1200.000\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{g_1}}}\,\frac{\cancel{\mathsf{g_1}}}{\mathsf{p_2}}) + (696.578\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{g_2}}}\,\frac{\cancel{\mathsf{g_2}}}{\mathsf{p_2}}) & (0\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{g_1}}}\,\frac{\cancel{\mathsf{g_1}}}{\mathsf{p_3}}) + (2786.314\,\frac{{\large\mathsf{¢}}}{\cancel{\mathsf{g_2}}}\,\frac{\cancel{\mathsf{g_2}}}{\mathsf{p_3}}) \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} 𝒕 \\ \left[ \begin{array} {rrr} 1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}} + 0\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}} & 1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}} + 696.578\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}} & 0\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}} + 2786.314\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}} \end{array} \right] \end{array} \\[12pt] &\begin{array}{c}\\=\end{array} \begin{array} {c} 𝒕 \\ \left[ \begin{array} {rrr} 1200.000\,\frac{{\large\mathsf{¢}}}{\mathsf{p_1}} & 1896.578\,\frac{{\large\mathsf{¢}}}{\mathsf{p_2}} & 2786.314\,\frac{{\large\mathsf{¢}}}{\mathsf{p_3}} \end{array} \right] \end{array} \end{align} }[/math]

Units vs quantities

Be careful not to conflate units with quantities. Here are some common quantity and unit pairs, for intervals:

quantity units
size cents
error cents
damage weighted cents
complexity complexity weight
simplicity simplicity weight
tuning cents per prime, or cents per generator
retuning cents per prime, or cents per generator

Annotated units

In RTT, there is a quantity called damage that is intended to model the reduction in some desirable audible quality of a musical interval, due to its mistuning by some temperament. We start with the interval's error [math]\displaystyle{ \mathrm{e} }[/math] in cents, being the difference between the interval's tempered size and its just size, both of which are in cents. Then we take the absolute value of this error [math]\displaystyle{ |\mathrm{e}| }[/math] (still in cents) and multiply it by some weight [math]\displaystyle{ w }[/math] that is computed from the interval's vector [math]\displaystyle{ \mathbf{i} }[/math]. For reasons discussed elsewhere, this weight is best treated as a "unitless" scale factor and so the damage too has units of cents. And yet, damage is not directly comparable with absolute error, nor is it directly comparable with other kinds of damage that use different functions for computing the weight from the interval's prime components.

This is analogous to calculating loudness by starting with acoustic pressure and weighting it by some factor computed from the frequency components of the sound. See Wikipedia:A-weighting. Both the acoustic pressure and the loudness (or sound pressure level) have units of decibels [math]\displaystyle{ \small\mathsf{dB} }[/math]. And yet, loudness is not directly comparable with acoustic pressure, nor is it directly comparable with other kinds of loudness that use different functions for computing the weight from the sound's frequency components.

Although not part of the SI, the solution adopted for loudness is to annotate the unit symbol [math]\displaystyle{ \small\mathsf{dB} }[/math] with an uppercase letter in parentheses that codes for the particular weighting scheme that was used in computing the loudness, e.g. [math]\displaystyle{ \small\mathsf{dB(A)} }[/math], [math]\displaystyle{ \small\mathsf{dB(B)} }[/math], [math]\displaystyle{ \small\mathsf{dB(Z)} }[/math].

We follow this precedent with our units for damage. The symbols [math]\displaystyle{ \mathsf{¢}\small\mathsf{(C)} }[/math], [math]\displaystyle{ \mathsf{¢}\small\mathsf{(S)} }[/math] and [math]\displaystyle{ \mathsf{¢}\small\mathsf{(U)} }[/math] stand for "complexity weighted cents", "simplicity weighted cents" and "unweighted (or unity weighted) cents" (which just tells you that the absolute value was taken). These weighting functions are described in Tuning fundamentals#Damage.

Note that the damage quantity corresponding to the units "complexity-weighted cents" is not called "complexity-weighted damage", because it is not the damage that gets multiplied by the weight, it is the absolute error. Instead the quantity is called "complexity-weight damage" (no "ed"), and similarly for "simplicity-weight damage" and "unity-weight damage".

As a logical consequence of these units for damage, the weights [math]\displaystyle{ w }[/math] would have had units of weighted cents per cent; however, the cents cancel here, which leaves behind what appears to be a free-floating weight-annotation, unattached to any unit. But we know that no quantity is truly unitless (although it may be dimensionless), and so the annotations should be thought of as attached to the unit called "unity", which we symbolize in a non-standard manner as the double-struck [math]\displaystyle{ \mathsf{𝟙} }[/math]. And so you can think of [math]\displaystyle{ w }[/math] = 1.35 [math]\displaystyle{ \small\mathsf{(C)} }[/math] as equivalent to 1.35 [math]\displaystyle{ \mathsf{𝟙}\small\mathsf{(C)} }[/math] but with the [math]\displaystyle{ \mathsf{𝟙} }[/math] hidden, as is standard.

To recap: Because damage is absolute error times weight, its units will be [math]\displaystyle{ \mathsf{¢}\!·\!\mathsf{𝟙}{\small\mathsf{(C)}} = \mathsf{¢}\small\mathsf{(C)} }[/math] or similar.

Vectorized units

Our units analysis of RTT involves two special units which we call vectorized units, which represent families of units. These are primes, represented by the bold [math]\displaystyle{ \small 𝗽 }[/math], and generators, represented by the bold [math]\displaystyle{ \small 𝗴 }[/math]. We use the bold to distinguish them from the plain style used for ordinary unit symbols. The plain style is still used for their group members, such as [math]\displaystyle{ \small\mathsf{p_1} }[/math] or [math]\displaystyle{ \small\mathsf{g_2} }[/math].

Referring to units of scalars is straightforward. They are singular quantities. It can sometimes be helpful to refer to the units of higher-order objects such as vectors, for which it is often the case that each of their entries have similar but different units to each other. In such cases, we seek the ability to refer to the units of the vector as a group, all at once, especially when considering how these vectors interact with other vectors and matrices. This is the basic idea behind vectorized units: we recognize that for a given prime-count vector, the first entry gives a quantity with units of the first prime, the second entry gives a quantity with units of the second prime, and so forth, and so the vector as a whole can be said to have units of "primes".

Just like ordinary units can be either simple (e.g. [math]\displaystyle{ \mathsf{¢} }[/math]) or compound (e.g. [math]\displaystyle{ \mathsf{¢}/\mathsf{oct} }[/math]), vectorized units can be either simple (e.g. [math]\displaystyle{ \small 𝗽 }[/math]) or compound (e.g. [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗴 }[/math]). We can even have compound units of vectorized and ordinary units, such as [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math].

Matrix units

Some of the matrices we use in RTT — such as comma bases, target-interval lists, etc. — are perhaps better thought of as lists of vectors. They behave well as matrices in terms of matrix multiplication and such, so we often represent them as matrices (with vertical lines between columns to subtly hint at their status as lists of vectors that have been smooshed together) and give them capital-letter variable symbols like [math]\displaystyle{ \mathrm{C} }[/math] and [math]\displaystyle{ \mathrm{T} }[/math], but one tell-tale sign is that they all have simple units, such as of [math]\displaystyle{ \small 𝗽 }[/math], [math]\displaystyle{ \small 𝗴 }[/math], etc. This is because these matrices are not transformations so much as they are the things to potentially be transformed by other matrices, such as mappings and projections.

These other types of transformational matrices are matrices in a fuller, truer sense. And these tend to have compound units, because — in their capacity as machines that transform objects from one thing into another — they generally change the object's units. So their denominator unit cancels out the input's original units, and their numerator unit is given to the output. We can then think of each entry of such transformational matrices as relating a proportion of quantities of one unit to another. Their units are essentially the results of the outer product of two vectors containing only vector units. The result is that one of the vectorized units iterates through its members along the rows, and the other iterates through them along its columns. Ultimately this means that every combination of member unit from each vectorized group is accounted for.

When we give the compound units as [math]\displaystyle{ \small\mathsf{x}/\mathsf{y} }[/math], it's always the case that the [math]\displaystyle{ \small\mathsf{x} }[/math]'s increment by rows, and the [math]\displaystyle{ \small\mathsf{y} }[/math]'s increment by cols. This is because the units are defined based on how matrix multiplication is defined.

For example, for our generator embedding matrix [math]\displaystyle{ G }[/math], with units of [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗴 }[/math], here shown with units only:


[math]\displaystyle{ \begin{array} {c} G \\[10pt] \left[\begin{array} {rrr} \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \dfrac{\color{Plum}\mathsf{p_3}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \end{array} \right] \end{array} }[/math]


The [math]\displaystyle{ \small\mathsf{p} }[/math]'s increment 1, 2, 3 as we go down the rows, and the [math]\displaystyle{ \small\mathsf{g} }[/math]'s increment 1, 2 as we go across the cols.

By the way, we'd read [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗴 }[/math] as "primes per generator". We can think of this as short for "(count-of-each-one-of-the-)primes per (count-of-each-of-one-of-the-)generator(s)".

We can even see this effect in the case of tuning maps, such as [math]\displaystyle{ 𝒕 }[/math] = ⟨1200 [math]\displaystyle{ \mathsf{¢}\small/\mathsf{p_1}\; }[/math] 1900 [math]\displaystyle{ \mathsf{¢}\small/\mathsf{p_2}\; }[/math] 2800 [math]\displaystyle{ \mathsf{¢}\small/\mathsf{p_3} }[/math]], with units of [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math], where the [math]\displaystyle{ \small\mathsf{p} }[/math]'s increment by cols and [math]\displaystyle{ \mathsf{¢} }[/math] increments by rows (trivially; there's only one row). Or [math]\displaystyle{ 𝒈 }[/math] = {1202 [math]\displaystyle{ \mathsf{¢}\small/\mathsf{g_1}\; }[/math] 504 [math]\displaystyle{ \mathsf{¢}\small/\mathsf{g_2} }[/math]], with units of [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗴 }[/math], where again the index of each [math]\displaystyle{ \small\mathsf{g} }[/math] increments by cols and [math]\displaystyle{ \mathsf{¢} }[/math] trivially increments by the single row.

Inverting matrix units

We can make this point even stronger. When you invert a matrix, its units reciprocate from [math]\displaystyle{ \small\mathsf{x}/\mathsf{y} }[/math] to [math]\displaystyle{ \small\mathsf{y}/\mathsf{x} }[/math] of course, but this not only changes which unit type is in the numerator within each entry, it also changes whether that unit type's indices increment by rows or by columns.

For instance, the inverse of:


[math]\displaystyle{ \left[ \begin{array} {r} \color{ForestGreen}\mathsf{p_1} & \color{ForestGreen}\mathsf{p_1} & \color{ForestGreen}\mathsf{p_1} \\[10pt] \color{NavyBlue}\mathsf{p_2} & \color{NavyBlue}\mathsf{p_2} & \color{NavyBlue}\mathsf{p_2} \\[10pt] \color{Plum}\mathsf{p_3} & \color{Plum}\mathsf{p_3} & \color{Plum}\mathsf{p_3} \\[10pt] \end{array} \right] }[/math]


is:


[math]\displaystyle{ \left[ \begin{array} {r} \dfrac{1}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{1}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{1}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{1}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{1}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{1}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{1}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{1}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{1}{\color{Plum}\mathsf{p_3}} \\[10pt] \end{array} \right] }[/math]


not:


[math]\displaystyle{ \left[ \begin{array} {r} \dfrac{1}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{1}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{1}{\color{ForestGreen}\mathsf{p_1}} \\[10pt] \dfrac{1}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{1}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{1}{\color{NavyBlue}\mathsf{p_2}} \\[10pt] \dfrac{1}{\color{Plum}\mathsf{p_3}} & \dfrac{1}{\color{Plum}\mathsf{p_3}} & \dfrac{1}{\color{Plum}\mathsf{p_3}} \\[10pt] \end{array} \right] }[/math]


Note how in the correct inversion, the colors are arranged by columns now, no longer rows.

Cancelation

You may have noticed that the units of the projection matrix [math]\displaystyle{ P }[/math] are given as [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math], primes per primes. The reason these don't cancel out is because they are vectorized units, and thus one of them increments along the rows, and the other along the cols:


[math]\displaystyle{ \left[ \begin{array} {c} \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{Plum}\mathsf{p_3}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{Plum}\mathsf{p_3}} \\[10pt] \end{array} \right] }[/math]


And so, technically speaking, we could say the units along the main diagonal, where the indices match, do cancel out, leaving dimensionless quantities:


[math]\displaystyle{ \left[ \begin{array} {c} {\large\mathsf{𝟙}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{ForestGreen}\mathsf{p_1}} & {\large\mathsf{𝟙}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{Plum}\mathsf{p_3}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{NavyBlue}\mathsf{p_2}} & {\large\mathsf{𝟙}} \\[10pt] \end{array} \right] }[/math]


However, we would still use [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] to refer to the units of the matrix as a whole, on account of all the other entries of the matrix which retain compound units relating different primes to each other, so this doesn't really buy us much here. (For a counterexample to this situation, please see this later section).

Here's how to fully understand why. When performing matrix multiplication here, between the mapping and the generator embedding:


[math]\displaystyle{ \begin{array} {c} G \\[10pt] \left[ \begin{array} {r} \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \dfrac{\color{Plum}\mathsf{p_3}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \end{array} \right] \end{array} \begin{array} {c} M \\[10pt] \left[ \begin{array} {r} \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] \end{array} \right] \end{array} }[/math]


Each time we grab a col of the right-hand matrix and a row of the left-hand matrix. Within each of these right-col and left-row, the specific units (i.e. which [math]\displaystyle{ \small\mathsf{g} }[/math] among [math]\displaystyle{ \small\color{BurntOrange}\mathsf{g_1} }[/math], [math]\displaystyle{ \small\color{OrangeRed}\mathsf{g_2} }[/math], etc.) are all different for the inner unit, while the specific units are all the same for the outer unit.

For example, let's take a look at how we find entry [math]\displaystyle{ p_{32} }[/math] of [math]\displaystyle{ P }[/math], the center bottom entry. This is the result of the dot product between the 2nd col of [math]\displaystyle{ M }[/math] and the 3rd row of [math]\displaystyle{ G }[/math]:


[math]\displaystyle{ \left[ \begin{array} {c} \dfrac{\color{Plum}\mathsf{p_3}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \end{array} \right] \left[ \begin{array} {c} \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{NavyBlue}\mathsf{p_2}} \\[10pt] \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{NavyBlue}\mathsf{p_2}} \\[10pt] \end{array} \right] }[/math]


Notice how in the col of [math]\displaystyle{ M }[/math], the [math]\displaystyle{ \small\mathsf{p} }[/math]'s are all the same, while the [math]\displaystyle{ \small\mathsf{g} }[/math]'s are all different. It's the same situation in the row of [math]\displaystyle{ G }[/math]: the [math]\displaystyle{ \small\mathsf{p} }[/math]'s are all the same, and the [math]\displaystyle{ \small\mathsf{g} }[/math]'s are all different. And yet, despite the fact that it's the [math]\displaystyle{ \small\mathsf{g} }[/math]'s that are all different, they're the ones that are going to cancel out and go away. This is because while they may be different from each other within the individual row and within the individual col, when we combine these objects together, the [math]\displaystyle{ \small\mathsf{g} }[/math]'s of different indices all get matched up with a [math]\displaystyle{ \small\mathsf{g} }[/math] of the matching index:


[math]\displaystyle{ \begin{align} (\dfrac{\color{Plum}\mathsf{p_3}}{\color{BurntOrange}\mathsf{g_1}})(\dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{\color{Plum}\mathsf{p_3}}{\color{OrangeRed}\mathsf{g_2}})(\dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{NavyBlue}\mathsf{p_2}}) &= (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{BurntOrange}\mathsf{g_1}}})(\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{OrangeRed}\mathsf{g_2}}})(\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{NavyBlue}\mathsf{p_2}}) \\[10pt] &= \dfrac{\color{Plum}\mathsf{p_3}}{\color{NavyBlue}\mathsf{p_2}} \end{align} }[/math]


And conversely, while the [math]\displaystyle{ \small\mathsf{p} }[/math]'s were the same within the individual row and individual col, they're different between the row and col, so we end the day with a quantity in terms of one prime per another prime.

Units-only analyses of basic objects

In this section, we'll demonstrate a series of examples isolating only the units of certain combinations of RTT matrices. The following all use a rank-2, 5-limit temperament.

Generator tuning map, mapping: tuning map

A [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗴 }[/math] generator tuning map and a [math]\displaystyle{ \small 𝗴 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] mapping combine to make a [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] tuning map.


[math]\displaystyle{ \large \begin{align} \begin{array} {c} 𝒈 \\[4pt] \left[ \begin{array} {rrr} \dfrac{{\large\mathsf{¢}}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{{\large\mathsf{¢}}}{\color{OrangeRed}\mathsf{g_2}} \end{array} \right] \end{array} \begin{array} {c} M \\[4pt] \left[ \begin{array} {rrr} \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] \end{array} \right] \end{array} &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒈M \\[4pt] \left[\begin{array} {rrr} (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{BurntOrange}\mathsf{g_1}}})(\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{ForestGreen}\mathsf{p_1}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{OrangeRed}\mathsf{g_2}}})(\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{ForestGreen}\mathsf{p_1}}) & (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{BurntOrange}\mathsf{g_1}}})(\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{OrangeRed}\mathsf{g_2}}})(\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{NavyBlue}\mathsf{p_2}}) & (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{BurntOrange}\mathsf{g_1}}})(\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{Plum}\mathsf{p_3}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{OrangeRed}\mathsf{g_2}}})(\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{Plum}\mathsf{p_3}}) \\ \end{array} \right] \end{array} \\ &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒕 \\[4pt] \left[ \begin{array} {rrr} \dfrac{{\large\mathsf{¢}}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{{\large\mathsf{¢}}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{{\large\mathsf{¢}}}{\color{Plum}\mathsf{p_3}} \\ \end{array} \right] \end{array} \end{align} }[/math]


Generator embedding, mapping: projection matrix

A [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗴 }[/math] generator embedding and a [math]\displaystyle{ \small 𝗴 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] mapping combine to make a [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] projection matrix.


[math]\displaystyle{ \large \begin{align} \begin{array} {c} G \\[4pt] \left[\begin{array} {rrr} \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \dfrac{\color{Plum}\mathsf{p_3}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \end{array} \right] \end{array} \begin{array} {c} M \\[4pt] \left[ \begin{array} {rrr} \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] \end{array} \right] \end{array} &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} GM \\[4pt] \left[ \begin{array} {rrr} (\dfrac{\color{ForestGreen}\mathsf{p_1}}{\cancel{\color{BurntOrange}\mathsf{g_1}}}) (\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{ForestGreen}\mathsf{p_1}}) + (\dfrac{\color{ForestGreen}\mathsf{p_1}}{\cancel{\color{OrangeRed}\mathsf{g_2}}}) (\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{ForestGreen}\mathsf{p_1}}) & (\dfrac{\color{ForestGreen}\mathsf{p_1}}{\cancel{\color{BurntOrange}\mathsf{g_1}}}) (\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{\color{ForestGreen}\mathsf{p_1}}{\cancel{\color{OrangeRed}\mathsf{g_2}}}) (\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{NavyBlue}\mathsf{p_2}}) & (\dfrac{\color{ForestGreen}\mathsf{p_1}}{\cancel{\color{BurntOrange}\mathsf{g_1}}}) (\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{Plum}\mathsf{p_3}}) + (\dfrac{\color{ForestGreen}\mathsf{p_1}}{\cancel{\color{OrangeRed}\mathsf{g_2}}}) (\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{Plum}\mathsf{p_3}}) \\[10pt] (\dfrac{\color{NavyBlue}\mathsf{p_2}}{\cancel{\color{BurntOrange}\mathsf{g_1}}}) (\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{ForestGreen}\mathsf{p_1}}) + (\dfrac{\color{NavyBlue}\mathsf{p_2}}{\cancel{\color{OrangeRed}\mathsf{g_2}}}) (\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{ForestGreen}\mathsf{p_1}}) & (\dfrac{\color{NavyBlue}\mathsf{p_2}}{\cancel{\color{BurntOrange}\mathsf{g_1}}}) (\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{\color{NavyBlue}\mathsf{p_2}}{\cancel{\color{OrangeRed}\mathsf{g_2}}}) (\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{NavyBlue}\mathsf{p_2}}) & (\dfrac{\color{NavyBlue}\mathsf{p_2}}{\cancel{\color{BurntOrange}\mathsf{g_1}}}) (\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{Plum}\mathsf{p_3}}) + (\dfrac{\color{NavyBlue}\mathsf{p_2}}{\cancel{\color{OrangeRed}\mathsf{g_2}}}) (\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{Plum}\mathsf{p_3}}) \\[10pt] (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{BurntOrange}\mathsf{g_1}}}) (\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{ForestGreen}\mathsf{p_1}}) + (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{OrangeRed}\mathsf{g_2}}}) (\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{ForestGreen}\mathsf{p_1}}) & (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{BurntOrange}\mathsf{g_1}}}) (\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{OrangeRed}\mathsf{g_2}}}) (\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{NavyBlue}\mathsf{p_2}}) & (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{BurntOrange}\mathsf{g_1}}}) (\dfrac{\cancel{\color{BurntOrange}\mathsf{g_1}}}{\color{Plum}\mathsf{p_3}}) + (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{OrangeRed}\mathsf{g_2}}}) (\dfrac{\cancel{\color{OrangeRed}\mathsf{g_2}}}{\color{Plum}\mathsf{p_3}}) \\[10pt] \end{array} \right] \end{array} \\[20pt] &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} P \\[4pt] \left[ \begin{array} {rrr} \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{Plum}\mathsf{p_3}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{Plum}\mathsf{p_3}} \\[10pt] \end{array} \right] \end{array} \end{align} }[/math]


Just tuning map, generator embedding: generator tuning map

Here, a [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] just tuning map and a [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗴 }[/math] generator embedding combine to make a [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗴 }[/math] generator tuning map.


[math]\displaystyle{ \large \begin{align} \begin{array} {c} 𝒋 \\[4pt] \left[ \begin{array} {rrr} \dfrac{{\large\mathsf{¢}}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{{\large\mathsf{¢}}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{{\large\mathsf{¢}}}{\color{Plum}\mathsf{p_3}} \\ \end{array} \right] \end{array} \begin{array} {c} G \\[4pt] \left[\begin{array} {rrr} \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \dfrac{\color{Plum}\mathsf{p_3}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \end{array} \right] \end{array} &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒋G \\[4pt] \left[ \begin{array} {rrr} (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{ForestGreen}\mathsf{p_1}}})(\dfrac{\cancel{\color{ForestGreen}\mathsf{p_1}}}{\color{BurntOrange}\mathsf{g_1}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{NavyBlue}\mathsf{p_2}}})(\dfrac{\cancel{\color{NavyBlue}\mathsf{p_2}}}{\color{BurntOrange}\mathsf{g_1}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{Plum}\mathsf{p_3}}})(\dfrac{\cancel{\color{Plum}\mathsf{p_3}}}{\color{BurntOrange}\mathsf{g_1}}) & (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{ForestGreen}\mathsf{p_1}}})(\dfrac{\cancel{\color{ForestGreen}\mathsf{p_1}}}{\color{OrangeRed}\mathsf{g_2}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{NavyBlue}\mathsf{p_2}}})(\dfrac{\cancel{\color{NavyBlue}\mathsf{p_2}}}{\color{OrangeRed}\mathsf{g_2}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{Plum}\mathsf{p_3}}})(\dfrac{\cancel{\color{Plum}\mathsf{p_3}}}{\color{OrangeRed}\mathsf{g_2}}) \\[10pt] \end{array} \right] \end{array} \\ &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒈 \\[4pt] \left[ \begin{array} {rrr} \dfrac{{\large\mathsf{¢}}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{{\large\mathsf{¢}}}{\color{OrangeRed}\mathsf{g_2}} \end{array} \right] \end{array} \end{align} }[/math]


Just tuning map, projection matrix: tuning map

A [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] just tuning map and a [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] projection matrix combine to make a [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] tuning map.


[math]\displaystyle{ \large \begin{align} \begin{array} {c} 𝒋 \\[4pt] \left[ \begin{array} {rrr} \dfrac{{\large\mathsf{¢}}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{{\large\mathsf{¢}}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{{\large\mathsf{¢}}}{\color{Plum}\mathsf{p_3}} \\ \end{array} \right] \end{array} \begin{array} {c} P \\[4pt] \left[ \begin{array} {rrr} \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{Plum}\mathsf{p_3}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{Plum}\mathsf{p_3}} \\[10pt] \end{array} \right] \end{array} &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒋P \\[4pt] \left[ \begin{array} {rrr} (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{ForestGreen}\mathsf{p_1}}}) (\dfrac{\cancel{\color{ForestGreen}\mathsf{p_1}}}{\cancel{\color{ForestGreen}\mathsf{p_1}}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{NavyBlue}\mathsf{p_2}}}) (\dfrac{\cancel{\color{NavyBlue}\mathsf{p_2}}}{\cancel{\color{ForestGreen}\mathsf{p_1}}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{Plum}\mathsf{p_3}}}) (\dfrac{\cancel{\color{Plum}\mathsf{p_3}}}{\cancel{\color{ForestGreen}\mathsf{p_1}}}) & (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{ForestGreen}\mathsf{p_1}}}) (\dfrac{\cancel{\color{ForestGreen}\mathsf{p_1}}}{\cancel{\color{NavyBlue}\mathsf{p_2}}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{NavyBlue}\mathsf{p_2}}}) (\dfrac{\cancel{\color{NavyBlue}\mathsf{p_2}}}{\cancel{\color{NavyBlue}\mathsf{p_2}}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{Plum}\mathsf{p_3}}}) (\dfrac{\cancel{\color{Plum}\mathsf{p_3}}}{\cancel{\color{NavyBlue}\mathsf{p_2}}}) & (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{ForestGreen}\mathsf{p_1}}}) (\dfrac{\cancel{\color{ForestGreen}\mathsf{p_1}}}{\cancel{\color{Plum}\mathsf{p_3}}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{NavyBlue}\mathsf{p_2}}}) (\dfrac{\cancel{\color{NavyBlue}\mathsf{p_2}}}{\cancel{\color{Plum}\mathsf{p_3}}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{Plum}\mathsf{p_3}}}) (\dfrac{\cancel{\color{Plum}\mathsf{p_3}}}{\cancel{\color{Plum}\mathsf{p_3}}}) \end{array} \right] \end{array} \\ &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒕 \\[4pt] \left[ \begin{array} {rrr} \dfrac{{\large\mathsf{¢}}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{{\large\mathsf{¢}}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{{\large\mathsf{¢}}}{\color{Plum}\mathsf{p_3}} \\ \end{array} \right] \end{array} \end{align} }[/math]


Mapping, interval: mapped interval

A [math]\displaystyle{ \small 𝗴 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] mapping and a prime-count vector (units of [math]\displaystyle{ \small 𝗽 }[/math]) combine to make a generator-count vector (units of [math]\displaystyle{ \small 𝗴 }[/math]) .


[math]\displaystyle{ \large \begin{align} \begin{array} {c} M \\[4pt] \left[ \begin{array} {rrr} \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{BurntOrange}\mathsf{g_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{OrangeRed}\mathsf{g_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] \end{array} \right] \end{array} \begin{array} {c} \textbf{i} \\[4pt] \left[ \begin{array} {rrr} \color{ForestGreen}\mathsf{p_1} \\[10pt] \color{NavyBlue}\mathsf{p_2} \\[10pt] \color{Plum}\mathsf{p_3} \\[10pt] \end{array} \right] \end{array} &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} M\textbf{i} \\[10pt] \left[ \begin{array} {rrr} (\dfrac{\color{BurntOrange}\mathsf{g_1}}{\cancel{\color{ForestGreen}\mathsf{p_1}}})(\cancel{\color{ForestGreen}\mathsf{p_1}}) + (\dfrac{\color{BurntOrange}\mathsf{g_1}}{\cancel{\color{NavyBlue}\mathsf{p_2}}})(\cancel{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{\color{BurntOrange}\mathsf{g_1}}{\cancel{\color{Plum}\mathsf{p_3}}})(\cancel{\color{Plum}\mathsf{p_3}}) \\[10pt] (\dfrac{\color{OrangeRed}\mathsf{g_2}}{\cancel{\color{ForestGreen}\mathsf{p_1}}})(\cancel{\color{ForestGreen}\mathsf{p_1}}) + (\dfrac{\color{OrangeRed}\mathsf{g_2}}{\cancel{\color{NavyBlue}\mathsf{p_2}}})(\cancel{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{\color{OrangeRed}\mathsf{g_2}}{\cancel{\color{Plum}\mathsf{p_3}}})(\cancel{\color{Plum}\mathsf{p_3}}) \\[10pt] \end{array} \right] \end{array} \\[20pt] &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} M\textbf{i} \\[4pt] \left[ \begin{array} {rrr} \color{BurntOrange}\mathsf{g_1} \\[10pt] \color{OrangeRed}\mathsf{g_2} \\[10pt] \end{array} \right] \end{array} \end{align} }[/math]


Tuning map, interval: tempered interval size

A [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] tuning map and a prime-count vector (units of [math]\displaystyle{ \small 𝗽 }[/math]) representing an interval combine to give the interval's size in [math]\displaystyle{ \mathsf{¢} }[/math].


[math]\displaystyle{ \large \begin{align} \begin{array} {c} 𝒕 \\[4pt] \left[ \begin{array} {rrr} \dfrac{{\large\mathsf{¢}}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{{\large\mathsf{¢}}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{{\large\mathsf{¢}}}{\color{Plum}\mathsf{p_3}} \\ \end{array} \right] \end{array} \begin{array} {c} \textbf{i} \\[4pt] \left[ \begin{array} {rrr} \color{ForestGreen}\mathsf{p_1} \\[10pt] \color{NavyBlue}\mathsf{p_2} \\[10pt] \color{Plum}\mathsf{p_3} \\[10pt] \end{array} \right] \end{array} &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒕\textbf{i} \\[4pt] \left[ \begin{array} {rrr} (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{ForestGreen}\mathsf{p_1}}})(\cancel{\color{ForestGreen}\mathsf{p_1}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{NavyBlue}\mathsf{p_2}}})(\cancel{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{Plum}\mathsf{p_3}}})(\cancel{\color{Plum}\mathsf{p_3}}) \end{array} \right] \end{array} \\ &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒕\textbf{i} \\[4pt] \left[ \begin{array} {rrr} \mathsf{¢} \end{array} \right] \end{array} \end{align} }[/math]


Generator tuning map, mapped interval: tempered interval size

A [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗴 }[/math] generator tuning map and a generator-count vector (units of [math]\displaystyle{ \small 𝗴 }[/math]) representing an interval combine to give the interval's size in [math]\displaystyle{ \mathsf{¢} }[/math].


[math]\displaystyle{ \large \begin{align} \begin{array} {c} 𝒈 \\[4pt] \left[ \begin{array} {rrr} \dfrac{{\large\mathsf{¢}}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{{\large\mathsf{¢}}}{\color{OrangeRed}\mathsf{g_2}} \end{array} \right] \end{array} \begin{array} {c} M\textbf{i} \\[4pt] \left[ \begin{array} {rrr} \color{BurntOrange}\mathsf{g_1} \\[10pt] \color{OrangeRed}\mathsf{g_2} \\[10pt] \end{array} \right] \end{array} &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒕\textbf{i} \\[4pt] \left[ \begin{array} {rrr} (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{BurntOrange}\mathsf{g_1}}})(\cancel{\color{BurntOrange}\mathsf{g_1}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{OrangeRed}\mathsf{g_2}}})(\cancel{\color{OrangeRed}\mathsf{g_2}}) \end{array} \right] \end{array} \\[20pt] &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒕\textbf{i} \\[4pt] \left[ \begin{array} {rrr} \mathsf{¢} \end{array} \right] \end{array} \end{align} }[/math]


Just tuning map, projected interval: tempered interval size

A [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] just tuning map and a prime-count vector representing a projected interval combine to give the interval's size in [math]\displaystyle{ \mathsf{¢} }[/math].


[math]\displaystyle{ \large \begin{align} \begin{array} {c} 𝒋 \\[4pt] \left[ \begin{array} {rrr} \dfrac{{\large\mathsf{¢}}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{{\large\mathsf{¢}}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{{\large\mathsf{¢}}}{\color{Plum}\mathsf{p_3}} \\ \end{array} \right] \end{array} \begin{array} {c} P\textbf{i} \\[4pt] \left[ \begin{array} {rrr} \color{ForestGreen}\mathsf{p_1} \\[10pt] \color{NavyBlue}\mathsf{p_2} \\[10pt] \color{Plum}\mathsf{p_3} \\[10pt] \end{array} \right] \end{array} &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒋P\textbf{i} \\[4pt] \left[ \begin{array} {rrr} (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{ForestGreen}\mathsf{p_1}}})(\cancel{\color{ForestGreen}\mathsf{p_1}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{NavyBlue}\mathsf{p_2}}})(\cancel{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{{\large\mathsf{¢}}}{\cancel{\color{Plum}\mathsf{p_3}}})(\cancel{\color{Plum}\mathsf{p_3}}) \end{array} \right] \end{array} \\ &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} 𝒕\textbf{i} \\[4pt] \left[ \begin{array} {rrr} \mathsf{¢} \end{array} \right] \end{array} \end{align} }[/math]


Generator embedding, mapped interval: projected interval

A [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗴 }[/math] generator embedding and a generator-count vector (units of [math]\displaystyle{ \small 𝗴 }[/math]) combine to make a prime-count vector (units of [math]\displaystyle{ \small 𝗽 }[/math]) representing the projected interval.


[math]\displaystyle{ \large \begin{align} \begin{array} {c} G \\[4pt] \left[\begin{array} {rrr} \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \dfrac{\color{Plum}\mathsf{p_3}}{\color{BurntOrange}\mathsf{g_1}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{OrangeRed}\mathsf{g_2}} \\[10pt] \end{array} \right] \end{array} \begin{array} {c} M\textbf{i} \\[4pt] \left[ \begin{array} {rrr} \color{BurntOrange}\mathsf{g_1} \\[10pt] \color{OrangeRed}\mathsf{g_2} \\[10pt] \end{array} \right] \end{array} &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} GM\textbf{i} \\[4pt] \left[ \begin{array} {rrr} (\dfrac{\color{ForestGreen}\mathsf{p_1}}{\cancel{\color{BurntOrange}\mathsf{g_1}}})(\cancel{\color{BurntOrange}\mathsf{g_1}}) + (\dfrac{\color{ForestGreen}\mathsf{p_1}}{\cancel{\color{OrangeRed}\mathsf{g_2}}})(\cancel{\color{OrangeRed}\mathsf{g_2}}) \\[10pt] (\dfrac{\color{NavyBlue}\mathsf{p_2}}{\cancel{\color{BurntOrange}\mathsf{g_1}}})(\cancel{\color{BurntOrange}\mathsf{g_1}}) + (\dfrac{\color{NavyBlue}\mathsf{p_2}}{\cancel{\color{OrangeRed}\mathsf{g_2}}})(\cancel{\color{OrangeRed}\mathsf{g_2}}) \\[10pt] (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{BurntOrange}\mathsf{g_1}}})(\cancel{\color{BurntOrange}\mathsf{g_1}}) + (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{OrangeRed}\mathsf{g_2}}})(\cancel{\color{OrangeRed}\mathsf{g_2}}) \\[10pt] \end{array} \right] \end{array} \\[20pt] &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} P\textbf{i} \\[4pt] \left[ \begin{array} {rrr} \color{ForestGreen}\mathsf{p_1} \\[10pt] \color{NavyBlue}\mathsf{p_2} \\[10pt] \color{Plum}\mathsf{p_3} \\[10pt] \end{array} \right] \end{array} \end{align} }[/math]


Projection matrix, interval: projected interval

A [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] projection matrix and a prime-count vector (units of [math]\displaystyle{ \small 𝗽 }[/math]) representing an interval combine to make a new prime-count vector (still with units of [math]\displaystyle{ \small 𝗽 }[/math]) representing the projected interval.


[math]\displaystyle{ \large \begin{align} \begin{array} {c} P \\[4pt] \left[ \begin{array} {rrr} \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{ForestGreen}\mathsf{p_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{NavyBlue}\mathsf{p_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] \dfrac{\color{Plum}\mathsf{p_3}}{\color{ForestGreen}\mathsf{p_1}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{NavyBlue}\mathsf{p_2}} & \dfrac{\color{Plum}\mathsf{p_3}}{\color{Plum}\mathsf{p_3}} \\[10pt] \end{array} \right] \end{array} \begin{array} {c} \textbf{i} \\[4pt] \left[ \begin{array} {rrr} \color{ForestGreen}\mathsf{p_1} \\[10pt] \color{NavyBlue}\mathsf{p_2} \\[10pt] \color{Plum}\mathsf{p_3} \\[10pt] \end{array} \right] \end{array} &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} P\textbf{i} \\[4pt] \left[ \begin{array} {rrr} (\dfrac{\color{ForestGreen}\mathsf{p_1}}{\cancel{\color{ForestGreen}\mathsf{p_1}}})(\cancel{\color{ForestGreen}\mathsf{p_1}}) + (\dfrac{\color{ForestGreen}\mathsf{p_1}}{\cancel{\color{NavyBlue}\mathsf{p_2}}})(\cancel{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{\color{ForestGreen}\mathsf{p_1}}{\cancel{\color{Plum}\mathsf{p_3}}})(\cancel{\color{Plum}\mathsf{p_3}}) \\[10pt] (\dfrac{\color{NavyBlue}\mathsf{p_2}}{\cancel{\color{ForestGreen}\mathsf{p_1}}})(\cancel{\color{ForestGreen}\mathsf{p_1}}) + (\dfrac{\color{NavyBlue}\mathsf{p_2}}{\cancel{\color{NavyBlue}\mathsf{p_2}}})(\cancel{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{\color{NavyBlue}\mathsf{p_2}}{\cancel{\color{Plum}\mathsf{p_3}}})(\cancel{\color{Plum}\mathsf{p_3}}) \\[10pt] (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{ForestGreen}\mathsf{p_1}}})(\cancel{\color{ForestGreen}\mathsf{p_1}}) + (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{NavyBlue}\mathsf{p_2}}})(\cancel{\color{NavyBlue}\mathsf{p_2}}) + (\dfrac{\color{Plum}\mathsf{p_3}}{\cancel{\color{Plum}\mathsf{p_3}}})(\cancel{\color{Plum}\mathsf{p_3}}) \\[10pt] \end{array} \right] \end{array} \\[20pt] &\begin{array}{c}\\[4pt]=\end{array} \begin{array} {c} P\textbf{i} \\[4pt] \left[ \begin{array} {rrr} \color{ForestGreen}\mathsf{p_1} \\[10pt] \color{NavyBlue}\mathsf{p_2} \\[10pt] \color{Plum}\mathsf{p_3} \\[10pt] \end{array} \right] \end{array} \end{align} }[/math]


Units analyses of intermediate and advanced situations

In this section we'll be working through a few of the more striking results of applying a units analysis to RTT objects that we've come across during our work so far. Some of these involve fast-forwarding to topics covered in later articles, but we felt it was nonetheless more appropriate to centralize these types of unit analyses in one place.

The JI mapping times the JI generator embedding

This situation is a variation upon the situation we worked through earlier, where the projection matrix [math]\displaystyle{ P }[/math] is derived as the matrix product of the generator embedding matrix [math]\displaystyle{ G }[/math] and the temperament mapping matrix [math]\displaystyle{ M }[/math]. What we're going to do here is work through the variation where it's the JI embedding matrix [math]\displaystyle{ G_{\text{j}} }[/math] and the JI mapping matrix [math]\displaystyle{ M_{\text{j}} }[/math].

The key difference here is that both of these matrices are identity matrices (you can learn the nature of these matrices here: Dave Keenan & Douglas Blumeyer's guide to RTT: tuning computation#Identity matrices). Thus, upon multiplying them, the result is also an identity matrix.

As you'll recall, the units of a projection matrix are [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math], where these vectorized units do not cancel, because one increments along rows and the other along columns, so we get different combinations of primes in different entries. However, along the diagonal, the indices match, and cancel out. Like so:


[math]\displaystyle{ \left[ \begin{array} {c} \frac{\color{ForestGreen}\mathsf{p_1}}{\color{ForestGreen}\mathsf{p_1}} & \frac{\color{ForestGreen}\mathsf{p_1}}{\color{NavyBlue}\mathsf{p_2}} & \frac{\color{ForestGreen}\mathsf{p_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] \frac{\color{NavyBlue}\mathsf{p_2}}{\color{ForestGreen}\mathsf{p_1}} & \frac{\color{NavyBlue}\mathsf{p_2}}{\color{NavyBlue}\mathsf{p_2}} & \frac{\color{NavyBlue}\mathsf{p_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] \frac{\color{Plum}\mathsf{p_3}}{\color{ForestGreen}\mathsf{p_1}} & \frac{\color{Plum}\mathsf{p_3}}{\color{NavyBlue}\mathsf{p_2}} & \frac{\color{Plum}\mathsf{p_3}}{\color{Plum}\mathsf{p_3}} \\[10pt] \end{array} \right] → \left[ \begin{array} {c} \frac{\cancel{\color{ForestGreen}\mathsf{p_1}}}{\cancel{\color{ForestGreen}\mathsf{p_1}}} & \frac{\color{ForestGreen}\mathsf{p_1}}{\color{NavyBlue}\mathsf{p_2}} & \frac{\color{ForestGreen}\mathsf{p_1}}{\color{Plum}\mathsf{p_3}} \\ \frac{\color{NavyBlue}\mathsf{p_2}}{\color{ForestGreen}\mathsf{p_1}} & \frac{\cancel{\color{NavyBlue}\mathsf{p_2}}}{\cancel{\color{NavyBlue}\mathsf{p_2}}} & \frac{\color{NavyBlue}\mathsf{p_2}}{\color{Plum}\mathsf{p_3}} \\ \frac{\color{Plum}\mathsf{p_3}}{\color{ForestGreen}\mathsf{p_1}} & \frac{\color{Plum}\mathsf{p_3}}{\color{NavyBlue}\mathsf{p_2}} & \frac{\cancel{\color{Plum}\mathsf{p_3}}}{\cancel{\color{Plum}\mathsf{p_3}}} \\ \end{array} \right] → \left[ \begin{array} {c} {\large\mathsf{𝟙}} & \frac{\color{ForestGreen}\mathsf{p_1}}{\color{NavyBlue}\mathsf{p_2}} & \frac{\color{ForestGreen}\mathsf{p_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] \frac{\color{NavyBlue}\mathsf{p_2}}{\color{ForestGreen}\mathsf{p_1}} & {\large\mathsf{𝟙}} & \frac{\color{NavyBlue}\mathsf{p_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] \frac{\color{Plum}\mathsf{p_3}}{\color{ForestGreen}\mathsf{p_1}} & \frac{\color{Plum}\mathsf{p_3}}{\color{NavyBlue}\mathsf{p_2}} & {\large\mathsf{𝟙}} \\[10pt] \end{array} \right] }[/math]


So we keep the [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math] unit because most of the entries still relate one prime to another.

However, if this units pattern were applied to an identity matrix, like so:


[math]\displaystyle{ \left[ \begin{array} {c} 1\,{\large\mathsf{𝟙}} & 0\,\frac{\color{ForestGreen}\mathsf{p_1}}{\color{NavyBlue}\mathsf{p_2}} & 0\,\color{ForestGreen}\frac{\mathsf{p_1}}{\color{Plum}\mathsf{p_3}} \\[10pt] 0\,\frac{\color{NavyBlue}\mathsf{p_2}}{\color{ForestGreen}\mathsf{p_1}} & 1\,{\large\mathsf{𝟙}} & 0\,\frac{\color{NavyBlue}\mathsf{p_2}}{\color{Plum}\mathsf{p_3}} \\[10pt] 0\,\frac{\color{Plum}\mathsf{p_3}}{\color{ForestGreen}\mathsf{p_1}} & 0\,\frac{\color{Plum}\mathsf{p_3}}{\color{NavyBlue}\mathsf{p_2}} & 1\,{\large\mathsf{𝟙}} \\[10pt] \end{array} \right] }[/math]


And then we eliminate units for all the entries whose quantities are zero:


[math]\displaystyle{ \left[ \begin{array} {c} 1\,{\large\mathsf{𝟙}} & 0 & 0 \\ 0 & 1\,{\large\mathsf{𝟙}} & 0 \\ 0 & 0 & 1\,{\large\mathsf{𝟙}} \\ \end{array} \right] }[/math]


Having zeroed out all of the entries who had any dimensionful units, we can now rightly say that this matrix as a whole is unitless (has dimensionless units).

Now we can see why, despite the fact that [math]\displaystyle{ GM = P }[/math] in a meaningful sense, it is not the case that [math]\displaystyle{ G_{\text{j}}M_{\text{j}} = P_{\text{j}} }[/math] in any meaningful sense. Instead [math]\displaystyle{ G_{\text{j}}M_{\text{j}} = I }[/math], a completely generic, unitless identity matrix.

Derivation of generator embedding matrix from unchanged-interval basis and mapping

The generator embedding matrix [math]\displaystyle{ G }[/math] is related to the mapping [math]\displaystyle{ M }[/math] and unchanged-interval basis [math]\displaystyle{ \mathrm{U} }[/math] by the following formula:


[math]\displaystyle{ G=\mathrm{U}(M\mathrm{U})^{-1} }[/math]


This formula is used, among other places, in the sum polytope method for computing minimean tunings of regular temperaments (see here: Dave Keenan & Douglas Blumeyer's guide to RTT: tuning computation#Convert to generators).

And it turns out this formula works fine when subjected to a units analysis. [math]\displaystyle{ \mathrm{U} }[/math] has units of primes. And [math]\displaystyle{ M }[/math] has units of generators per primes. So we have [math]\displaystyle{ \small 𝗽·((𝗴/𝗽)·𝗽)^{-1} }[/math]. The [math]\displaystyle{ \small 𝗽 }[/math]'s on the inside of the parens cancel, and we're left with [math]\displaystyle{ \small 𝗽𝗴^{-1} }[/math], or in other words, [math]\displaystyle{ \small 𝗽/𝗴 }[/math], which are indeed the units of [math]\displaystyle{ G }[/math].

Derivation of projection matrix from unrotated vector list and scaling factor matrix

In a similar fashion we can show that the formula for the projection matrix [math]\displaystyle{ P }[/math] from the unrotated vector list [math]\displaystyle{ \mathrm{V} }[/math] and the scaling factor matrix [math]\displaystyle{ \textit{Λ} }[/math] holds up to units analysis. You can read about these objects and their relationships here: Projection#The unrotated vectors and scaling factors. The formula is:


[math]\displaystyle{ \mathrm{V}\textit{Λ}\mathrm{V}^{-1} }[/math]


With [math]\displaystyle{ \mathrm{V} }[/math] having units of [math]\displaystyle{ \small 𝗽 }[/math] and [math]\displaystyle{ \textit{Λ} }[/math] having no units (having dimensionless units), we find: [math]\displaystyle{ {\small 𝗽}\!·\!\mathsf{𝟙}\!·\!{\small 𝗽^{-1}} }[/math]. This simplifies to [math]\displaystyle{ \small 𝗽 }[/math]/[math]\displaystyle{ \small 𝗽 }[/math], which matches our projection matrix's units.

Dual norm inequality

In this section we're going to perform a units analysis of the dual norm inequality which is used to power all-interval tuning schemes, and will assume that you've familiarized yourself with that entire article:


[math]\displaystyle{ \dfrac{|𝒓\textbf{i}|}{‖C_{\mathsf{p}}\textbf{i}‖_q} \leq ‖𝒓S_{\mathsf{p}}‖_{\text{dual}(q)} }[/math]


Let's break this problem down into three parts:

  1. The left-hand side's numerator
  2. The left-hand side's denominator
  3. The right-hand side

Left-hand side's numerator

Here's what we're working with:


[math]\displaystyle{ |𝒓\textbf{i}| }[/math]


Our arbitrary interval vector [math]\displaystyle{ \textbf{i} }[/math] has units of primes [math]\displaystyle{ \small 𝗽 }[/math]. And our retuning map [math]\displaystyle{ 𝒓 }[/math] has units of [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math]. The absolute value bars have no effect on units. And so we have: ([math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math][math]\displaystyle{ \small 𝗽 }[/math], the primes cancel, and the end result is cents [math]\displaystyle{ \mathsf{¢} }[/math]. This is unsurprising because we know the retuning map gives us the error for a given interval under a temperament, and so this is just that interval's absolute error here.

Left-hand side's denominator

Here's the denominator of the left-hand side:


[math]\displaystyle{ ‖C_{\mathsf{p}}\textbf{i}‖_q }[/math]


We'll be using the default complexity of log-product complexity here for our complexity prescaler, so let's substitute that in. And let's choose a norm power of [math]\displaystyle{ q=1 }[/math]. (So we're doing the minimax-S tuning scheme here):


[math]\displaystyle{ ‖L\textbf{i}‖_1 }[/math]


Technically speaking, however, this is not really the log-prime matrix that we use when sizing intervals — that is, converting them from frequency ratios into logarithmic pitch — but the context here is that of a complexity prescaler matrix, which is only meant to scale the entries of a vector according to some pattern in advance of their norm being taken (read: the length of the vector as a whole being measured in a particular way). And so while the log-prime matrix has units of [math]\displaystyle{ \small\mathsf{oct} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math], this matrix has units of [math]\displaystyle{ \small\mathsf{(C)} }[/math], that is, it's dimensionless except for a units annotation in search of an actual quantity to annotate.

So again, the units of our arbitrary interval vector [math]\displaystyle{ \textbf{i} }[/math] are the vectorized unit [math]\displaystyle{ \small 𝗽 }[/math], for primes. So if we take a units-only view, this is what we have:


[math]\displaystyle{ ‖\mathsf{(C)}·𝗽‖_1 }[/math]


So our annotation has something to annotate now, so we could rewrite this as:


[math]\displaystyle{ ‖𝗽\mathsf{(C)}‖_1 }[/math]


Let's suppose this is a 5-limit prime-count vector, and so we have:


[math]\displaystyle{ ‖[ \; \mathsf{p_1} \; \mathsf{p_2} \; \mathsf{p_3} \; ⟩\mathsf{(C)}‖_1 }[/math]


Then we could distribute that annotation. Essentially, each of the entries in this vector is a complexity-annotated prime:


[math]\displaystyle{ ‖[ \; \mathsf{p_1}\mathsf{(C)} \; \mathsf{p_2}\mathsf{(C)} \; \mathsf{p_3}\mathsf{(C)} \; ⟩‖_1 }[/math]


The formula for this [math]\displaystyle{ 1 }[/math]-norm is very simple. We sum the absolute values of each of the entries:


[math]\displaystyle{ |\mathsf{p_1}\mathsf{(C)}| + |\mathsf{p_2}\mathsf{(C)}| + |\mathsf{p_3}\mathsf{(C)}| }[/math]


(Again, absolute value bars don't affect units, only quantity, so we can pretty much ignore them here too.) So the formula is simple, but what this means for our units analysis is not so simple! We're now summing quantities with different units! Sure, they're all primes, but they're all different primes, corresponding to completely different dimensions in the JI lattice. Your first reaction might be to think that this is only about as offensive as being asked to sum meters, feet, and furlongs; we just need to convert to the same unit and then we can sum them properly. But no! The idea behind these primes is deeper than that. Meters, feet, and furlongs are all units of length, where length is their dimension; they're all measurements of the same dimension. Whereas our primes are meant to be interpreted as completely different dimensions. So what we're being asked to do here is actually more like being asked to sum meters, seconds, and kilograms! Can't do!

So what do we do, then? Our intuition on this has been: drop the part of this that is nonsensical, and keep the part that still makes arguable sense. In other words, our annotation does appear in each term, so it makes some sense that it's still valid to keep around for the final result. But the primes don't. They get junked. And so our final units for this chunk of the expression are:


[math]\displaystyle{ \mathsf{(C)} }[/math]


Now, there is a good argument (which we considered for many months) that since the prescaling of these primes is by an object which has the same shape and entries as the log-prime matrix, we could think of it as having units of [math]\displaystyle{ \small\mathsf{oct}/𝗽 }[/math] as the log-prime matrix does, and thus all units would be in units of octaves before we take the norm, and therefore — being consistent between entries — the units would be preserved in the end by the norm. Further alternatively, we could have it both ways, i.e. convert each individual prime unit to a shared unit of octaves and also annotate. Like so:


[math]\displaystyle{ \begin{align} ‖(\mathsf{oct}/𝗽\mathsf{(C))}(𝗽)‖_1 &= \\ ‖(\mathsf{oct}/\cancel{𝗽}\mathsf{(C))})(\cancel{𝗽})‖_1 &= \\ ‖\mathsf{oct}\mathsf{(C)}‖_1 &= \\ ‖[ \; \mathsf{oct}\mathsf{(C)} \; \mathsf{oct}\mathsf{(C)} \; \mathsf{oct}\mathsf{(C)} \; ⟩‖_1 &= \\ |\mathsf{oct}\mathsf{(C)}| + |\mathsf{oct}\mathsf{(C)}| + |\mathsf{oct}\mathsf{(C)}| &= \\ \mathsf{oct}\mathsf{(C)} \end{align} }[/math]


and thus the units of the complexity could be interpreted as "weighted octaves", in a way we can't interpret results from complexities that use prescalers other than [math]\displaystyle{ L }[/math]. And so, we could say that prescaling by the log-prime matrix gives a complexity function a "badge of honor".

But we finally decided against this interpretation, after reflecting on the quotient-based form of the formula, [math]\displaystyle{ n·d }[/math], numerator times denominator. What would the units of those be? They're not logarithmic pitch; they're more like frequency, or frequency multipliers against some base pitch. So they'd both be [math]\displaystyle{ \small\mathsf{Hz} }[/math] for units of [math]\displaystyle{ \small\mathsf{Hz}/\mathsf{Hz} }[/math] or equivalently dimensionless. Or perhaps it should be interpreted as squaring the two separate [math]\displaystyle{ \small\mathsf{Hz} }[/math] values? Who's to say:


[math]\displaystyle{ \log_2{\!n·d} → \log_2{\small\mathsf{Hz·Hz}} → \log_2{\small\mathsf{Hz^2}} }[/math]


On account of these two interpretations of the same value not agreeing on units, we decided that we couldn't accept any interpretation of a norm that preserves actual units in any such way.

There's also the intuition that a complexity is an abstract measurement of an object, and no longer a real physical property of it, so it makes sense for it to be dimensionless.

Alright, but we're actually not quite done with this chunk yet, because there's another effect to recognize: the influence of the power of the norm we chose. The [math]\displaystyle{ 1 }[/math]-norm is sometimes also called the "taxicab" norm, and so we say that a complexity computed via a taxicab norm like this may include a 't' in its annotation symbol. So not only does the [math]\displaystyle{ ‖·‖_1 }[/math] preserve whatever consistent units and annotations exist among the entries it is called on, it furthermore augments any existing annotation with this taxicab 't' element. Think of it this way: the annotation doesn't change the fact that a quantity with units is in those units or not; it's more like the annotation is there to give us a little extra background information about the context of these units — where they came from, and where they're going. So our end result is actually:


[math]\displaystyle{ \mathsf{(tC)} }[/math]


Except for the fact that since the [math]\displaystyle{ 1 }[/math]-norm / taxicab norm is our default type ([math]\displaystyle{ 1 }[/math] is our default norm power, that is), we don't have to show the 't', so this was fine as it was:


[math]\displaystyle{ \mathsf{(C)} }[/math]


But this step of the norm's units effects will be important in the next step.

Right-hand side

Here's what we have over here:


[math]\displaystyle{ ‖𝒓S_{\mathsf{p}}‖_{\text{dual}(q)} }[/math]


Again, the retuning map [math]\displaystyle{ 𝒓 }[/math] has units of [math]\displaystyle{ \mathsf{¢} }[/math]/[math]\displaystyle{ \small 𝗽 }[/math]. But what about our simplicity prescaler? Well, this is always supposed to be the inverse of our complexity prescaler. So if our complexity prescaler had units of [math]\displaystyle{ \small\mathsf{(C)} }[/math], the complexity annotation, then this has units of [math]\displaystyle{ \small\mathsf{(C)}^{-1} }[/math], or in other words, [math]\displaystyle{ \small\mathsf{(S)} }[/math]. Finally, we used [math]\displaystyle{ 1 }[/math] as our norm power for our interval complexity, so we must use the dual norm power here for our retuning magnitude's norm, that being [math]\displaystyle{ ∞ }[/math]. So, we've got:


[math]\displaystyle{ ‖\mathsf{¢}/𝗽\mathsf{(S)}‖_∞ }[/math]


Let's evaluate the norm (remember, the [math]\displaystyle{ ∞ }[/math] is equivalent to taking the max of the absolute values):


[math]\displaystyle{ \max(|\mathsf{¢}/\mathsf{p_1}\mathsf{(S)}|, |\mathsf{¢}/\mathsf{p_2}\mathsf{(S)}|, |\mathsf{¢}/\mathsf{p_3}\mathsf{(S)}|) }[/math]


(Note that when we write e.g. [math]\displaystyle{ \mathsf{¢}\small/\mathsf{p_1}\mathsf{(S)} }[/math], we're not saying that the [math]\displaystyle{ \small\mathsf{(S)} }[/math] annotation is in the denominator; the annotation is understood to apply to the unit as a whole, so it's sort of floating out to the conceptual side, here.)

Like with our left-hand side denominator, the primes are disparate here and are just going to have be thrown away (though it's a bit headier here; technically the max function returns exactly one of these options and throws away the others, so individual max calls could be said to preserve units, and yet in the general case sometimes it will be [math]\displaystyle{ \small\mathsf{p_1} }[/math], sometimes [math]\displaystyle{ \small\mathsf{p_2} }[/math], etc. so we can't really say).

But the other two things — the cents, and the annotation — are perfectly consistent across every entry. So those can stay. And our end result is:


[math]\displaystyle{ \mathsf{¢}\mathsf{(S)} }[/math]


Except, again, that's not quite it, because we still haven't applied the effect from the norm power. The letter we use for the [math]\displaystyle{ ∞ }[/math]-norm is "M" for "Max", and this one is not our default, so we do have to show it:


[math]\displaystyle{ \mathsf{¢}\mathsf{(MS)} }[/math]


And now we're done here.

Putting it all back together

Reassembling the dual norm inequality with the units we've found, we get


[math]\displaystyle{ \dfrac{{\large\mathsf{¢}}}{\mathsf{(C)}} \leq \mathsf{¢}\mathsf{(MS)} }[/math]


And remember, [math]\displaystyle{ \small\mathsf{(C)}^{-1} = \dfrac{1}{\mathsf{(C)}} = \mathsf{(S)} }[/math], so we can swap that out on the left, and we've got:


[math]\displaystyle{ \mathsf{¢}\mathsf{(S)} \leq \mathsf{¢}\mathsf{(MS)} }[/math]


And there's nowhere really further we can go with this from here. Our end result tells us that when we leverage the dual norm inequality, we say that damage with respect to one norm power is less than or equal to the retuning magnitude as measured with respect to the same complexity except using the dual power. The annotations on either side do not exactly match, but it's okay because this is an inequality, not an equality. Cool!

See also

Other articles in the intermediate section of our series, for scientists, engineers, and mathematicians:

  • Tuning computation: for methods and derivations; learn how to compute tunings, and why these methods work
  • All-interval tuning schemes: the variety of tuning scheme that is most commonly named and written about on the Xenharmonic wiki

Footnotes

  1. See D&D: conventions for names, variables,_units, and notations
  2. Further evidence of this can be seen in our use of an extended form of bra-ket notation, which comes from quantum physics.
  3. The irony is that we no longer rely on a standard meter engraved on precious metal and kept in a vault. The meter is now defined by counting! The meter is defined as the distance traveled by light in a vacuum in 1/299,792,458 of a second. And the second is defined by counting 9,192,631,770 ticks of a "clock" consisting of specially energized cesium atoms.
  4. We're not alone in thinking that the description of what is being counted deserves to be treated as a first-class unit. See section 5 of ["Dimensionless units in the SI", Mohr & Phillips, 2014].