User:Frostburn/Theory From First Principles

Revision as of 06:49, 22 November 2023 by Frostburn (talk | contribs) (On units: Try to figure out what a reciprocal cent is.)

Just using Xen Wiki as a notepad, don't mind me.

I'm currently working on the grammar for Scale Workshop 3. It will naturally include monzos and I'm debating if I want to include vals so I'm writing stuff down as a thinking aid.

Time Domain

We begin our journey in the time domain where one second (1 s) passes for every 9192631770 oscillations of the radiation emited by caesium 133 during the unperturbed ground-state hyperfine transition.

Frequency Domain

We invert time to arrive in the frequency domain where oscillations are measured in repetitions per second i.e. Hertz (Hz = s-1).

Scalar Domain

Frequencies are scalar multiples of each other and especially the positive rational scalars are of particular interest in music.

Pitch Domain

When we take the logarithm of a positive rational scalar its factors separate into a sum e.g. [math]\displaystyle{ \log(15/8) = \log(3) + \log(5) - 3\log(2) }[/math].

Adding Geometry

By the fundamental theorem of arithmetic logarithms of primes are linearly independent over [math]\displaystyle{ \mathbb{Q} }[/math], so we can interprete [math]\displaystyle{ \log(2), \log(3), \ldots }[/math] as basis vectors. We write [math]\displaystyle{ e_p }[/math] in place of [math]\displaystyle{ \log(p) }[/math].

To make things slightly more formal we define the right-facing arrow function

[math]\displaystyle{ \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]

which takes objects from the scalar domain to the geometric pitch domain.

We denote the inverse of the arrow function with [math]\displaystyle{ \mathrm{ratio} }[/math] i.e. it turns prime count vectors into ratios:

[math]\displaystyle{ \mathrm{ratio}(\overrightarrow{p/q}) = p/q }[/math]

Pitch is measured in cents (¢) which we define to be the vector quantity [math]\displaystyle{ ¢ := e_2 / 1200 }[/math] i.e. [math]\displaystyle{ \mathrm{ratio}(¢) = 2^{\frac{1}{1200}} \approx 1.0005777895 }[/math] .

We also define the backslash function [math]\displaystyle{ \backslash d \mapsto e_2 / d }[/math] .

In combination with implicit scalar multiplication the similarity with Scale Workshop's N-of-EDO notation is unmistakable e.g. [math]\displaystyle{ 7 \backslash 12 = 700 ¢ }[/math] .

Expanding geometry

Equal temperaments can be represented by vals which we define as

[math]\displaystyle{ \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] ,

where the negative superscripts are geometric inverses i.e. [math]\displaystyle{ \overrightarrow{v}^{-1} \cdot \overrightarrow{v} = 1 }[/math].

Usually the basis is obvious from context e.g. [math]\displaystyle{ a = 2, b = 3, c = 5 }[/math]. In these cases we use a left-facing arrow e.g.

[math]\displaystyle{ \overleftarrow{12} := \mathrm{val}(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.

[math]\displaystyle{ \overleftarrow{12} \cdot \overrightarrow{15/8} = \langle 12, 19, 28 \vert -3, 1, 1 \rangle = 11 }[/math]

The actual pitch is obtained by sandwiching the interval between the val and the step size:

[math]\displaystyle{ \overleftarrow{12} \cdot \overrightarrow{15/8} \backslash 12 = 1100 ¢ }[/math] .

The geometric inverses are mainly relevant for subgroup temperaments. Consider Barbados:

[math]\displaystyle{ \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]

We can verify that the comma 676/675 indeed vanishes using this val:

[math]\displaystyle{ \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]

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.

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]\displaystyle{ e_2 }[/math]. Let's call [math]\displaystyle{ \hat{i} }[/math] the direction of [math]\displaystyle{ e_2 }[/math] i.e. [math]\displaystyle{ e_2 = w_2 \hat{i} = 12 d \hat{i} }[/math], where [math]\displaystyle{ d }[/math] is the metric weight of a demitone. The basis vector itself has unit metric [math]\displaystyle{ \hat{i} \cdot \hat{i} = 1 }[/math].

A reciprocal cent satisfies [math]\displaystyle{ ¢^{-1} \cdot ¢ = 1 }[/math] so as per the usual definition of the geometric inverse of a vector we have [math]\displaystyle{ ¢^{-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].

Let's define superscript basis vectors as

[math]\displaystyle{ e^p := e_p ^ {-1} }[/math]

i.e. we have [math]\displaystyle{ e^2 = e_2 / w_2^2 = \hat{i} / w_2 }[/math]. A reciprocal cent can now be expressed as [math]\displaystyle{ ¢^{-1} = 1200 e^2 = 100 d^{-1} \hat{i} }[/math] or 100 reciprocal demitones in the [math]\displaystyle{ \hat{i} }[/math] direction.

Exterior algebra nonsense

Both 12edo and 7edo temper out the syntonic comma: [math]\displaystyle{ \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]\displaystyle{ 2 \cdot \overleftarrow{12} + \overleftarrow{7} = \overleftarrow{31} }[/math]

We can identify the plane spanned by [math]\displaystyle{ \overleftarrow{12} }[/math] and [math]\displaystyle{ \overleftarrow{7} }[/math] as the (5-limit) Meantone temperament. We can use wedges to represent it symbolically:

[math]\displaystyle{ \overleftarrow{12} \wedge \overleftarrow{7} = -4 e_3 \wedge e_5 + 4 e_5 \wedge e_2 - e_2 \wedge e_3 }[/math] ,

where the components are basis planes. E.g. [math]\displaystyle{ e_3 \wedge e_5 }[/math] is the plane where octaves are tempered out. The wedge of any vector with itself is zero i.e. you can't span a plane with only one direction. The wedge product is also antisymmetric and the planes come with signed weights but we mostly care about the orientation they represent.

The largest possible wedge combines all of the basis vectors and represents just intonation i.e. no tempering whatsoever: [math]\displaystyle{ e_2 \wedge e_3 \wedge e_5 }[/math].

Exterior algebras do have a sense of orthogonality but we need a metric to do projection and tuning which we already defined implicitly by giving numerical values to geometric inverses and dot products. As far as data structures go, full Clifford algebras are memory-hungry. Not worth the complication in a general purpose tool like Scale Workshop.