Z-polytopes and convex closures

In geometry, a convex set is a set of points such that for any two points in the set, the line segment connecting the points is also in the set. The convex hull of a set of points is the minimal convex set containing the given set, or in other words the intersection of all convex sets containing the set. A Z-polytope is a set of points with integer coordinates, such that every point with integer coordinates in its convex hull is already contained in the Z-polytope. A Z-polygon is a two-dimensional Z-polytope.

If a regular temperament of rank r+1 has no elements which are fractions of the octave, one of the generators can be taken as "2", and the octave-equivalent pitch classes form a free abelian group of rank r, which can be written as an r-tuple of integers [a1 a2 ... ar]. A periodic scale in this regular temperament is then a finite set of such r-tuples, and the minimal Z-polytope containing this set is the convex closure of the scale. If a just intonation tuning is chosen, one where every generator is tuned as a just interval belonging to the p-limit group or subgroup the temperament maps from, then a transversal is obtained; for any tuning of the temperament, the specific notes can be obtained by mapping from the notes of the transversal. Such a transversal may be called a Z-polytope transversal, and in case of a planar temperament, where the Z-polytope lies in a plane, a Z-polygon transversal.

Oblique transversals

Sometimes a normal sort of transversal using only two odd primes cannot be found for a given planar temperament, in which case the transversal will not work with Scala's lattice drawing command. In these cases an oblique transversal can be given; these have completely incorrect values considered as approximations, but with a correctly chosen val or tuning map, will give correct results for the temperament tuning. Since there is no reason not to, we use 2.3.5 5-limit vals for oblique vals, and give a corresponding valid val which will give correct N-edo tunings for the given oblique transversal. In Scala, under the pull-down menu for Modify, scroll down to Project, and check the Project the val option. Put the valid val into the box, apply it, and you transform the oblique transversal into the correct tuning. Oblique transversals are listed with an asterisk, like Roger Maris supposedly was.

Transversal listings

Below is a listing of some Z-polygon transverals and oblique transversals for various well-known scales. Reading these into Scala and using the indicated subgroup generators for the horizonal and vertical factors in the "Lattice and player" under the "Analyze" pull-down menu in Scala, lattice diagrams of the convex closure of the scales in various planar temperaments can be obtained. Tempering the transversal in whatever tuning you favor you can make use of these convex closures; in fact, for microtemperaments such as breedsmic or ragismic you can keep the just intonation tuning and consider it tempered. The Scala Temper command gives a number of options, and another tempering possibility is to use the edo with the optimal patent val. The list below therefore covers some of the same ground as Diaconv scales, but without giving an explicit tempering, something which is easily accomplished inside of Scala.

Septimal hexany

15/14 5/4 10/7 3/2 12/7 2

7-limit diamond [-1, 0]^3 chord cube

8/7 7/6 6/5 5/4 4/3 7/5 10/7 3/2 8/5 5/3 12/7 7/4 2

9-limit diamond

10/9 9/8 8/7 7/6 6/5 5/4 9/7 4/3 7/5 10/7 3/2 14/9 8/5 5/3 12/7 7/4 16/9 9/5 2

Dekatesserany ([0,1]^3 chord cube)

21/20 15/14 35/32 9/8 5/4 21/16 35/24 3/2 49/32 25/16 105/64 7/4 15/8 2