# Fokker blocks

(Redirected from Fokker block)
Jump to: navigation, search

The Fokker block is one of the most notable inventions of the physicist and music theorist Adriaan Fokker. While the idea generalizes easily to just intonation subgroups and tempered groups, for ease of exposition we will suppose that we are in a p-limit situation with n=pi(p) primes up to an including p.

# Preliminaries

Suppose we have n-1 commas, which we will assume are greater than 1, and we form an n by n matrix, the top row of which are n indeterminate elements |e2 e3 e5 ... ep>, and the other rows of which are the monzos corresponding to our chosen commas. If we take the determinant of this matrix, we get w2*e2+w3*e3+...+wp*ep where the w2, w3 ... wp are integers. We interpret this as the val v = <w2 w3 ... wp|. If this is a zero vector the commas are not independent, and if the there exists a common divisor we have what is known as a torsion problem, and we discard the comma set. Otherwise, if w2<0 we reverse sign, and we have a val V which tells us what equal temperament our Fokker block will be approximating. For example, starting with the commas 225/224, 100/99, 176/175 and 385/384, the above procedure gives us V = <22 35 51 62 76|, and we will be looking at a 22-note scale in the 11-limit. We may call the val V the epimorph val, and the n-1 commas, which form a basis for the kernel of V, the chroma basis.

Now choose a uniformizing step for the Fokker block, by which is meant a p-limit interval c such that V(c) = 1; that is, if m is the monzo for c, then <V|m>=1. Precisely which interval with this property we choose doesn't actually matter, so if our chromas are 225/224, 100/99, 176/175 and 385/384, we could for instance choose 22/21, 25/24, 28/27, 33/32, 36/35, 45/44 or 49/48. Having selected a step, form the n by n matrix whose last row is the monzo for the step c, and whose other rows are the monzos of the n-1 chromas. Because we have chosen c so that V(c)=1, the determinant of this matrix will be ±1. It is therefore a unimodular matrix, that is, a square matrix with coefficients which are integers and with determinant ±1. Such a matrix is invertible, and the inverse matrix is also unimodular. If we call c "cn", and label the chromas c1, c2, ... c_(n-1); and if we consider the columns of the inverse matrix to be vals and call them v1, v2, ... vn, then by the definition of the inverse of a matrix, vi(cj) = δ(i,j), where δ(i,j) is the Kronecker delta. Stated another way, vi(cj) is 0 unless i equals j, in which case vi(ci) = 1.

These unimodular matricies define a change of basis for the p-limit system of musical intervals: just as every p-limit interval can be written as a product of primes up to p with integer exponents, every such interval is a product of c1, c2, ... cn with integer exponents. To determine the exponents, we use v1, v2, ... vn, so that if q is a p-limit rational number, we may write it as

q = c1^v1(q) * c2^v2(q) ... cn^vn(q)

# Definitions

## First definition of a Fokker block

Let us set ei = vi(2), and also P = en = vn(2), and choose n non-negative integers a1, ...., an with 0 ≤ ak < P. Here the choice of an doesn't matter and we can take it to be 0. Let ti = log2(ci), so that e1*t1+e2*t2+...+en*tn=1. Now define a function on the integers by

S[i] = floor((e1*i + a1)/P)*t1 + ... + floor((en*i + an)/P)*tn

Here floor(x) is the floor function, the quasiperiodic function returning the largest integer less than or equal to x. When i=0, since ak < P each term is 0 and so S = 0. Since for integer j, floor(x+j) = floor(x) + j, we have

S[i + P] = S[i] + e1*t1 + e2*t2 + ... + en*tn = S[i] + 1

Hence S satisfies the conditions for being a periodic scale, and since our unit of measurement is the octave, ie we are using log base two to define intervals, the repetition interval 1 represents an octave. This gives us our first definition of Fokker block.

By choosing various ak satisfying 0 ≤ ak < P, for any Fokker block we may find the various rotations, of the block. However, other choices lead to blocks which are not rotations of our initial block, but instead belong to domes which are disjoint from the dome of the initial block. The collection of all Fokker blocks for any of the allowed values of the ak offsets is an arena; a Fokker arena is defined entirely by its chromas.

## Second definition of a Fokker block

Let us define a new set of vals by uk = P*vk - vk(2)*vn. To apply these vals to S[i], note first that floor((en*i+an)/P) = floor(i+an/P) = i, so that vn(S[i]) = i. Hence un(S[i]) = P*vn - vn(2)*vn = 0, while for k<n, uk(S[i]) = P*vk(S[i]) - vk(2)*i. Since x-1 < floor(x) ≤ x, we have (ek*i + ak)/P-1 < floor((ek*i + ak)/P) ≤ (ek*i + ak)/P, so that ek*i + ak - P < P*vk(S[i]) ≤ ek*i + ak. Since ek = vk(2), this gives us ak - P < uk(S[i]) ≤ ak. This means that for each of the vals uk, the scale is mapped to a set of P integers.

The val uk is a linear combination of vk and vn, which are both vals of the rank two temperament defined by the set of chromas minus {ck}. Since uk(2)=0, uk is a multiple of the generator step val of a normal val list, or map, for this rank two temperament; in fact it is ±mGk, where Gk is the generator step val and m is the number of periods to the octave. If we take the wedge product vn∧Gk and reduce it to a wedgie Wk, then the interior products Wk∨S[i] for i from 1 to P are P distinct vals wi, each of which have wi(2) in a range of P successive values. The Wk are a basis for the Fokker group of the epimorph V. It follows that the abstract periodic scale Wk∨S represents a MOS of the temperament defined by Wk. The Fokker block can be tempered in n-1 distinct rank two temperament ways to n-1 distinct MOS, and this provides another definition of a Fokker block: a periodic JI scale is Fokker if and only if from the rank n JI group it generates it can be tempered in n-1 ways to n-1 distinct MOS. The arena of the Fokker block is defined equally well by the n-1 wedgies defining the n-1 distinct temperings as by the n-1 chromas introduced previously; these are dual points of view: if we take all but one of the n-1 chromas, they define one of the wedgies, and if we take all but one of the wedgies, they define a chroma. The Fokker group basis is the dual basis of the chroma basis, and conversely.

## Third definition of a Fokker block

The n-1 vals u1, u2, ..., u_(n-1) defined in the previous section gave us n-1 inequalities ak - P < uk(q) ≤ ak, which apply to any q in the Fokker block. If we restrict q to 1 ≤ q < 2, and regard it as representing a pitch class, then it is associated to a lattice point in an n-1 dimensional vector space, and in that space the n-1 inequalities define the boundaries of a parallelepiped. The Fokker blocks can be defined as the pitch classes lying within such a parallelepiped. By moving the parallelepipeds around in all ways which retain the same orientation and have the unison inside them, we obtain an arena.

## Fourth definition of a Fokker block

The n-1 abstract MOS scales discussed with the second definition of Fokker blocks can be put into some chosen order, and the product word taken. This entails that every Fokker block leads to a product word, and the process can be reversed, so that product words of n-1 abstract MOS scales lead to Fokker blocks. Given the n-1 vals obtained by taking the interior product with some interval q, q can be recovered either by wedging the vals together and taking the dual, or by taking the determinant of the nxn matrix of vals whose first row consists of indeterminates, as in the Preliminaries section.

# Determining if a scale is a Fokker block

The second definition of Fokker block can be used to determine if a given periodic JI scale is a Fokker block. The first step is to find if it is epimorphic; this can be done by starting with a val V with indeterminate coefficients, and finding if the linear equations V(S[i]) = i have a solution. Scala does this as a part of its "Show data" suite of scale analytics. Now we take note of the fact that if r is the rank of the group generated by the scale (which is therefore the minimal JI system it is defined in) the Fokker group of bivals associated to V is a free abelian group of rank r-1. We will assume we are working in a full p-limit group, but nothing essential is changed in Fokker block theory in the case of subgroups. The free group, defined by addition of bivals, has a basis consisting of ±Wk for some set of wedgies, and we may assume the sign is positive and the basis is a basis of wedgies. Using this basis, we may either find a basis of r-1 wedgies each of which gives a Graham complexity to the scale reduced to the octave; that is, to S = {S[i]| 0 ≤ i < P} which is less than P, in which case the scale is a Fokker block, or determine no such basis exists, in which case it is not Fokker.

Graham complexity for S with respect to a wedgie W defines a complexity measure for the wedgies which makes the wedgies which determine if the scale S is a Fokker block precisely those of lowest complexity. However, for some purposes a quadratically (L2) defined complexity measure with similar properties is of use. We can define such a complexity measure for wedgies W by setting T[i] = (W∨S[i])(2), and then taking the sum ∑(T[i] - μ)^2 for i from 0 to P-1, where μ is the mean (∑T[i])/P. This can be analyzed in terms of the associated positive definite bilinear form on the linear combinations of basis elements giving W, and it is clear that past a certain range which can be determined the quadratic complexity measure will continue to increase, and that if needed one can in this way prove that a block is not Fokker. Like Graham complexity, this gives a slightly lower value to a MOS with more than one period to the octave. WE can make them exactly the same by modifying things slightly so that T[i] is (W∨S[i])(2) in the first period of the octave, (W∨S[i])(2) + 1 for the second period, and so forth. This makes all MOS to result in P contiguous values, so that the resulting quadratic form returns P(P^2-1)/12 in all cases when the wedgie results in a MOS of P notes per octave, and more otherwise.

# Expanding the definition

A Fokker block as we have so far defined it is an epimorphic periodic scale S with period P repeating at the octave, with values in p-limit rational intonation, such that there exist pi(p)-1 = n-1 different rank-two wedgies {Wk} such that S has Graham complexity less than P for each Wk. If we unpack that definition we can extend it in several distinct ways.

Explicitly, S is a quasiperiodic function from the integers to the p-limit rational numbers, such that S = 1 and S[i + P] = 2S[i], for which there is a val V such that V(S[i]) = i. This entails that V(S[P]) = V(2) = P, so that V = <P ... |, with P a positive integer; in other words, V is a P-edo val. For each of the n-1 wedgies Wk, we can form an abstract temperament periodic scale, meaning a periodic scale taking values in an abstract regular temperament, by Tk[i] = Wk∨S[i]. The values Tk[i] are p-limit vals, and since Tk[P] = Wk∨S[i] = Wk∨2, Tk[P](2) = 0, and so Tk[i + P](2) = (Tk[i] + Tk[P])(2) = Tk[i](2). Hence Tk[i](2) takes on P or fewer values, with a ≤ Tk[i](2) ≤ b. The Graham complexity G(Wk) of S with respect to Wk is b-a, and if S is a Fokker block, for each Wk, G(Wk) < P.

One way to generalize this is to allow the group of the scale to be something other than the full p-limit group, adjusting the basis for vals, monzos and wedgies to correspond with a basis for this subgroup. We may also replace the interval of equivalence 2 with any rational number E which is not a power, so that S[i + P] = E S[i] and replacing Tk[i](2) with Tk[i](E).

Still another generalization is to consider regular temperament Fokker blocks. These are abstract temperament periodic scales S[i] with values in an abstract regular temperament belonging to some r-wedgie Y. It can be determined if these scales are Fokker by a variant of the method used for JI Fokker blocks. First, a transversal for the abstract scale is obtained by truncating the p-limit multivals to the the q-limit which makes them codimension one, and then taking the dual of each multival to obtain a monzo; the monzos then defining a scale in the ordinary way. If the transversal is a Fokker block, the original abstract scale is an abstract Fokker block. This procedure is illustrated below.

# Examples

## Using a Fokker group basis

Consider the periodic scale S[i] with quasiperiod P = 22 whose values for i from 0 to 22 are 1, 33/32, 16/15, 11/10, 9/8, 75/64, 6/5, 5/4, 165/128, 33/25, 11/8, 45/32, 35/24, 3/2, 99/64, 8/5, 33/20, 12/7, 7/4, 231/128, 15/8, 77/40, 2. By solving for the val, or simply testing to see if the patent val works, we quickly find that V = <22 35 51 62 76| sorts the scale in ascending order. A basis for the commas of this val is {50/49, 55/54, 64/63, 99/98}, and by taking three element subsets we find a basis for the wedgies to be {<<1 9 -2 -6 12 -6 -13 -30 -45 -10||, <<2 -4 -4 -12 -11 -12 -26 2 -14 -20||, <<6 10 10 8 2 -1 -8 -5 -16 -12||, <<2 -4 -4 10 -11 -12 9 2 37 42||}, which is to say, {suprapyth, pajara, hedgehog, pajarous}. Taking Z-linear (integer coefficient) combinations, we quickly find that there are four and only four wedgies which give a Graham complexity for the scale less than 22, which are pajara, magic = pajara+hedgehog-suprapyth-pajarous, orwell = pajara+hedgehog-suprapyth, and porcupine = suprapyth+pajarous; hence, S is a Fokker block, in the pajara-magic-orwell-porcupine arena.

If Q(a,b,c,d) is the ∑(T[i] - μ)^2 quadratic form on a*suprapyth+b*pajara+c*hedgehog+d*pajarous, then explicitly we have Q = 2205.5*a^2 + 880*b^2 + 2904*c^2 + 1254*d^2 + 264*a*b + 2992*a*c - 2574*a*d - 1848*b*c - 440*b*d - 880*c*d. From this we can find Q(pajara) = 880, Q(magic) = 885.5, Q(orwell) = 885.5, and Q(porcupine) = 885.5, with the Graham complexity of S being 21 in magic, orwell and porcupine, and 20 in pajara. If we look at the extrema of a, b, c, and d separately after setting Q = 900, we find they are all less than 2 in absolute value, so we need look no farther than the 27 Z-linear combinations of suprapyth, pajara, hedgehog and pajarous with coefficients less than 2 in absolute value. Had the block not been Fokker, we could have used the analysis of extrema to show it was not.

## Generator range and the first definition of a Fokker block

From the values for T[i] for each of the four temperaments, we find that the generator range for pajara is -7 to 3, since we obtain the even numbers from -14 to 6. The others are magic from -9 to 12, orwell from -4 to 17 and porcupine from -8 to 13.

We can pass from a Fokker group basis to a chroma basis in various ways. One way begins by finding the Frobenius projection map P_k corresponding to each temperament wedgie W_k, and from that the dual projection map Q_k. Q_k has the property that each chroma except c_k is an eigenvector with eigenvalue 1. Hence, the matrix product of the Q_i with i≠k has a single eigenvalue of 1, corresponding to c_k, which allows us to find c_k. From the Fokker group basis [pajara, magic, orwell, porccupine] we may find in this way the dual chroma basis [385/384, 176/175, 100/99, 225/224]. Taking the monzo matrix for 385/384, 175/176, 100/99, 225/224 and 36/35, inverting and transposing, we obtain <12 19 28 34 42|, -<3 5 7 9 10|, <9 14 21 25 31|, -<7 11 16 20 24|], [<22 35 51 62 76|, . From this and the previously obtained generator ranges, we find that

S[i] = (36/35)^i * (385/384)^floor((12*i+14)/22) * (175/176)^floor((-3*i+9)/22) * (100/99)^floor((9*i+4)/22) * (224/225)^floor((-7*i+13)/22)

is the periodic scale with which we began this analysis.

## Product words and the fourth definition of a Fokker block

Starting from our example 22 note per octave scale, we can produce a list of 22 steps: steps[i] = 33/32, 512/495, 33/32, 45/44, 25/24, 128/125, 25/24, 33/32, 128/125, 25/24, 45/44, 28/27, 36/35, 33/32, 512/495, 33/32, 80/77, 49/48, 33/32, 80/77, 77/75, 80/77. We can apply the four wedgies for pajara, magic, orwell and porcupine to these steps to obtain four abstract temperament MOS, each of which has two kinds of steps, expressed as vals. If a = -<10 16 23 28 34| and b = <12 19 28 34 42|, then pajara applied to the steps gives abababaabababababaabab. If c = -<3 5 7 9 10| and d = <19 30 44 53 66|, then magic gives cccdccccccdccccccdcccc. If e = <9 14 21 25 31| and f = -<13 21 30 37 45|, then orwell gives efeefefeefefeefefeefef. Finally, if g = <7 11 16 20 24| and h = -<15 24 35 42 52|, then porcupine gives ghggghgghgghgghgghgghg. By taking product words, we get not only the Fokker block itself, but also the various temperings in the associated temperaments. Here "product" means product in a quite literal sense, since these can be construed as wedge product words.

As noted above, pajara, magic, orwell and porcupine correspond to the commas 385/384, 176/175, 100/99 and 225/224. If we take for example 385/384 and 176/175, we get zeus temperament. Wedging the monzos for these two commas and taking dual we obtain the wedgie for zeus, which is <<<2 -3 1 -1 -1 2 11 3 -10 4|||. Taking the interior product of this with the steps of our scale gives wxwwyzywzywxwwxwyzwyzy, where w = <<1 -3 5 -1 -7 5 -5 20 8 -20||, x = <<-3 5 -9 1 15 -6 12 -35 -15 34||, y = <<4 2 -1 3 -6 -13 -9 -8 0 12||, and z = <<-6 0 -3 -3 14 12 16 -7 -7 2||. If we set Orw[i] = orwell∨steps[i] and Por[i] = porcupine∨steps[i], then Zeus[i] = Orw[i]∧Por[i], which exhibits the scale tempered in zeus as a product word of the orwell MOS with the porcupine MOS. This procedure is easily turned into a formal proof which generalizes a result of Marek Zabka.

## The tempered scales of a Fokker block

A Fokker block is not just a scale, but a little scale universe of tempered versions of that scale which identify various steps of the scale, as depicted below.

One has first the original JI scale. Then there are codimension one temperings of the scale, in each of the commas associated to the Fokker block; in our example these are 225/224, 100/99, 176/175, and 385/384. The next level gives apollo, minerva, marvel, ares, supermagic, and zeus. Next come pajara, magic, orwell and porcupine, with the range of generators already given, and then finally 22 equal. Exploring the changes wrought by the various scales in such a Fokker universe, not to mention all of the modes and domes, would certainly give the interested composer plenty to work with.

## Example of an abstract Fokker block

Let S be the abstract scale defined by, for scale steps from 1 to 22:

[<<<1 -2 0 1 1 -2 9 5 -10 -4|||, <<<0 1 1 -1 -1 2 -4 -4 4 4|||, <<<1 -1 1 0 0 0 5 1 -6 0|||,

<<<0 0 0 2 2 -4 3 3 -6 -8|||, <<<0 -2 -2 1 1 -2 6 6 -4 -4|||, <<<0 1 1 1 1 -2 -1 -1 -2 -4|||,

<<<0 -1 -1 0 0 0 2 2 0 0|||, <<<1 -3 -1 1 1 -2 11 7 -10 -4|||, <<<1 0 2 1 1 -2 4 0 -8 -4|||,

<<<1 -2 0 0 0 0 7 3 -6 0|||, <<<0 -1 -1 2 2 -4 5 5 -6 -8|||, <<<1 -1 1 -1 -1 2 3 -1 -2 4|||,

<<<0 0 0 1 1 -2 1 1 -2 -4|||, <<<1 -2 0 2 2 -4 10 6 -12 -8|||, <<<0 1 1 0 0 0 -3 -3 2 0|||,

<<<1 -1 1 1 1 -2 6 2 -8 -4|||, <<<-1 0 -2 1 1 -2 -2 2 4 -4|||, <<<1 0 2 0 0 0 2 -2 -4 0|||,

<<<2 -2 2 1 1 -2 11 3 -14 -4|||, <<<0 -1 -1 1 1 -2 3 3 -2 -4|||, <<<2 -1 3 0 0 0 7 -1 -10 0|||,

<<<0 0 0 0 0 0 -1 -1 2 0|||]

This represents an abstract scale defined in terms of 11-limit trivals derived from taking interior products of an unknown scale with an unknown 11-limit rank four temperament. Working with it directly is more difficult than dealing with the transversal we may obtain by truncation. If we truncate each scale step to the 7-limit, we obtain a list of 7-limit trivals. Each of these is dual to a monzo, which we may express in terms of a 7-limit rational number, leading to the following scale, from 1 to 22: 525/512, 16/15, 35/32, 9/8, 75/64, 6/5, 5/4, 2625/2048, 21/16, 175/128, 45/32, 35/24, 3/2, 1575/1024, 8/5, 105/64, 12/7, 7/4, 3675/2048, 15/8, 245/128, 2. This we may now test for Fokker properties in the usual way.

The first order of business is to determine if the scale is epimorphic, which it is, with 22 patent val <22 35 51 62|. Using a basis for the Fokker group, for instance the one listed here, pajara-magic-porcupine, we find that pajara, porcupine and orwell all temper it to a MOS, so that the scale is a Fokker block. This is enough to prove the original scale is an abstract Fokker block; however, we might want a result in terms of the original 11-limit problem. By solving for the condition that the interior product with each scale step is zero, we find that 176/175 is the unique comma tempered out by the rank-four temperament which tempered to the abstract scale. Adding 176/175 to the commas of pajara, porcupine and orwell leads to the 11-limit versions of each of these. Taking the interior product of the dual scale of bimonzos with each of these 11-limit wedgies leads to the conclusion that each of these temper the abstract scale to a MOS.

# Scale properties of Fokker blocks

By definition, a Fokker block is weakly epimorphic, which implies it is constant structure. Since the pitch classes are all of those contained in some parallelepiped, it is convex. A rank r Fokker block, meaning one which generates a group of rank r, has r-1 abstract MOS scales which can take at most two values for any interval class, by Myhill's property. Since the scale itself can be reconstituted from the r-1 abstract MOS, that means each interval class in the scale has at most 2^(r-1) possible values; in other words, it has maximum variety less than or equal to 2^(r-1).

The reconstitution can be obtained as follows: for every note of S[i] except S, S[i] will be either the rational number obtained by finding the monzo of the wedge products of the r-1 abstract MOS vals for i, taking the dual, and dividing by i^(r-1), or else the inverse of this number. Hence we may choose an ordering of the correct parity, and find the value associated to S[i] by (v1∧v2∧...∧v_(r-1))º/i^(r-1).

# The Fokblock function and modal UDP notation

Using the first definition of Fokker block, since the epimorph V may be calculated from the chroma basis, the choice of uniformizer does not affect the resulting block, and the corresponding an plays no role and may be taken as 0, the block is entirely determined by the chroma basis, C = [c1, c2, ..., c_(n-1)] together with the offet values A = [a1, a2, ..., a_(n-1)]. Hence we may define a function Fokblock(C, A) from n-1 element listings of the chroma basis and corresponding offset values to a Fokker block within the arena defined by C. If the list of wedgies [w1, w2, ..., w_(n-1)] is the dual Fokker group basis to the chroma basis C, then the period Pi of wi may as usual be found by taking the GCD of the first n-1 elements of wi. If S = Fokblock(C, A) is a Fokker block, the smallest value of ai giving S is always divisble by Pi, and fixing the other elements of A there are Pi successive values for ai which all give S. In terms of modal UDP notation, the value of U for the MOS resulting from tempering S by Wi is ai/Pk, where ai is the smallest value giving S, and the value for D is V(2)/Pk - U - 1. Hence, the UDP notation for the MOS is U|D(Pk), with these values.

Returning to our pajmagorpor22 example, we have that pajmagorpor22 = Fokblock([385/384, 176/175, 100/99, 225/224], [14, 9, 4, 13]). It is also equal to Fokblock([385/384, 176/175, 100/99, 225/224], [15, 9, 4, 13]), reflecting the fact that pajara has a period of half on octave, ie that P1 = 2. Hence the pajara MOS mode is 7|3(2) in UDP notation. Finding the others by the fact that for them Pk=1 and ak=U, we have that the block, in product word form, is (pajara 7|3(2))*(magic 9|12)*(orwell 4|17)*(porcupine 13|8). We can easily reverse this process, finding the chroma basis from the Fokker group basis, and the offset ai from the corresponding U and Pi as Pi*U, and so display S in terms of Fokblock.

In terms of the rational intonation of the blocks of a Fokker arena, this definition of "chroma positive" is the correct one if we want increasing "up" values U to correspond with increasingly sharp intervals. However, in borderline cases it need not correspond to the U and D found by considering the MOS deriving by tempering by an element of the Fokker group basis taken separately. For example, consider the superwakalix collapar, a 12-note 11-limit scale which tempers to a MOS in six different ways--pajaric, injera, august, diminished, demolished, and hemidim. The scale belongs to eight different arenas, in five of which pajaric is one of the Fokker group basis wedgies. In four of these, the chroma corresponding to pajaric goes in the up direction; however for Fokblock([245/242, 126/121, 50/49, 45/44], [8, 2, 3, 8]) the chroma dual to pajaric, which is 245/242, is in the down direction considered as a MOS, since pajaric∨245/242 = -V, where V is the epimorph, wheras 3, which can be taken as the generator, is in the up direction since pajaric∨3 = <2 0 11 12 7|. Note that pajara∨245/242 = V, so it is up in pajara.

If we want to compute Fokker blocks in subgroups resulting from excluding one or more odd primes, we can do so by adding the primes to the list of chromas. For instance nofives is Fokblock([64/63, 729/686, 5], [3, 4, 0]).

# Further reading

Unison Vectors and Periodicity Blocks by A.D. Fokker

A gentle introduction to Fokker periodicity blocks, by Paul Erlich