Tetrachordal scales
A tetrachord is four notes spanning a fourth. For example, Archytas' diatonic tetrachord is
1/1, 28/27, 32/27, 4/3
with steps
28/27, 8/7, 9/8
A tetrachordal scale, in its simplest form, is two tetrachords separated by a 9/8 whole tone. For example, combining a lower tetrachord with steps
9/8, 28/27, 8/7
with an upper tetrachord with steps
28/27, 9/8, 8/7
both being permutations of Archytas' diatonic tetrachord, gives the steps
9/8, 28/27, 8/7, 9/8, 28/27, 9/8, 8/7 |----lower----| |----upper----|
and so the scale
1/1, 9/8, 7/6, 4/3, 3/2, 14/9, 7/4, 2/1
Further reading
- John Chalmers, Divisions of the Tetrachord, Frog Peak Music (1993)
- MaqamWorld — Jins
Python code
import math
from fractions import Fraction
F = Fraction
def tetrachordal(t1, t2, *, disjunct=True):
"""
>>> t1 = (Fraction(9, 8), Fraction(28, 27), Fraction(8, 7))
>>> t2 = (Fraction(28, 27), Fraction(9, 8), Fraction(8, 7))
>>> tetrachordal(t1, t2)
[Fraction(1, 1), Fraction(9, 8), Fraction(7, 6), Fraction(4, 3), Fraction(3, 2), Fraction(14, 9), Fraction(7, 4), Fraction(2, 1)]
>>> tetrachordal(t1, t2, disjunct=False)
[Fraction(1, 1), Fraction(9, 8), Fraction(7, 6), Fraction(4, 3), Fraction(112, 81), Fraction(14, 9), Fraction(16, 9)]
"""
for t in (t1, t2):
assert len(t) == 3
assert math.prod(t) == Fraction(4, 3)
if disjunct:
steps = [*t1, Fraction(9, 8), *t2]
else:
steps = [*t1, *t2]
result = [Fraction(1, 1)]
for step in steps:
result.append(result[-1] * step)
assert result[0] == Fraction(1, 1)
assert result[-1] == (Fraction(2, 1) if disjunct else Fraction(16, 9))
return result
Scales
| File | Call |
|---|---|
| msdiat7 | tetrachordal((F(44, 39), F(273, 242), F(22, 21)), (F(44, 39), F(273, 242), F(22, 21))) |
| xen11-chalmers-tetrachordal-04-01 | tetrachordal((F(28, 27), F(8, 7), F(9, 8)), (F(28, 27), F(8, 7), F(9, 8))) |
| xen11-chalmers-tetrachordal-04-02a | tetrachordal((F(28, 27), F(15, 14), F(6, 5)), (F(28, 27), F(8, 7), F(9, 8))) |
| xen11-chalmers-tetrachordal-04-02b | tetrachordal((F(22, 21), F(12, 11), F(7, 6)), (F(28, 27), F(8, 7), F(9, 8))) |
| xen11-chalmers-tetrachordal-04-03 | tetrachordal((F(21, 20), F(10, 9), F(8, 7)), (F(28, 27), F(8, 7), F(9, 8))) |
| xen11-chalmers-tetrachordal-04-04 | tetrachordal((F(28, 27), F(8, 7), F(9, 8)), (F(9, 8), F(256, 243), F(9, 8))) |
| xen11-chalmers-tetrachordal-04-05 | tetrachordal((F(28, 27), F(8, 7), F(9, 8)), (F(16, 15), F(9, 8), F(10, 9))) |
| xen11-chalmers-tetrachordal-06-04 | tetrachordal((F(28, 27), F(36, 35), F(5, 4)), (F(28, 27), F(36, 35), F(5, 4))) |
| xen11-chalmers-tetrachordal-08-04 | tetrachordal((F(28, 27), F(36, 35), F(5, 4)), (F(5, 4), F(36, 35), F(28, 27))) |