User:Romeolz/Isomorphic layouts: Difference between revisions
mNo edit summary |
Conversions between conventions and reflections |
||
| Line 25: | Line 25: | ||
* "Terpstran": right → and up-right ↗ , the most common afaik, named after the terpstrakeyboard webapp | * "Terpstran": right → and up-right ↗ , the most common afaik, named after the terpstrakeyboard webapp | ||
* "Workshop": right → and up-left ↖ , used by | * "Workshop": right → and up-left ↖ , used by scaleworkshop as right → and up ↑ for a square grid, but functions like the former because of the QWERTY layout's row offsets | ||
* "Albitonic": right → and down-right ↘ , used by projectivetuningspace, easy to conceptualize albitonic scales | * "Albitonic": right → and down-right ↘ , used by projectivetuningspace, easy to conceptualize albitonic scales | ||
I will be using the Terpstran convention by default for hexagons, and scaleworkshop's right → up ↑ convention for square grids. | |||
==== Conversions between conventions ==== | ==== Conversions between conventions ==== | ||
* Terpstran | |||
** ⇒ Workshop: o<sub>v</sub> ⇒ o<sub>v</sub> - o<sub>h</sub> | |||
** ⇒ Albitonic: o<sub>v</sub> ⇒ o<sub>h</sub> - o<sub>v</sub> | |||
* Workshop | |||
** ⇒ Terpstran: o<sub>v</sub> ⇒ o<sub>v</sub> + o<sub>h</sub> | |||
** ⇒ Albitonic: o<sub>v</sub> ⇒ -o<sub>v</sub> | |||
* Albitonic | |||
** ⇒ Terpstran: o<sub>v</sub> ⇒ o<sub>h</sub> - o<sub>v</sub> | |||
** ⇒ Workshop: o<sub>v</sub> ⇒ -o<sub>v</sub> | |||
==== Interval math with interval vectors ==== | ==== Interval math with interval vectors ==== | ||
I only figured this out recently, and it's a beautiful way of thinking about intervals, commas and RTT. | I only figured this out recently as of September 2025, and it's a beautiful way of thinking about intervals, commas and RTT. | ||
| Line 43: | Line 53: | ||
p<sub>6/5</sub> = p<sub>2*3*(1/5)</sub> = p<sub>2</sub> + p<sub>3</sub> + (-p<sub>5</sub>) = p<sub>2</sub> + p<sub>3</sub> - p<sub>5</sub> | p<sub>6/5</sub> = p<sub>2*3*(1/5)</sub> = p<sub>2</sub> + p<sub>3</sub> + (-p<sub>5</sub>) = p<sub>2</sub> + p<sub>3</sub> - p<sub>5</sub> | ||
This lines up perfectly with Monzo notation. 6/1 = [1 1 | This lines up perfectly with Monzo notation. 6/1 = [1 1 0〉, 6/5 = [1 1 -1〉 | ||
81/80 = [-4 4 - | 81/80 = [-4 4 -1〉, p<sub>81/80</sub> = p<sub>2</sub><sup>-4</sup><sub>*3</sub><sup>4</sup><sub>*5</sub><sup>-1</sup> = -4*p<sub>2</sub> + 1*p<sub>3</sub> - 1*p<sub>5</sub> | ||
The really neat thing about this is that the exponents and multiplications in the subscript turn into multiplications and additions respectively. The reason why is because we're going from linear frequency space (Hz) to logarithmic pitch space (cents)! That fact that all isomorphic layouts are logarithmic in nature and the math we do with them reflects that, was groundbreaking to me. Though it's obvious in hindsight... | The really neat thing about this is that the exponents and multiplications in the subscript turn into multiplications and additions respectively. The reason why is because we're going from linear frequency space (Hz) to logarithmic pitch space (cents)! That fact that all isomorphic layouts are logarithmic in nature and the math we do with them reflects that, was groundbreaking to me. Though it's obvious in hindsight... | ||
| Line 92: | Line 102: | ||
* There are many cases blah blah blah.............. | * There are many cases blah blah blah.............. | ||
==== Reflection ==== | ==== Reflection (no keyboard rotations) ==== | ||
Square grid: | Square grid: | ||
* There are four options for reflection, o<sub>h</sub>, o<sub>v</sub>, and the diagonals in between them: 'o<sub>h</sub> + o<sub>v</sub>' and 'o<sub>h</sub> - o<sub>v</sub>'. | |||
* On a square grid it's simple to reflect along the grid lines. To reflect the layout along the o<sub>h</sub> axis, o<sub>v</sub> ⇒ -o<sub>v</sub> and vice versa. | * On a square grid it's simple to reflect along the grid lines. To reflect the layout along the o<sub>h</sub> axis, o<sub>v</sub> ⇒ -o<sub>v</sub> and vice versa. | ||
* To reflect along the 'o<sub>h</sub> + o<sub>v</sub>' (or -o<sub>h</sub> - o<sub>v</sub>) axis, o<sub>h</sub> ⇒ o<sub>v</sub> and o<sub>v</sub> ⇒ o<sub>h</sub>. | * To reflect along the 'o<sub>h</sub> + o<sub>v</sub>' (or -o<sub>h</sub> - o<sub>v</sub>) axis, o<sub>h</sub> ⇒ o<sub>v</sub> and o<sub>v</sub> ⇒ o<sub>h</sub>. | ||
* To reflect along the 'o<sub>h</sub> - o<sub>v</sub>' (or -o<sub>h</sub> + o<sub>v</sub>) axis, o<sub>h</sub> ⇒ -o<sub>v</sub> and o<sub>v</sub> ⇒ -o<sub>h</sub>. | * To reflect along the 'o<sub>h</sub> - o<sub>v</sub>' (or -o<sub>h</sub> + o<sub>v</sub>) axis, o<sub>h</sub> ⇒ -o<sub>v</sub> and o<sub>v</sub> ⇒ -o<sub>h</sub>. | ||
* | Hexagonal layout: (Terpstran convention) | ||
* There are six options for reflection, o<sub>h</sub>, o<sub>v</sub>, 'o<sub>h</sub> - o<sub>v</sub>', and the diagonals between them: 'o<sub>h</sub> + o<sub>v</sub>', '2*o<sub>h</sub> - o<sub>v</sub>' and '-o<sub>h</sub> + 2*o<sub>v</sub>'. | |||
* To reflect along the o<sub>h</sub> axis, o<sub>v</sub> ⇒ o<sub>h</sub> - o<sub>v</sub>. | |||
* To reflect along the o<sub>v</sub> axis, o<sub>h</sub> ⇒ o<sub>v</sub> - o<sub>h</sub>. | |||
* To reflect along the 'o<sub>h</sub> - o<sub>v</sub>' axis, o<sub>h</sub> ⇒ -o<sub>v</sub> and o<sub>v</sub> ⇒ -o<sub>h</sub>. | |||
* To reflect along the 'o<sub>h</sub> + o<sub>v</sub>' axis, o<sub>h</sub> ⇒ o<sub>v</sub> and o<sub>v</sub> ⇒ o<sub>h</sub>. | |||
* To reflect along the '2*o<sub>h</sub> - o<sub>v</sub>' axis, o<sub>h</sub> ⇒ o<sub>h</sub> - o<sub>v</sub> and o<sub>v</sub> ⇒ -o<sub>v</sub>. | |||
* To reflect along the '-o<sub>h</sub> + 2*o<sub>v</sub>' axis, o<sub>h</sub> ⇒ -o<sub>h</sub> and o<sub>v</sub> ⇒ -o<sub>h</sub> + o<sub>v</sub>. | |||
Technically reflection is possible along any axis if you allow keyboard rotations, but that's not as useful and I can't be bothered to figure it out anyway. | |||