User:Frostburn/Theory From First Principles: Difference between revisions

Frostburn (talk | contribs)
Various tweaks, define the JIP and make a bad pun.
Frostburn (talk | contribs)
Adding Geometry: Elucidate the behaviour of scalar multiples of the projective origin.
 
(10 intermediate revisions by the same user not shown)
Line 15: Line 15:
When we take the logarithm of a positive rational scalar its factors separate into a sum e.g. <math>\log(15/8) = \log(3) + \log(5) - 3\log(2)</math>.
When we take the logarithm of a positive rational scalar its factors separate into a sum e.g. <math>\log(15/8) = \log(3) + \log(5) - 3\log(2)</math>.


== Absolute Pitch Domain ==
The way the logarithm converts multiplicative quantities into linear representation motivates the designation of intermediary domain where the units are kept intact inside the logarithm e.g.
<math>
\log(440 Hz) = \log(Hz \cdot 2^3 \cdot 5 \cdot 11) = \log(Hz) + 3 \log(2) + \log(5) + \log(11) .
</math>
To make use of this representation we would like to add quantities to each other so let's see how that works:
<math>
\log(361 Hz) + \log(529 Hz) = \log(Hz) + \log(19^2) + \log(Hz) + \log(23^2) = 2 \log(Hz) + 2 \log(19) + 2 \log(23) = 2 \log(437 Hz) ,
</math>
which looks perfectly reasonable besides that extra factor of 2 in the front. We choose to ignore it and interprete the sum of absolute pitch quantities as their [[Wikipedia:Geometric_mean|geometric mean]].
In the non-logarithmic domain this simply means that we have to keep track of the exponent of Hz and take the appropriate root. This has the added benefit of unifying the time and frequency domains. e.g. 1 millisecond is simply identified as the period of oscillation and corresponds to a frequency of 1 kilohertz.
== Adding Geometry ==
== Adding Geometry ==
By the [[Wikipedia:Fundamental theorem of arithmetic|fundamental theorem of arithmetic]] logarithms of primes are linearly independent over <math>\mathbb{Q}</math>, so we can interprete <math>\log(2), \log(3), \ldots</math> as orthogonal basis vectors. We write <math>e_p</math> in place of <math>\log(p)</math> and enforce orthogonality
By the [[Wikipedia:Fundamental theorem of arithmetic|fundamental theorem of arithmetic]] logarithms of primes are linearly independent over <math>\mathbb{Q}</math>, so we can interprete <math>\log(2), \log(3), \ldots</math> as basis vectors. We write <math>e_p</math> in place of <math>\log(p)</math> and enforce orthogonality


<math>e_p \cdot e_q = 0, p \ne q, p, q \in \mathbb{P}</math>
<math>e_p \cdot e_q = 0, p \ne q, p, q \in \mathbb{P}</math>
Line 22: Line 38:
To make things slightly more formal we define the right-facing arrow function
To make things slightly more formal we define the right-facing arrow function


<math>\overrightarrow{2^x 3^y 5^z \ldots} \mapsto x e_2 + y e_3 + z e_5 \ldots, x, y, z \in \mathbb{Q}</math>
<math>\overrightarrow{2^x 3^y 5^z \ldots} \mapsto x e_2 + y e_3 + z e_5 + \ldots, x, y, z, \ldots \in \mathbb{Q}</math>


which takes objects from the scalar domain to the geometric pitch domain.
which takes objects from the scalar domain to the geometric pitch domain.
Line 35: Line 51:


In combination with implicit scalar multiplication the similarity with Scale Workshop's N-of-EDO notation is unmistakable e.g. <math>7 \backslash 12 = 700 ¢</math> .
In combination with implicit scalar multiplication the similarity with Scale Workshop's N-of-EDO notation is unmistakable e.g. <math>7 \backslash 12 = 700 ¢</math> .
Absolute pitch can be incorporated when we introduce a basis vector <math>e_0</math> and associate it with logarithmic frequency
<math>\overrightarrow{Hz} \mapsto e_0</math>
It represents a single point of origin in projective geometry (remember how we chose to ignore that extra scalar in front when summing absolute pitches).
In practice it's handy to have a reference frequency that humans can hear so we might use the shifted origin
<math>\tilde{e_0} := \overrightarrow{440Hz} = e_0 + 3 e_2 + e_5 + e_{11}</math>.
When working with absolute pitch, the inverse of the arrow function is called <math>\mathrm{freq}</math> instead of <math>\mathrm{ratio}</math>
<math>\mathrm{freq}(\overrightarrow{\frac{p}{q} Hz}) = \frac{p}{q} Hz</math> .
Care must be taken when the multiplier of the projective origin is not 1. e.g. Let's consider 1.5 Hz which is a perfect fifth above 1 Hz. It's represented as <math>e_0 - e_2 + e_3</math>.
If some other calculation gave us the result <math>2 e_0 - e_2 + e_3</math> it wouldn't represent 1.5Hz it's
<math>\mathrm{freq}(2 e_0 - e_2 + e_3) = 1.5 Hz^2 \sim \sqrt{\frac{3}{2}} Hz \approx 1.22 Hz</math>
instead.
== Expanding geometry ==
== Expanding geometry ==
It's instructive to construct <math>\mathrm{ratio}</math> more explicitly by considering the inverses of the basis vectors
It's instructive to construct <math>\mathrm{ratio}</math> more explicitly by considering the inverses of the basis vectors
Line 49: Line 88:
<math>\mathrm{ratio}(x) = \prod_{p \in \mathbb{P}} p^{x \cdot e^p}</math>
<math>\mathrm{ratio}(x) = \prod_{p \in \mathbb{P}} p^{x \cdot e^p}</math>


i.e. the superscript vectors act as measuring sticks telling us how much of each prime there is in a vector.
i.e. the superscript vectors act as measuring sticks telling us how much of each prime there is in an arbitrary vector.


Let's ''coin'' a new unit called ''jorp'' (think ''Europe'') <math>€ = ¢^{-1} = 1200 \cdot \overrightarrow{2}^{-1}</math> which measures intervals with a resolution of 1200 ticks per octave.
Let's ''coin'' a new unit called ''jorp'' (think ''Europe'') <math>€ = ¢^{-1} = 1200 \cdot \overrightarrow{2}^{-1}</math> which measures intervals with a resolution of 1200 ticks per octave.


One conceptually important measuring stick is the one constructed from the logarithms of the primes:
A conceptually important measuring stick is the one constructed from the logarithms of the primes:


<math>\mathsf{JIP} = \sum_{p \in \mathbb{P}} e^p \log p</math>
<math>\mathsf{JIP} = \sum_{p \in \mathbb{P}} e^p \log p</math>
Line 66: Line 105:
</math>
</math>


However rational approximations to the <math>\mathsf{JIP}</math> do belong in our space. Equal temperaments can be represented by such approximations called [[Val|vals]] which we define as
However rational approximations to the <math>\mathsf{JIP}</math> do belong in our space. Equal temperaments can be represented by such approximations called [[Patent_val#Generalized_patent_val|generalized patent vals]] which we define as
 
<math>\mathrm{gpv}(n; a, b, \ldots, z) := n \overrightarrow{a}^{-1} + \lfloor n \log_a(b) + \frac{1}{2}\rfloor \overrightarrow{b}^{-1} + \ldots + \lfloor n \log_a(z) + \frac{1}{2}\rfloor \overrightarrow{z}^{-1}</math> ,


<math>\mathrm{val}(n; a, b, \ldots, z) := n \overrightarrow{a}^{-1} + \lfloor n \log_a(b) + \frac{1}{2}\rfloor \overrightarrow{b}^{-1} + \ldots + \lfloor n \log_a(z) + \frac{1}{2}\rfloor \overrightarrow{z}^{-1}</math> ,
which belong to a class of [[Val|vals]] complementary to [[Monzo|monzos]].


Usually the basis is obvious from context e.g. <math>a = 2, b = 3, c = 5</math>. In these cases we use a left-facing arrow e.g.
Usually the basis is obvious from context e.g. <math>a = 2, b = 3, c = 5</math>. In these cases we use a left-facing arrow e.g.


<math>\overleftarrow{12} := \mathrm{val}(12; 2, 3, 5) = 12 e^2 + 19 e^3 + 28 e^5 =: \langle 12, 19, 28 \rbrack</math>
<math>\overleftarrow{12} := \mathrm{gpv}(12; 2, 3, 5) = 12 e^2 + 19 e^3 + 28 e^5 =: \langle 12, 19, 28 \rbrack</math>


We can use these new objects to calculate how many steps of 12edo a tempered interval spans e.g.
We can use these new objects to calculate how many steps of 12edo a tempered interval spans e.g.
Line 84: Line 125:
The geometric inverses are mainly relevant for subgroup temperaments. Consider [[The_Archipelago#Subgroup_temperaments|Barbados]]:
The geometric inverses are mainly relevant for subgroup temperaments. Consider [[The_Archipelago#Subgroup_temperaments|Barbados]]:


<math>\overleftarrow{5} := \mathrm{val}(5; 2, 3, 13/5) = 5 \cdot \overrightarrow{2}^{-1} + 8 \cdot \overrightarrow{3}^{-1} + 7 \cdot \overrightarrow{13/5}^{-1} = 5 e^2 + 8 e^3 - \frac{7}{2}e^5 + \frac{7}{2}e^{13}</math>
<math>\overleftarrow{5} := \mathrm{gpv}(5; 2, 3, 13/5) = 5 \cdot \overrightarrow{2}^{-1} + 8 \cdot \overrightarrow{3}^{-1} + 7 \cdot \overrightarrow{13/5}^{-1} = 5 e^2 + 8 e^3 - \frac{7}{2}e^5 + \frac{7}{2}e^{13}</math>


We can verify that the comma 676/675 indeed vanishes using this val:
We can verify that the comma 676/675 indeed vanishes using this val:
Line 90: Line 131:
<math>\overleftarrow{5} \cdot \overrightarrow{676/675} = \langle 5, 8, -\frac{7}{2}, 0, 0, \frac{7}{2} \vert 2, -3, -2, 0, 0, 2 \rangle = 0</math>
<math>\overleftarrow{5} \cdot \overrightarrow{676/675} = \langle 5, 8, -\frac{7}{2}, 0, 0, \frac{7}{2} \vert 2, -3, -2, 0, 0, 2 \rangle = 0</math>


Note that above I've implicitly used a convenient metric to carry out the calculations which is fine due to the new basis still being orhogonal. Explicitly we'd have
Note that above I've implicitly used a convenient metric to carry out the calculations, which is fine due to the new basis still being orhogonal. Explicitly we'd have
<math>\overrightarrow{13/5}^{-1} = (w_{13} \hat{m} - w_5 \hat{k}) / (w_5^2 + w_{13}^2)</math>, where the weights decide how much 13/5 "leans" toward 5/1 or 13/1.
<math>\overrightarrow{13/5}^{-1} = (w_{13} \hat{m} - w_5 \hat{k}) / (w_5^2 + w_{13}^2)</math>, where the weights decide how much 13/5 "leans" towards 5/1 or 13/1.
 
We make the projective origin <math>e_0</math> non-invertible by enforcing a null metric weight <math>e_0 \cdot e_0 = 0</math> which can be handy in some calculations and often does the right thing.
 
Most of the theory developed here deals with relative pitch. It's always possible to ground a result on an origin e.g.
 
<math>
\mathrm{freq}(\tilde{e_0} + \overleftarrow{12} \cdot \overrightarrow{15/8} \backslash 12) = \mathrm{freq}(e_0 + \frac{47}{12} e_2 + e_5 + e_{11}) \approx 830.6 Hz
</math>


== On units ==
== On units ==
Scalars do not have units. That's what makes them scalars. Do pitches have units? Maybe they are like radians, unitless but it makes no sense to add them to other kinds of objects. Whatever the case may be, prime count vectors (i.e. monzos) have inverse units to vals. This should be enough to distinguish them during SW3 runtime and prevent vals from being interpreted as pitch or turned into frequencies.
Scalars do not have units. That's what makes them scalars. Do relative pitches have units? Maybe they're like radians, unitless but it makes no sense to add them to other kinds of objects. Whatever the case may be, prime count vectors (i.e. monzos) have inverse units to vals. This is enough to distinguish them during SW3 runtime and prevent vals from being interpreted as pitch or turned into frequencies.


Taking these considerations more seriously and remembering that cents are a vector quantity we can try to figure out what units vals have: One cent is one hundreth of a semitone and one octave consists of twelve of these semitones. All vector quantities. Let's call the dimensioneless version of a semitone a demitone. To re-iterate: A cent is 1/100 demitones in the direction of <math>e_2</math>. Let's call <math>\hat{i}</math> the direction of <math>e_2</math> i.e. <math>e_2 = w_2 \hat{i} = 12 d \hat{i}</math>, where <math>d</math> is the metric weight of a demitone. The basis vector itself has unit metric <math>\hat{i} \cdot \hat{i} = 1</math>.
Taking these considerations more seriously and remembering that cents are a vector quantity we can try to figure out what units vals such as the ''jorp'' (€) have: One cent is one hundreth of a semitone and one octave consists of twelve of these semitones. All vector quantities. Let's call the dimensioneless version of a semitone a demitone. To re-iterate: A cent is 1/100 demitones in the direction of <math>e_2</math>. Let's call <math>\hat{i}</math> the direction of <math>e_2</math> i.e. <math>e_2 = w_2 \hat{i} = 12 d \hat{i}</math>, where <math>d</math> is the metric weight of a demitone. The basis vector itself has unit metric <math>\hat{i} \cdot \hat{i} = 1</math>.


A reciprocal cent satisfies <math>¢^{-1} \cdot ¢ = 1</math> so as per the usual definition of the geometric inverse of a vector we have <math>¢^{-1} = ¢ / (¢ \cdot ¢) = \frac{1}{1200}e_2 / (\frac{1}{1200}^2 e_2 \cdot e_2) = 1200 w_2 \hat{i} / (w_2^2 \hat{i} \cdot \hat{i}) = \frac{1200}{w_2}\hat{i}</math>.
A reciprocal cent satisfies <math>¢^{-1} \cdot ¢ = 1</math> so as per the usual definition of the geometric inverse of a vector we have <math>¢^{-1} = ¢ / (¢ \cdot ¢) = \frac{1}{1200}e_2 / (\frac{1}{1200}^2 e_2 \cdot e_2) = 1200 w_2 \hat{i} / (w_2^2 \hat{i} \cdot \hat{i}) = \frac{1200}{w_2}\hat{i}</math>.


Now we have <math>e^2 = e_2 / w_2^2 = \hat{i} / w_2</math>. A reciprocal cent can now be expressed as <math>¢^{-1} = 1200 e^2 = 100 d^{-1} \hat{i}</math> or 100 reciprocal demitones in the <math>\hat{i}</math> direction.
As we have <math>e^2 = e_2 / w_2^2 = \hat{i} / w_2</math>; A reciprocal cent can now be expressed as <math>¢^{-1} = 1200 e^2 = 100 d^{-1} \hat{i}</math> or 100 reciprocal demitones in the <math>\hat{i}</math> direction.
 
To be perfectly clear about the nature of these objects: There is no "cent" associated with primes besides 2. The closest we can get is:
 
<math>\overrightarrow{3} \cdot \mathsf{JIP} / \log(2) * 1200 ¢ \approx 1901.955 ¢</math>
 
Where we had to ''a)'' violate linear indepence over <math>\mathbb{Q}</math> ''b)'' remove "twoness" by dividing by the logarithm ''c)'' explicitly add the units to "twist" the answer into the requisitioned direction.


== Clifford algebra nonsense ==
== Clifford algebra nonsense ==
Line 106: Line 161:
<math>\overleftarrow{12} \cdot \overrightarrow{81/80} = 0 = \overleftarrow{7} \cdot \overrightarrow{81/80}</math> .
<math>\overleftarrow{12} \cdot \overrightarrow{81/80} = 0 = \overleftarrow{7} \cdot \overrightarrow{81/80}</math> .


Therefore so does any linear combination of them e. g. <math>2 \cdot \overleftarrow{12} + \overleftarrow{7} = \overleftarrow{31}</math>
Therefore so does any linear combination of them e. g. <math>2 \cdot \overleftarrow{12} + \overleftarrow{7} = \overleftarrow{31} \implies \overleftarrow{31} \cdot \overrightarrow{81/80} = 0</math>


We can identify the plane spanned by <math>\overleftarrow{12}</math> and <math>\overleftarrow{7}</math> as the (5-limit) Meantone temperament. We can use wedges to represent it symbolically:
We can identify the plane spanned by <math>\overleftarrow{12}</math> and <math>\overleftarrow{7}</math> as the (5-limit) Meantone temperament. We can use wedges to represent it symbolically:
Line 128: Line 183:
which is is extended linearly to all vectors. It is obvious from the definitions that the Meantone temperament is represented by <math>\overline{\overrightarrow{81/80}}</math>.
which is is extended linearly to all vectors. It is obvious from the definitions that the Meantone temperament is represented by <math>\overline{\overrightarrow{81/80}}</math>.


Defining the vee operator <math>a \vee b := \overline{\overline{b} \wedge \overline{a}}</math>, where the inner overlines are the inverses of the dual (always obvious from context). Wedges combine vals into temperaments that are closer to just intonation while vees do progressive damage to just intonation. As an exercise let's calculate the damage done by combining Meantone with Augmented:
We define the vee operator <math>a \vee b := \overline{\overline{b} \wedge \overline{a}}</math>, where the inner overlines are the inverses of the dual (always obvious from context).
 
Wedges combine vals into temperaments that are closer to just intonation while vees do progressive damage to just intonation. As an exercise let's calculate the damage done by combining Meantone with Augmented:


<math>
<math>
Line 146: Line 203:
Exterior algebras do have a sense of lying-in-the-plane-of but we need a metric to do projection and tuning which we already touched upon in the units section. As far as data structures go, full Clifford algebras are memory-hungry. Not worth the complication in a general purpose tool like Scale Workshop.
Exterior algebras do have a sense of lying-in-the-plane-of but we need a metric to do projection and tuning which we already touched upon in the units section. As far as data structures go, full Clifford algebras are memory-hungry. Not worth the complication in a general purpose tool like Scale Workshop.


To explore our space a bit longer we can consider <math>e_2</math> as an interval class consiting of all multiples of the octave. After all we have <math>\overrightarrow{8} = 3 \cdot \overrightarrow{2} = 3 e_2</math>. Wedging gives us larger classes. <math>e_2 \wedge e_3</math> can be seen as representing Pythagorean just intonation. Unfortunately the wedges are not powerful enough to distinguish subflavors <math>\overrightarrow{2} \wedge \overrightarrow{9} = 2 \cdot \overrightarrow{2} \wedge \overrightarrow{3} = \overrightarrow{4} \wedge \overrightarrow{3}</math> but at least the "orientation" is correct. Previously we used the term "just intonation" to refer to lack of tempering but it's also used to refer to an interval class such as 5-limit just intonation representable by <math>e_2 \wedge e_3 \wedge e_5</math>.
To explore our space a bit longer we can consider <math>e_2</math> as an interval class consiting of all multiples of the octave. After all we have <math>\overrightarrow{8} = 3 \cdot \overrightarrow{2} = 3 e_2</math>. Wedging gives us larger classes. <math>e_2 \wedge e_3</math> can be seen as representing Pythagorean just intonation. Unfortunately the wedges are not accurate enough to distinguish subflavors <math>\overrightarrow{2} \wedge \overrightarrow{9} = 2 \cdot \overrightarrow{2} \wedge \overrightarrow{3} = \overrightarrow{4} \wedge \overrightarrow{3}</math> but at least the "orientation" is correct. Previously we used the term "just intonation" to refer to lack of tempering but it's also used to refer to an interval class such as 5-limit just intonation representable by <math>e_2 \wedge e_3 \wedge e_5</math>.


One interesting pseudo-object in our space (let's call it <math>\mathbb{S}</math>) is the unison plane:
One interesting pseudo-object in our space (let's call it <math>\mathbb{S}</math>) is the unison plane:
Line 152: Line 209:
<math>\{\mathsf{JIP} \cdot x = 0, x \in \mathbb{S}\} = \{\overrightarrow{1}\}</math>
<math>\{\mathsf{JIP} \cdot x = 0, x \in \mathbb{S}\} = \{\overrightarrow{1}\}</math>


which strictly speaking consists of only a single element, namely the unison 1/1. However all commas lie close to this plane so it's informative to look at 3D subspaces of <math>\mathbb{S}</math> facing the unison plane to get a 2D view of all commas of interest. The null-space of all reasonable temperaments are also closely aligned with this plane.
which strictly speaking consists of only a single element, namely the unison 1/1. However all commas lie close to this plane so in 3D subspaces of <math>\mathbb{S}</math> it's informative to face the unison plane head-on to get a 2D view of all commas of interest. The null-space of all reasonable temperaments (i.e. the set of all commas and their products that vanish in the temperament) are also closely aligned with this plane.