back to list

Notating regular temperament commas

🔗Herman Miller <hmiller@IO.COM>

3/18/2007 7:17:35 PM

So far the approach I've been taking for notating (chromatic) commas in a regular temperament is to check the existing Sagittal symbols in the appropriate range that map to the appropriate number of generators, and pick the simplest possibility that fits (without accents if possible). That seems to work pretty well for most temperaments. But what would the ideal notation for a particular temperament look like, if you could have symbols for any comma you need?

One approach would be to take the set of all commas that map to the desired generator and pick the simplest one, by some measure of complexity. This is pretty easy to do in the 5- and 7-limit cases, by first finding any comma that works, then adding and subtracting the vanishing commas until all of the commas you find are more complex. I think that general approach might work for higher limits, but how can you be sure that you've found the best one? Is there a better way to do this?

It's true that the simplest comma might not be the one that's closest to the tempered comma size for any optimal tuning, but it's more likely to be close enough to the right size over a range of possible tunings, and also more likely to be needed for other temperaments. There might be some other comma that would be the second-choice comma for a wider range of temperaments, but not a first choice for any of them. But finding the simplest comma itself is enough of a challenge for now.

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

3/18/2007 10:45:49 PM

--- In tuning-math@yahoogroups.com, Herman Miller <hmiller@...> wrote:

> One approach would be to take the set of all commas that map to the
> desired generator and pick the simplest one, by some measure of
> complexity.

I take it you mean all commas that map to n generator steps. But how do
you pick you n?

🔗Dave Keenan <d.keenan@bigpond.net.au>

3/19/2007 6:23:54 PM

--- In tuning-math@yahoogroups.com, Herman Miller <hmiller@...> wrote:
>
> So far the approach I've been taking for notating (chromatic) commas in
> a regular temperament is to check the existing Sagittal symbols in the
> appropriate range that map to the appropriate number of generators, and
> pick the simplest possibility that fits (without accents if possible).

An excellent approach.

> That seems to work pretty well for most temperaments. But what would
the
> ideal notation for a particular temperament look like, if you could
have
> symbols for any comma you need?

Don't worry. It will never happen. :-)

Once we have a list of _all_ sagittally notatable commas able to be
ordered by some kind of popularity/complexity/badness measure, and
also by untempered size. Then you can apply your original method to that.

> One approach would be to take the set of all commas that map to the
> desired generator and pick the simplest one, by some measure of
> complexity. This is pretty easy to do in the 5- and 7-limit cases, by
> first finding any comma that works, then adding and subtracting the
> vanishing commas until all of the commas you find are more complex. I
> think that general approach might work for higher limits, but how can
> you be sure that you've found the best one? Is there a better way to do
> this?

My brain hurts. :-)

>
> It's true that the simplest comma might not be the one that's
closest to
> the tempered comma size for any optimal tuning, but it's more likely to
> be close enough to the right size over a range of possible tunings, and
> also more likely to be needed for other temperaments. There might be
> some other comma that would be the second-choice comma for a wider
range
> of temperaments, but not a first choice for any of them. But finding
the
> simplest comma itself is enough of a challenge for now.

Agreed.

🔗Herman Miller <hmiller@IO.COM>

3/19/2007 6:54:25 PM

Gene Ward Smith wrote:
> --- In tuning-math@yahoogroups.com, Herman Miller <hmiller@...> wrote:
> >> One approach would be to take the set of all commas that map to the >> desired generator and pick the simplest one, by some measure of >> complexity. > > I take it you mean all commas that map to n generator steps. But how do > you pick you n?

Pick a tuning (e.g. TOP or TOP-RMS) and calculate the possible MOS scales. (Alternatively, all intervals under a maximum comma size.)

🔗Carl Lumma <ekin@lumma.org>

3/19/2007 8:11:07 PM

>>> One approach would be to take the set of all commas that map to the
>>> desired generator and pick the simplest one, by some measure of
>>> complexity.
>>
>> I take it you mean all commas that map to n generator steps. But how do
>> you pick you n?
>
>Pick a tuning (e.g. TOP or TOP-RMS) and calculate the possible MOS
>scales. (Alternatively, all intervals under a maximum comma size.)

Seems like a roundabout way to get the commas. Since good commas
make good temperaments, one would hope this procedure would spit
out good commas. Why not just search commas directly?

Aside from badness, there's the bit about bridging and
square/triangular numbers being especially useful for *chromatic*
commas (for instance some of Paul E. and Kalle A.'s work),
which means they're especially useful for notation.....

-Carl

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

3/19/2007 8:44:13 PM

--- In tuning-math@yahoogroups.com, Carl Lumma <ekin@...> wrote:

> Seems like a roundabout way to get the commas. Since good commas
> make good temperaments, one would hope this procedure would spit
> out good commas. Why not just search commas directly?

But of course, those commas map to zero generator ateps.
Herman's idea considers the fact that the generators are likely going
to be tempered.

🔗Dave Keenan <d.keenan@bigpond.net.au>

3/19/2007 9:38:21 PM

--- In tuning-math@yahoogroups.com, "Dave Keenan" <d.keenan@...> wrote:
>
> --- In tuning-math@yahoogroups.com, Herman Miller <hmiller@> wrote:
> > That seems to work pretty well for most temperaments. But what would
> the
> > ideal notation for a particular temperament look like, if you could
> have
> > symbols for any comma you need?
>
> Don't worry. It will never happen. :-)
>
> Once we have a list of _all_ sagittally notatable commas able to be
> ordered by some kind of popularity/complexity/badness measure, and
> also by untempered size. Then you can apply your original method to
that.

Duh. Now I get it. You're talking about doing this to _figure_out_
which ones _should_ be sagitally notatable. Sorry.

-- Dave K

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

3/20/2007 12:13:38 PM

--- In tuning-math@yahoogroups.com, "Gene Ward Smith"
<genewardsmith@...> wrote:

> But of course, those commas map to zero generator ateps.
> Herman's idea considers the fact that the generators are likely going
> to be tempered.

Let's look at this in practice.

Meantone: we have MOS of size 5, 7, 12, 19 and 31. We can find the 3-
limit commas associated to each of these, and then reduce via 81/80 or
81/80 and 126/125 to get a 5- resp 7-limit comma. This gives:

5-limit

5: 16/15
7: 25/24
12: 125/128
19: 3125/3072
31: 390625/393216

7-limit

5: 16/15
7: 21/20
19: 35/36
31: 1029/1024

If we use seven nominals, we don't actually use the 3^5 comma, but the
3^7 is our sharp-flat symbol, or chromatic semitone. The 3^12 symbol is
the diesis symbol which gets suggested a lot, and the 3^19 and 3^31
symbols are for rather extreme notational situations.

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

3/20/2007 5:18:45 PM

--- In tuning-math@yahoogroups.com, "Gene Ward Smith"
<genewardsmith@...> wrote:

> Let's look at this in practice.

Here are more examples, where symbols not deriving from a Tenney-MOS
are marked with an asterisk. If you push a temperament to a
complexity level beyond what seems to make sense for its tuning
accuracy, you can get some cheesy symbols appearing, which we can see
in the case of beep for instance. Note also, for what it is worth,
that Pajara[34] is a Tenney-MOS.

ennealimmal <<18 27 18 1 -22 -34||
period 27/25

2: 49/48
3: 126/125
*5: 81/80
8: 225/224
11: 5120/5103
19: 32805/32768
*30: 33554432/33480783
49: 1099511627776/1098337086315

pajara <<2 -4 -4 -11 -12 2||
period 7/5

2: 8/7
*3: 7/6
4: 10/9
5: 25/24
6: 36/35
11: 245/243
17: 4375/4374

magic <<5 1 12 -10 5 25||

3: 28/27
*4: 6/5
*7: 7/6
*10: 9/8
*13: 27/25
*16: 21/20
19: 49/48
22: 50/49
41: 1029/1024

beep <2 3 1 0 -4 -6|

4: 9/8
5: 16/15
9: 128/125
*13: 1125/1024
*22: 140625/131072
*31: 17578125/16777216
40: 2197265625/2147483648

mothra <<3 12 -1 12 -10 -36||

5: 49/48
6: 9/8
11: 54/49
16: 15/14
21: 25/24
26: 50/49
31: 126/125

🔗Herman Miller <hmiller@IO.COM>

3/20/2007 6:02:03 PM

Gene Ward Smith wrote:
> --- In tuning-math@yahoogroups.com, "Gene Ward Smith" > <genewardsmith@...> wrote:
> >> But of course, those commas map to zero generator ateps.
>> Herman's idea considers the fact that the generators are likely going >> to be tempered.
> > Let's look at this in practice.
> > Meantone: we have MOS of size 5, 7, 12, 19 and 31. We can find the 3-
> limit commas associated to each of these, and then reduce via 81/80 or > 81/80 and 126/125 to get a 5- resp 7-limit comma. This gives:
> > > 5-limit
> > 5: 16/15
> 7: 25/24
> 12: 125/128
> 19: 3125/3072
> 31: 390625/393216
> > 7-limit
> > 5: 16/15
> 7: 21/20 12: 36/35
19: 49/48 ?

> 19: 35/36
> 31: 1029/1024
> > If we use seven nominals, we don't actually use the 3^5 comma, but the > 3^7 is our sharp-flat symbol, or chromatic semitone. The 3^12 symbol is > the diesis symbol which gets suggested a lot, and the 3^19 and 3^31 > symbols are for rather extreme notational situations.

That's more or less the idea. You could add 50- and 81-note MOS for smaller commas to notate, and add an 11-limit comma (e.g. 385/384) to the set of commas you're tempering out for an 11-limit version of meantone. Is there an easy way to find the reduced n-limit commas?

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

3/20/2007 7:50:39 PM

--- In tuning-math@yahoogroups.com, Herman Miller <hmiller@...> wrote:

> Is there an easy way to find the reduced n-limit commas?

I use LLL followed brute force.

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

3/20/2007 11:06:08 PM

--- In tuning-math@yahoogroups.com, "Gene Ward Smith"
<genewardsmith@...> wrote:

I had a bug which Herman caught in my new, imporved Tenney reducer
algorithm. Here is a corrected version:

ennealimmal <<18 27 18 1 -22 -34||
period 27/25

2: 49/48
3: 126/125
*5: 81/80
8: 225/224
11: 3136/3125
19: 32805/32768
*30: 29360128/29296875
49: 274877906944/274658203125

pajara <<2 -4 -4 -11 -12 2||
period 7/5

2: 8/7
*3: 7/6
4: 10/9
5: 25/24
6: 36/35
11: 245/243
17: 4375/4374

magic <<5 1 12 -10 5 25||

3: 25/24
*4: 6/5
*7: 7/6
*10: 9/8
*13: 27/25
*16: 21/20
19: 49/48
22: 50/49
41: 1029/1024

beep <2 3 1 0 -4 -6|

4: 9/8
5: 16/15
9: 128/125
*13: 1125/1024
*22: 140625/131072
*31: 17578125/16777216
40: 2197265625/2147483648

mothra <<3 12 -1 12 -10 -36||

5: 36/35
*6: 9/8
*11: 35/32
*16: 15/14
*21: 25/24
26: 50/49
31: 126/125

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

3/20/2007 11:19:30 PM

--- In tuning-math@yahoogroups.com, Herman Miller <hmiller@...> wrote:

> That's more or less the idea. You could add 50- and 81-note MOS for
> smaller commas to notate, and add an 11-limit comma (e.g. 385/384) to
> the set of commas you're tempering out for an 11-limit version of
> meantone.

50 is not a Tenney-MOS, so the comma you get (16807/16384) is not
actually smaller than 1029/1024.

As for adding in 385/384, it also makes sense to add in 99/98 instead.
If we add in 385/384, we get 99/98 for the 31-symbol now. The 50-symbol
becomes one for 245/242. It's still the case that 99/98<245/242, but 50
comes closer, which makes sense since meanpop inclines slightly to the
flat side of 31. If we add in 99/98 instead, 50 gets an uninspiring
1331/1280, whereas 31 is gifted with 121/120. 43, which gets 864/847,
actually does better.

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

3/20/2007 11:49:39 PM

--- In tuning-math@yahoogroups.com, "Gene Ward Smith"
<genewardsmith@...> wrote:

> As for adding in 385/384, it also makes sense to add in 99/98
instead.
> If we add in 385/384, we get 99/98 for the 31-symbol now. The 50-
symbol
> becomes one for 245/242. It's still the case that 99/98<245/242,
but 50
> comes closer, which makes sense since meanpop inclines slightly to
the
> flat side of 31. If we add in 99/98 instead, 50 gets an uninspiring
> 1331/1280, whereas 31 is gifted with 121/120. 43, which gets
864/847,
> actually does better.

Adding 385/384, 81 gets a 12005/11979 symbol, and is a Tenney MOS.
Similarly, adding in 99/98 gives 74 65536/65219, which makes it a
Tenney-MOS.

Tenney-MOS associated equal temperaments, on the large size, give a
purely algebraic method for coming up with a tuning. It seems to work
pretty well. However, there's a question of when to stop: I went up
to 205-edo with septimal meantone without finding a Tenney-MOS to
beat 31.

Some Tenney-MOS tunings: 31 for meantone, 34 for pajara (NB George!),
612 for ennealimmal, 41 for magic, 9 (and 40 if you want to push) for
beep, 31 for mothra. Of course, where to stop is a question, but
perhaps if you go up ten times as far and find nothing you can call
it quits. Note, by the way, that the method automatically gives you
not just an edo, but a val, which can be found by solving a linear
system but is more easily found via the interior product of the
wedgie with symbol-comma.

🔗Graham Breed <gbreed@gmail.com>

3/21/2007 12:25:34 AM

Gene Ward Smith wrote:

> Tenney-MOS associated equal temperaments, on the large size, give a > purely algebraic method for coming up with a tuning. It seems to work > pretty well. However, there's a question of when to stop: I went up > to 205-edo with septimal meantone without finding a Tenney-MOS to > beat 31.
> > Some Tenney-MOS tunings: 31 for meantone, 34 for pajara (NB George!), > 612 for ennealimmal, 41 for magic, 9 (and 40 if you want to push) for > beep, 31 for mothra. Of course, where to stop is a question, but > perhaps if you go up ten times as far and find nothing you can call > it quits. Note, by the way, that the method automatically gives you > not just an edo, but a val, which can be found by solving a linear > system but is more easily found via the interior product of the > wedgie with symbol-comma.

How about stopping at the square root of (complexity over error)? Where complexity and error are either both standard deviations, or scalar complexity and TOP-RMS error.

I think your interior product will be identical to the solution of the linear system.

Graham

🔗Dave Keenan <d.keenan@bigpond.net.au>

3/21/2007 5:10:36 PM

Hi Herman, Gene, Carl and Graham,

This is good stuff. Please keep it up.

I look forward to a roughly ranked list of (at least) 11-limit
notational commas at the end of it.

Gene,

I understand George is already making good use of your earlier list of
over 300 commas. Thanks.

-- Dave K

🔗Herman Miller <hmiller@IO.COM>

3/21/2007 8:45:36 PM

Gene Ward Smith wrote:
> --- In tuning-math@yahoogroups.com, Herman Miller <hmiller@...> wrote:
> >> Is there an easy way to find the reduced n-limit commas?
> > I use LLL followed brute force.

This one?

https://openaccess.leidenuniv.nl/dspace/handle/1887/3810

I take it that there isn't an easy way, then? :-)

(Unless you know a free/open source implementation of this in C or C++ that I can use...)

🔗Graham Breed <gbreed@gmail.com>

3/21/2007 9:43:41 PM

Herman Miller wrote:
> Gene Ward Smith wrote:
> >>--- In tuning-math@yahoogroups.com, Herman Miller <hmiller@...> wrote:
>>
>>
>>>Is there an easy way to find the reduced n-limit commas?
>>
>>I use LLL followed brute force.
> > This one?
> > https://openaccess.leidenuniv.nl/dspace/handle/1887/3810

Oh, cool link! I'll have a look at this because they're supposed to use equal temperaments as an example.

> I take it that there isn't an easy way, then? :-)
> > (Unless you know a free/open source implementation of this in C or C++ > that I can use...)

Here's my Python. I think it's correct, and I checked it against some other implementation, but not exhaustively. I can't spot anything that should be too difficult to re-write in C++. It requires a rational number library (which I wrote myself) but surely such things exist.

Remember to view in such a way as to preserve leading whitespace. The meat's in the first two functions.

import operator
from rational import Rational

def reduction(f, show=0):
"""from von zur Gathen & Gerhard p.452"""

n = len(f)
g = rationalize(f)
gstar, m = GSO(g)
half = Rational(1,2)

i=1 # indexing from zero
while i<n:
if show:
print i
print g
print m
print gstar
print
for j in range(i-1, -1, -1): # from i-1 to 0
multiplier = int(half-m[i][j])
# the algorithm says round off and then subtract
# negating, then rounding and adding does, however,
# give the correct result
for k in range(n):
g[i][k] = g[i][k] + multiplier*g[j][k]
if show:
print j, multiplier, m[i][j]
print g
print
gstar, m = GSO(g) # indentation?

if i>0 and innerProduct(
gstar[i-1],
gstar[i-1]
) > 2*innerProduct(
gstar[i],
gstar[i]):
g[i-1], g[i] = g[i], g[i-1]
gstar, m = GSO(g)
i = i - 1
else:
i = i + 1
return deRationalize(g)

def GSO(basis):
"""
Gram-Schmidt orthogonalization
returns the Gramian matrix and
the other thing as a pair

"""
n = len(basis)
f = rationalize(basis)

m = []
gramian = []
for i in range(n):
row = []
for j in range(i):
row.append(
innerProduct(f[i], gramian[j]) /
innerProduct(gramian[j], gramian[j]))
m.append(row + [1] + [0]*(len(f)-i-1))

row = list(f[i])
gramian.append(row)
for j in range(i):
multiplier = m[i][j]
for k in range(n):
row[k] = row[k] - multiplier * gramian[j][k]

return gramian, m

def isOrthogonal(matrix):
for i in range(len(matrix)-1):
for j in range(i+1, len(matrix)):
if innerProduct(matrix[i], matrix[j]):
return 0
return 1

def innerProduct(u, v):
return reduce(operator.add,
map(operator.mul, u, v))

def rationalize(f):
g = []
for vector in f:
row = []
g.append(row)
for element in vector:
if isinstance(element, Rational):
row.append(element)
else:
row.append(Rational(long(element), 1L))
return g

def deRationalize(f):
g = []
for vector in f:
row = []
g.append(row)
for element in vector:
if isinstance(element, Rational) and element.d==1:
try:
row.append(int(element))
except OverflowError:
row.append(long(element))
else:
row.append(element)
return g

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

3/21/2007 10:39:26 PM

--- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:

> >>I use LLL followed brute force.
> >
> > This one?
> >
> > https://openaccess.leidenuniv.nl/dspace/handle/1887/3810

The lattice reduction algorithm which the factoring algorithm makes
use of:

http://en.wikipedia.org/wiki/Lenstra-Lenstra-Lov%C3%
A1sz_lattice_reduction_algorithm

http://tinyurl.com/3bn74k

> Oh, cool link! I'll have a look at this because they're supposed
to use
> equal temperaments as an example.

They do?? I read it a long time ago, but don't recall that.

Aside from Graham's routine, the Wikipedia article tells of some
other places to find it.

🔗Graham Breed <gbreed@gmail.com>

3/22/2007 6:55:26 AM

Gene Ward Smith wrote:
> --- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:

>>Oh, cool link! I'll have a look at this because they're supposed > > to use > >>equal temperaments as an example.
> > > They do?? I read it a long time ago, but don't recall that.

Well, not here that I can see. Modern Computer Algebra describes it, and I thought the reference was to the LLL paper. I can check in the summer...

Graham

🔗Herman Miller <hmiller@IO.COM>

3/22/2007 7:43:59 PM

Gene Ward Smith wrote:
> --- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:
> >>>> I use LLL followed brute force.
>>> This one?
>>>
>>> https://openaccess.leidenuniv.nl/dspace/handle/1887/3810
> > The lattice reduction algorithm which the factoring algorithm makes > use of:
> > http://en.wikipedia.org/wiki/Lenstra-Lenstra-Lov%C3%
> A1sz_lattice_reduction_algorithm
> > http://tinyurl.com/3bn74k
> >> Oh, cool link! I'll have a look at this because they're supposed > to use >> equal temperaments as an example.
> > They do?? I read it a long time ago, but don't recall that.
> > Aside from Graham's routine, the Wikipedia article tells of some > other places to find it. That's where I found the link. Well, it looks like a lot of trouble for just a list of commas, but if I find the time someday I might look into it.

I thought of an alternative way of evaluating commas: start with a pre-generated list of as many commas within the size range as you think you might need in order to find the interesting ones (say 100,000), in sorted order of complexity. Then for each temperament, map each of the commas into the temperament until you find a comma for each of the MOS sizes you're looking for. (You probably won't need to check all or even a large number of your existing list of commas for most temperaments). Or you could just include any comma that maps to a positive step size, regardless of whether the scale with that number of steps is an MOS.

🔗Dave Keenan <d.keenan@bigpond.net.au>

4/20/2007 1:15:40 AM

It looks as though my post quoted below was the kiss of death for this
thread. :-)

So I'm just summarising here all the notational commas that got a
mention, without any attempt to rank them (or remove all duplicates).
I think it will be easy to give all but a few extremely complex ones
their own sagittal symbols. Any more you want to add, post 'em here soon.

I don't think very many temperaments got examined.

16/15
25/24
125/128
3125/3072
390625/393216
21/20
35/36
1029/1024
3^7 comma
3^12 comma
3^19 comma
3^31 comma
27/25
49/48
126/125
81/80
225/224
3136/3125
32805/32768
29360128/29296875
274877906944/274658203125
7/5
8/7
7/6
10/9
25/24
36/35
245/243
4375/4374
25/24
6/5
7/6
9/8
27/25
21/20
49/48
50/49
1029/1024
9/8
16/15
128/125
1125/1024
140625/131072
17578125/16777216
2197265625/2147483648
36/35
35/32
15/14
126/125
385/384
99/98
245/242
1331/1280
121/120
864/847
12005/11979
65536/65219

-- Dave Keenan

--- In tuning-math@yahoogroups.com, "Dave Keenan" <d.keenan@...> wrote:
>
> Hi Herman, Gene, Carl and Graham,
>
> This is good stuff. Please keep it up.
>
> I look forward to a roughly ranked list of (at least) 11-limit
> notational commas at the end of it.
>
> Gene,
>
> I understand George is already making good use of your earlier list of
> over 300 commas. Thanks.
>
> -- Dave K
>