Triadic diamonds

Given a triad 1/1, M, D, a triadic diamond is the seven notes

1/1, M, D, 2/M, 2/D, D/M, M/D

octave reduced and sorted. For example, for M = 5/4, D = 3/2, we get

1/1, 5/4, 3/2, 8/5, 4/3, 6/5, 5/3

giving the sorted scale

1/1, 6/5, 5/4, 4/3, 3/2, 8/5, 5/3

On a lattice where a factor of M moves one step up, a factor of D one step to the right, the triadic diamond appears as

M/D       M

2/D       1/1       D

          2/M       D/M

A triadic diamond is the diamond construction applied to the triad 1, M, D.

Triadic reversed diamonds

A triadic reversed diamond is the seven notes

1/1, M, D, 2/M, 2/D, D*M, 2/(D*M)

octave reduced and sorted. On the lattice these notes are

          M         D*M

2/D       1/1       D

2/(D*M)   2/M

For M = 5/4, D = 3/2 this gives the notes

1/1, 5/4, 3/2, 8/5, 4/3, 15/8, 16/15

and sorting gives the scale

1/1, 16/15, 5/4, 4/3, 3/2, 8/5, 15/8

Further reading

Python code
from fractions import Fraction
from math import floor, log2


def reduce(x):
    return x * Fraction(2) ** (-floor(log2(x)))


def triadic_diamond(M, D):
    """
    >>> triadic_diamond(Fraction(5, 4), Fraction(3, 2))
    [Fraction(1, 1), Fraction(6, 5), Fraction(5, 4), Fraction(4, 3), Fraction(3, 2), Fraction(8, 5), Fraction(5, 3)]
    """
    notes = [1, M, D, 2 / M, 2 / D, D / M, M / D]
    return sorted(reduce(x) for x in notes)


def triadic_reversed_diamond(M, D):
    """
    >>> triadic_reversed_diamond(Fraction(5, 4), Fraction(3, 2))
    [Fraction(1, 1), Fraction(16, 15), Fraction(5, 4), Fraction(4, 3), Fraction(3, 2), Fraction(8, 5), Fraction(15, 8)]
    """
    notes = [1, M, D, 2 / M, 2 / D, D * M, 2 / (D * M)]
    return sorted(reduce(x) for x in notes)

Scales

FileCall
xen15-chalmers-triadic-diamond-11-9 triadic_diamond(Fraction(11, 9), Fraction(3, 2))
xen15-chalmers-triadic-diamond-13-11 triadic_diamond(Fraction(13, 11), Fraction(3, 2))
xen15-chalmers-triadic-diamond-14-11 triadic_diamond(Fraction(14, 11), Fraction(3, 2))
xen15-chalmers-triadic-diamond-15-13 triadic_diamond(Fraction(15, 13), Fraction(3, 2))
xen15-chalmers-triadic-diamond-16-13 triadic_diamond(Fraction(16, 13), Fraction(3, 2))
xen15-chalmers-triadic-diamond-17-13 triadic_diamond(Fraction(17, 13), Fraction(3, 2))
xen15-chalmers-triadic-diamond-17-14 triadic_diamond(Fraction(17, 14), Fraction(3, 2))
xen15-chalmers-triadic-diamond-19-16 triadic_diamond(Fraction(19, 16), Fraction(3, 2))
xen15-chalmers-triadic-diamond-22-17 triadic_diamond(Fraction(22, 17), Fraction(3, 2))
xen15-chalmers-triadic-diamond-23-18 triadic_diamond(Fraction(23, 18), Fraction(3, 2))
xen15-chalmers-triadic-diamond-23-19 triadic_diamond(Fraction(23, 19), Fraction(3, 2))
xen15-chalmers-triadic-diamond-23-20 triadic_diamond(Fraction(23, 20), Fraction(3, 2))
xen15-chalmers-triadic-diamond-26-21 triadic_diamond(Fraction(26, 21), Fraction(3, 2))
xen15-chalmers-triadic-diamond-32-25 triadic_diamond(Fraction(32, 25), Fraction(3, 2))
xen15-chalmers-triadic-diamond-34-27 triadic_diamond(Fraction(34, 27), Fraction(3, 2))
xen15-chalmers-triadic-diamond-35-27 triadic_diamond(Fraction(35, 27), Fraction(3, 2))
xen15-chalmers-triadic-diamond-40-33 triadic_diamond(Fraction(40, 33), Fraction(3, 2))
xen15-chalmers-triadic-diamond-5-4 triadic_diamond(Fraction(5, 4), Fraction(3, 2))
xen15-chalmers-triadic-diamond-56-45 triadic_diamond(Fraction(56, 45), Fraction(3, 2))
xen15-chalmers-triadic-diamond-64-51 triadic_diamond(Fraction(64, 51), Fraction(3, 2))
xen15-chalmers-triadic-diamond-7-6 triadic_diamond(Fraction(7, 6), Fraction(3, 2))
xen15-chalmers-triadic-diamond-8-7 triadic_diamond(Fraction(8, 7), Fraction(3, 2))
xen15-chalmers-triadic-diamond-81-64 triadic_diamond(Fraction(81, 64), Fraction(3, 2))
xen15-chalmers-triadic-diamond-8192-6561 triadic_diamond(Fraction(8192, 6561), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-11-9 triadic_reversed_diamond(Fraction(11, 9), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-13-10 triadic_reversed_diamond(Fraction(13, 10), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-13-11 triadic_reversed_diamond(Fraction(13, 11), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-14-11 triadic_reversed_diamond(Fraction(14, 11), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-15-13 triadic_reversed_diamond(Fraction(15, 13), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-16-13 triadic_reversed_diamond(Fraction(16, 13), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-17-13 triadic_reversed_diamond(Fraction(17, 13), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-17-14 triadic_reversed_diamond(Fraction(17, 14), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-19-16 triadic_reversed_diamond(Fraction(19, 16), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-21-16 triadic_reversed_diamond(Fraction(21, 16), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-21-17 triadic_reversed_diamond(Fraction(21, 17), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-22-17 triadic_reversed_diamond(Fraction(22, 17), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-23-18 triadic_reversed_diamond(Fraction(23, 18), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-23-19 triadic_reversed_diamond(Fraction(23, 19), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-23-20 triadic_reversed_diamond(Fraction(23, 20), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-24-19 triadic_reversed_diamond(Fraction(24, 19), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-26-21 triadic_reversed_diamond(Fraction(26, 21), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-27-22 triadic_reversed_diamond(Fraction(27, 22), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-27-23 triadic_reversed_diamond(Fraction(27, 23), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-30-23 triadic_reversed_diamond(Fraction(30, 23), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-32-25 triadic_reversed_diamond(Fraction(32, 25), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-32-27 triadic_reversed_diamond(Fraction(32, 27), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-33-26 triadic_reversed_diamond(Fraction(33, 26), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-33-28 triadic_reversed_diamond(Fraction(33, 28), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-34-27 triadic_reversed_diamond(Fraction(34, 27), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-35-27 triadic_reversed_diamond(Fraction(35, 27), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-39-32 triadic_reversed_diamond(Fraction(39, 32), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-39-34 triadic_reversed_diamond(Fraction(39, 34), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-40-33 triadic_reversed_diamond(Fraction(40, 33), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-5-4 triadic_reversed_diamond(Fraction(5, 4), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-56-45 triadic_reversed_diamond(Fraction(56, 45), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-57-46 triadic_reversed_diamond(Fraction(57, 46), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-6-5 triadic_reversed_diamond(Fraction(6, 5), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-64-51 triadic_reversed_diamond(Fraction(64, 51), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-7-6 triadic_reversed_diamond(Fraction(7, 6), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-81-64 triadic_reversed_diamond(Fraction(81, 64), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-8192-6561 triadic_reversed_diamond(Fraction(8192, 6561), Fraction(3, 2))
xen15-chalmers-triadic-reversed-diamond-9-7 triadic_reversed_diamond(Fraction(9, 7), Fraction(3, 2))