User:Romeolz/Isomorphic layouts

From Xenharmonic Wiki
Jump to navigation Jump to search

HERE IS EVERYTHING INTERESTING I HAVE FIGURED OUT ABOUT ISOMORPHIC LAYOUTS!!!

This page is very much a work in progress, frankly it's a mess but I hope anyone reading this can benefit from it somehow!

Note: I am very much a math person and this is very theoretical for the time being. I mostly work in a Regular Temperament Theory (RTT) framework (sorry Domin).

TODO:

  • Hobbled layouts
  • Coloring (albitonic and kite, edostep or albitonic gradient, RTT kite gradient???)
  • scale (1 or 2 axis), shear, warp(the weird one, apparently just a type of shear)
  • Bosanquet modifications OR diatonic layouts (would include W-H and other mods)
  • pluridiatonic layouts (basically encompasses almost all commonly used temperaments)
  • W-H extensions (interlaced)
  • HT extensions
  • equivalence continua
  • images and audio examples for everything

My "inventions" and terminology

If there are established names for these concepts please let me know!!

Offsets and vectors

Interval vector

If you don't know what vectors are: A vector is basically an arrow with a length and a direction. I'm working with 2-dimensional vectors, so they're comprised of an x-component and a y-component. Vectors can be added and subtracted together, and they can be multiplied or divided by numbers. Here you can have a look at what vectors and the operations done on them look like.

This refers to the shape (or shapes) of an interval in an isomorphic layout. A unison vector (aka redundancy) is the same as what the folks at Lumatone call repeating note patterns.

19edo Bosanquet-Wilson layout with drawn on vectors, using the Terpstran convention

Offset vectors

Every isomorphic layout can be defined by two offset vectors. I will call them ov and oh, offset vertical and offset horizontal. They correspond to a key next to the origin. An angle of 60 or 120 degrees correspons to a hexagonal layout. An angle of 90 degrees corresponds to a square grid.

The octave vector expressed as a combination of offset vectors

Every interval's shape can be described as a combination of ov:s and oh:s in the form of pa/b = x*oh + y*ov.

Offset conventions for hexagonal keyboards

There are three ways of notating offsets for hexagonal keyboards (with straight rows, zigzag columns).

  • "Terpstran": right → and up-right ↗ , the most common afaik, named after the terpstrakeyboard webapp
  • "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

I will be using the Terpstran convention by default for hexagons, and scaleworkshop's right → up ↑ convention for square grids.

Conversions between conventions

  • Terpstran
    • ⇒ Workshop: ov ⇒ ov - oh
    • ⇒ Albitonic: ov ⇒ oh - ov
  • Workshop
    • ⇒ Terpstran: ov ⇒ ov + oh
    • ⇒ Albitonic: ov ⇒ -ov
  • Albitonic
    • ⇒ Terpstran: ov ⇒ oh - ov
    • ⇒ Workshop: ov ⇒ -ov
19edo Bosanquet-Wilson: p3 - p2 = p3/2, p5 - p3 = p5/3.

Interval math with interval vectors

I only figured this out recently as of September 2025, and it's a beautiful way of thinking about intervals, commas and RTT.


Let's define vectors p1, p2, p3, p5... as the shape of *1/1, 2/1, 3/1, 5/1... on a given isomorphic layout. p1 might not always exist at all: this is the case with rank-2 layouts. p1 is the "unison vector", and there is no obvious choice which way to point it, because there will always be two options equally far away. I have decided to always choose the one that has a smaller angle between it and the "playing direction", more on that later. Every other interval vector could be defined as the physically closest option to the playing direction when it exists. Defining the vectors ultimately comes down to personal preference, but it's handy to have a mathematical way of defining them when there are too many to define by hand.

Now we can derive the shapes of new intervals by adding and subtracting these vectors like so: (examples not pictured)

p6 = p2*3 = p2 + p3,

p6/5 = p2*3*(1/5) = p2 + p3 + (-p5) = p2 + p3 - p5

This lines up perfectly with Monzo notation. 6/1 = [1 1 0〉, 6/5 = [1 1 -1〉

81/80 = [-4 4 -1〉, p81/80 = p2-4*34*5-1 = -4*p2 + 1*p3 - 1*p5

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...

Layout behavior

Aural bias vs. harmonic bias

This concept refers to how the notes of a layout are situated relative to one another.

Layouts with an aural bias lay notes close in pitch near each other physically on the layout.

Layouts with a harmonic bias lay notes with a small harmonic distance near each other physically on the layout.

Lumatone: Classic mode, melodic mode, harmonic mode

Though intended for 12edo, these terms can be generalized to other tunings.

Bosanquet-Wilson: the albitonic major scale in blue overlaid with the playing direction/octave vector in purple

Classic mode refers to a 12edo Bosanquet-Wilson layout originally, but I will expand the meaning to include other layouts that have specific properties. Their equave vectors and playing directions are the same, that being horizontal (and to the right). They're non-jagged, and have some easily accessible albitonic scale as their basis. It's a meandering line that closely follows the playing direction. Classic mode is analogous to aural bias.

Wicki-Hayden: the albitonic major scale in blue overlaid with the playing direction/octave vector in purple

Melodic mode refers to the Wicki-Hayden layout in 12edo. I will add layouts to the term that adhere to the following. The equave vector is close to vertical, and so is the playing direction. They also have a very clear albitonic scale as their basis, but rather it's laid out in a block-like shape much more densely. It zigzags around the playing direction. Melodic mode can be aurally biased or harmonically biased depending on the harmonic content of the albitonic scale.

Harmonic Table: three different ways to construct a major scale: 5-limit in augmented temperament (red), pythagorean in augmented temperament (green), pythagorean in diminished temperament (pink)

Harmonic mode is the way Lumatone calls the 12edo Harmonic Table layout. It, and others like it, put harmonically related notes very close to each other. Pitch distance is not well represented in these layouts. There may not always be a clear playing direction, or they may be very jagged. The concept of an albitonic scale is often completely disregarded. Harmonic mode maps very nicely to the concept of harmonic bias.

Linearity, playing direction

The linearity of a layout refers to how edostepwise motion looks on a layout. This is a notable trait when talking about aurally biased layouts.

Linearity implies that the layout has a specific direction along which it is most natural to play. On a Lumatone, for example, to an extent you're locked to a horizontal playing style (if you need to access all of the keys that is). This direction is the same as the octave/equave vector on non-jagged layouts (see below). I call this the playing direction.

A rank-1 definition of linearity:

A layout is the most linear when the angle between the unison vector and playing direction is 90°. When this is the case, every ascending edostep is increasingly far away from a line parallel to the unison vector situated at the starting point.

Linearity can be given a numerical value based on the smaller angle (α) between the unison vector and playing direction. α/90° * 100% gives us a value from 0-100% describing the linearity of the layout.

A more general rank-2 definition: (verbose atm)

A layout is 100% perfectly linear when the interval vectors of the period and generator of the albitonic scale, when collapsed/projected onto the playing direction, have their lengths proportional to their pitch heights.

Cluster layout

Cluster layouts are highly linear. This term is based on the term "cluster MOS" which refers to MOSses that have a generator very close to a\b, where b is a small edo. Due to this fact the chroma is a very small interval. A cluster layout is any layout that has a cluster MOS as its basis (or as its albitonic scale). The chroma is often mapped to the vertical offset, which makes it easily accessible. The horizontal offset is then an approximation of 1\b. They resemble polychromatic layouts (isomorphic or non-isomorphic) like the ones of the Tonal Plexus or the MicroZone. I think they're the most viable way of approaching live playing in free pitch (or close to it).

Jaggedness, (rank-2 not supported, unison vector)

This trait mostly concerns aurally biased layouts. This layout property is heavily context dependent. For its evaluation you need to have an idea of what (relative) intervals you're going to be using to traverse up and down the layout.

A layout is not jagged when you can easily traverse it along the playing direction using your preferred intervals such that you only need to use one shape per interval without veering too far from the playing direction.

A layout is jagged when the aforementioned travel requires regular use of two shapes per interval (or the unison vector) to stay in the playing direction.

Jaggedness, legibility and ergonomics

Any jaggedness makes a layout immediately less legible, because of the added complexity of two shapes per interval. Though having many different options for paths to take when traversing the layout can make playing a lot more ergonomic, as seen with layouts like "slanted 27edo Bosanquet-Wilson" regularly used by stalefleas.

Eastern/Western layout

Kind of a niche term, as I've seen it used in one place. They're part of the layout names for two 53-tone JI presets on terpstrakeyboard. Western refers to how a Bosanquet-Wilson layout is normally presented, with the large step (oh axis) pointing slightly upwards. Eastern is the opposite, a vertical flip of the western one, with the large step (oh axis) pointing downwards. The terpstrakeyboard webapp also uses the terms male and female, but I prefer using the other terms.

Layout modifying operations

Layout modifying operations (temperament preserving)

Temperament preserving means that the operations do not change the available pitches or create new ones, but move the existing ones around.

Rotation (two types)

Keyboard rotation:

  • You physically rotate the keyboard. (This seems obvious but it is an important distinction)
  • Often very impractical, especially physical instruments and larger MIDI controllers. The Hexboard is one of the few MIDI controllers where keyboard rotation has been taken into account in the design. It can be rotated 90 degrees, so any layout can be rotated in 30 degree increments in conjunction with offset rotation.

Offset rotation:

  • This rotates the layout by a multiple of 90 or 60 degrees, and can be achieved by modifying the offsets in a specific way.
  • Square grid: (assuming scaleworkshop right → up ↑ convention)
    • 90° clockwise ↻: oh ⇒ ov and ov ⇒ -oh.
    • 90° counterclockwise ↺: oh ⇒ -ov and ov ⇒ oh.
    • 180°: oh ⇒ -oh and ov ⇒ -ov.
  • Hexagonal layout: (assuming Terpstran right → up-right ↗ convention)
    • 60° clockwise ↻: oh ⇒ ov and ov ⇒ ov - oh.
    • 60° counterclockwise ↺: oh ⇒ oh - ov and ov ⇒ oh.
    • 120° clockwise ↻: oh ⇒ ov - oh and ov ⇒ -oh.
    • 120° counterclockwise ↺: oh ⇒ -ov and ov ⇒ oh - ov.
    • 180°: oh ⇒ -oh and ov ⇒ -ov.

Reflection (no keyboard rotations)

Square grid:

  • There are four options for reflection, oh, ov, and the diagonals in between them: 'oh + ov' and 'oh - ov'.
  • On a square grid it's simple to reflect along the grid lines. To reflect the layout along the oh axis, ov ⇒ -ov and vice versa.
  • To reflect along the 'oh + ov' (or -oh - ov) axis, oh ⇒ ov and ov ⇒ oh.
  • To reflect along the 'oh - ov' (or -oh + ov) axis, oh ⇒ -ov and ov ⇒ -oh.

Hexagonal layout: (Terpstran convention)

  • There are six options for reflection, oh, ov, 'oh - ov', and the diagonals between them: 'oh + ov', '2*oh - ov' and '-oh + 2*ov'.
  • To reflect along the oh axis, ov ⇒ oh - ov.
  • To reflect along the ov axis, oh ⇒ ov - oh.
  • To reflect along the 'oh - ov' axis, oh ⇒ -ov and ov ⇒ -oh.
  • To reflect along the 'oh + ov' axis, oh ⇒ ov and ov ⇒ oh.
  • To reflect along the '2*oh - ov' axis, oh ⇒ oh - ov and ov ⇒ -ov.
  • To reflect along the '-oh + 2*ov' axis, oh ⇒ -oh and ov ⇒ -oh + ov.

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.'

Shearing [WIP] (temperament preserving subtype of skew)

Shearing needs an axis and a number of keys. The axis is any direction that can be expressed as x*oh + y*ov. The number of keys (nk) can be any integer.

Square grid:

temp: 12edo oh=1,ov=5, [gcd(x,y) and x*oh+y*ov mod 12]
4(4) 1(5) 2(6) 1(7) 4(8) 1(9) 2(10) 1(11) 4(0)
1(11) 3(0) 1(1) 1(2) 3(3) 1(4) 1(5) 3(6) 1(7)
2(6) 1(7) 2(8) 1(9) 2(10) 1(11) 2(0) 1(1) 2(2)
1(1) 1(2) 1(3) 1(4) 1(5) 1(6) 1(7) 1(8) 1(9)
4(8) 3(9) 2(10) 1(11) 0(0) 1(1) 2(2) 3(3) 4(4)
1(3) 1(4) 1(5) 1(6) 1(7) 1(8) 1(9) 1(10) 1(11)
6(10) 1(11) 2(0) 1(1) 2(2) 1(3) 2(4) 1(5) 2(6)
1(5) 3(6) 1(7) 1(8) 3(9) 1(10) 1(11) 3(0) 1(1)
4(0) 1(1) 2(2) 1(3) 4(4) 1(5) 2(6) 1(7) 4(8)

NOT ALL AXES WORK!!! (for some reason, I'm still figuring it out) 12edo oh=1,ov=5, x=-1, y=2 doesn't work (requires 24edo)

The cardinal directions and diagonals are guaranteed to work because the four keys next to the origin have 1 as the lead digit or gcd(x,y) going off infinitely along the diagonals and rows or columns. (explain why that is?)

  • x=-1, 0 or 1
  • y=-1, 0 or 1
  • oh ⇒ oh - nk*(x*oh + y*ov).
  • ov ⇒ ov + nk*(x*oh + y*ov).

Hexagonal layout: (I wouldn't trust these formulas yet!!!)

  • oh ⇒ oh - nk*(x*oh + y*ov). ????????
  • ov ⇒ ov + nk*(x*oh + y*ov).
Warp [WIP] (subtype of shearing, hexagon-exclusive) {come up with a better name for this}

The warp operation preserves the look of the layout while stretching or compressing it along an axis (the oh axis in this case).

A single warp is a single shear operation combined with a 30° keyboard rotation. apparently the rotation depends on the playing direction, more math that i just don't want to do right now

  • Stretch:
    • oh ⇒ oh - ov (ov ⇒ ov). Equivalent to shear, x=0, y=1, nk=1.
    • 30° clockwise ↻.
  • Compress:
    • oh ⇒ oh + ov (ov ⇒ ov). Equivalent to shear, x=0, y=1, nk=-1.
    • 30° counterclockwise ↺.

idk if this matters???: Keyboard rotation can be impractical, so there is also the double warp. It is two repeated single warps, but the same result can be derived with a different single shear operation and a 60° offset rotation.

Layout modifying operations (temperament changing)

These should only be used with ETs or rank-2s. These are very hard to use with rank-2s if there is a finite scale size constraint, and offsets can't be set to an arbitrary interval. In practice large ETs can be effectively used as an infinite rank-2 lattice, for example setting the tuning as 1200edo and setting the offsets to what are basically rounded cent values of the desired intervals.

Stretch (and scaling)

Let st be a stretch multiplier. Along a given axis, when st=2, the distances between the intervals along said axis will become twice (st=2) as long as before. The pitch distance between two neighboring keys on the axis will be halved (1/st=1/2).

When working with ETs, if any offsets are fractional, multiply the ET by st.

Square grid:

  • Along oh: oh ⇒ oh/st.
  • Along ov: ov ⇒ ov/st.
  • Along both (global scaling): oh ⇒ oh/st and ov ⇒ ov/st.

Hexagonal layout:

  • Along oh: oh ⇒ oh/st.
  • Along ov: ov ⇒ ov/st.
  • Along oh - ov: ov ⇒ oh - (oh-ov)/st.
  • Along all (global scaling): oh ⇒ oh/st and ov ⇒ ov/st.

Skew

(i'm struggling with this one)

Subpages

User:Romeolz/Isomorphic layouts/Harmonic Table extensions | readable and possibly useful! todo

User:Romeolz/Isomorphic layouts/Diatonic layouts (useless atm)