back to list

MOS Generalization

🔗Graham Breed <gbreed@gmail.com>

10/16/2010 1:52:21 AM

This is going to be a quick message on the problems of generalizing
MOS scales to higher ranks. The problems seem to be hairy enough that
it could turn into quite a long message.

I know there's talk of Erv Wilson thinking of MOS as not being limited
to rank 2, and there are papers from the maximal/distributional
evenness school on higher rank definitions, and there are discussions
in the archives. But I'm ignorant of the contents of these, because
it's not a subject I planned to be an expert on. So if there's any
useful existing research, anybody who knows about it can bring it up
here.

The basic idea is that a rank 2 MOS has 2 step sizes roughly evenly
distributed. So the generalization to rank R should have R distinct
step sizes. Probably the Rothenberg matrix should give at most R
distinct sizes of all interval classes.

The simple solution is to define the structure by rotations of
maximally even scales. The code I have now sometimes gives 4 step
sizes for a rank 3 temperament. Maybe that's because I'm not
searching exhaustively enough -- I can try tinkering with the code.
But there's also a problem (see my recent message on another list)
that even if you get the right number of steps, they might not be the
sizes you were looking for.

My definition of maximally even n from d is floor(d*i/n) steps for the
ith note. Or maybe the other way up.

There are, though, different ways of defining a 46 note portent scale.
It could be 5&15&26 or 5&10&31. I haven't checked that the latter
doesn't have contorsion, though. But I don't think we're going to get
a unique scale type beyond rank 2.

The rule for avoiding contorsion should be that the transformation
from a known correct basis is a matrix with a determinant of 1. I
believe that makes it unimodular. The determinant could be -1, but
you can reorder the basis to avoid this.

Let's say you have a basis X. To describe the steps of an n note
scale, you need to find a new basis Y such that Y = AX where A is this
unimodular matrix. Every element of Y (or the first column or
whatever) should be positive for sanity. And (the first column of) Y
should sum to give n. Also, A only contains integers. So these are
the constraints we have to comply with. I can probably hack up a
solution for rank 3. But for general rank I can't think of anything
better than searching through all possible integer, unimodular A. And
I don't know how to do that but it's probably a solved problem. It
has the nasty smell of being NP-complete, in that it's easy to check a
solution, but harder to find it, and it gets dramatically harder with
higher ranks.

The other problem is finding a good scale with the R different step
sizes. This is complicated by me not knowing what such a scale should
look like. It would be nice if three different maximally even scales
could be rotated so that they don't intersect. That is, in the
example, that 46 from 5, 46 from 15, and 46 from 26 can be rotated so
that each step corresponds to a 1 in exactly one of the scales, each
of which will have step sizes of 0 or 1 degrees of the smaller scales.
I don't know if this is possible or not.

For an estimate of the complexity, the rotation of the first scale can
be ignored. There are n ways of rotating the second scale (for n
notes to the octave) and n for the next scale, and so on. This gives
n^(r-1) (n to the power r minus one) rotations for rank r. Some can
be discarded because they already have too many step sizes, or two 1's
clash, or whatever. But it's looking worryingly like exponential
complexity in r, which would be another NP-complete problem.

Graham

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/16/2010 10:22:20 AM

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

> The rule for avoiding contorsion should be that the transformation
> from a known correct basis is a matrix with a determinant of 1. I
> believe that makes it unimodular. The determinant could be -1, but
> you can reorder the basis to avoid this.

More or less, but you have to note that the matrix is integral, that is, the coefficients are integers. A unimodular matrix is a square integral matrix with determinant +-1.

> Let's say you have a basis X. To describe the steps of an n note
> scale, you need to find a new basis Y such that Y = AX where A is this
> unimodular matrix. Every element of Y (or the first column or
> whatever) should be positive for sanity. And (the first column of) Y
> should sum to give n. Also, A only contains integers. So these are
> the constraints we have to comply with. I can probably hack up a
> solution for rank 3. But for general rank I can't think of anything
> better than searching through all possible integer, unimodular A.

I'm pretty sure you can do better. My usual approach is to start from a basis for the commas of the temperament, rather than the vals, and to assume that the commas shouldn't be too unreasonable. To go further with this problem it needs to be specified precisely what the problem is.

> But it's looking worryingly like exponential
> complexity in r, which would be another NP-complete problem.

Could be. Did you brute-force the 26-15-5 example and find no solutions with three step sizes?

🔗Graham Breed <gbreed@gmail.com>

10/17/2010 12:48:23 AM

On 16 October 2010 21:22, genewardsmith <genewardsmith@sbcglobal.net> wrote:

> More or less, but you have to note that the matrix is integral, that is, the coefficients are integers. A unimodular matrix is a square integral matrix with determinant +-1.

Unimodular is what we want, then.

>> Let's say you have a basis X.  To describe the steps of an n note
>> scale, you need to find a new basis Y such that Y = AX where A is this
>> unimodular matrix.  Every element of Y (or the first column or
>> whatever) should be positive for sanity.  And (the first column of) Y
>> should sum to give n.  Also, A only contains integers.  So these are
>> the constraints we have to comply with.  I can probably hack up a
>> solution for rank 3.  But for general rank I can't think of anything
>> better than searching through all possible integer, unimodular A.
>
> I'm pretty sure you can do better. My usual approach is to start from a basis for the commas of the temperament, rather than the vals, and to assume that the commas shouldn't be too unreasonable. To go further with this problem it needs to be specified precisely what the problem is.

I defined the problem precisely in that paragraph you quoted.

>> But it's looking worryingly like exponential
>> complexity in r, which would be another NP-complete problem.
>
> Could be. Did you brute-force the 26-15-5 example and find no solutions with three step sizes?

Brute forcing 26&15&5 works once I know I want 26&15&5. Looking for
three step sizes gives the wrong step sizes. You have to look for two
non-overlapping maximally even scales and ignore 26. (I haven't
checked if any of the implied 46 from 26 scales are maximally even.)
But brute force looks like an exponential time solution. Not that it
matters that much because the problems aren't going to get that big.

Brute forcing 31&46&72 for a 3 step-size scale doesn't work. So you
need to know you're looking for 26&15&5. Finding that with brute
force will surely work but so far I don't even have a brute force
algorithm. (I found it with pencil and paper.) I need a recipe for
producing unimodular matrices. For rank 3, a list of known matrices
will do.

Graham

🔗robert <robertthomasmartin@yahoo.com>

10/17/2010 2:02:49 AM

See Jan Haluska's Research Papers which might help ???
http://fpv.utc.sk/~jhaluska/haluska/haluskaPUB.html

--- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:
>
> On 16 October 2010 21:22, genewardsmith <genewardsmith@...> wrote:
>
> > More or less, but you have to note that the matrix is integral, that is, the coefficients are integers. A unimodular matrix is a square integral matrix with determinant +-1.
>
> Unimodular is what we want, then.
>
> >> Let's say you have a basis X.  To describe the steps of an n note
> >> scale, you need to find a new basis Y such that Y = AX where A is this
> >> unimodular matrix.  Every element of Y (or the first column or
> >> whatever) should be positive for sanity.  And (the first column of) Y
> >> should sum to give n.  Also, A only contains integers.  So these are
> >> the constraints we have to comply with.  I can probably hack up a
> >> solution for rank 3.  But for general rank I can't think of anything
> >> better than searching through all possible integer, unimodular A.
> >
> > I'm pretty sure you can do better. My usual approach is to start from a basis for the commas of the temperament, rather than the vals, and to assume that the commas shouldn't be too unreasonable. To go further with this problem it needs to be specified precisely what the problem is.
>
> I defined the problem precisely in that paragraph you quoted.
>
> >> But it's looking worryingly like exponential
> >> complexity in r, which would be another NP-complete problem.
> >
> > Could be. Did you brute-force the 26-15-5 example and find no solutions with three step sizes?
>
> Brute forcing 26&15&5 works once I know I want 26&15&5. Looking for
> three step sizes gives the wrong step sizes. You have to look for two
> non-overlapping maximally even scales and ignore 26. (I haven't
> checked if any of the implied 46 from 26 scales are maximally even.)
> But brute force looks like an exponential time solution. Not that it
> matters that much because the problems aren't going to get that big.
>
> Brute forcing 31&46&72 for a 3 step-size scale doesn't work. So you
> need to know you're looking for 26&15&5. Finding that with brute
> force will surely work but so far I don't even have a brute force
> algorithm. (I found it with pencil and paper.) I need a recipe for
> producing unimodular matrices. For rank 3, a list of known matrices
> will do.
>
>
> Graham
>

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/17/2010 12:01:48 PM

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

> Brute forcing 31&46&72 for a 3 step-size scale doesn't work. So you
> need to know you're looking for 26&15&5. Finding that with brute
> force will surely work but so far I don't even have a brute force
> algorithm. (I found it with pencil and paper.) I need a recipe for
> producing unimodular matrices. For rank 3, a list of known matrices
> will do.

Unimodular matricies of any dimension n>1 form an infinite group so no such list is possible. What is possible is a set of generators. For 2x2 matrices this is well known, and I presume something could be found for higher dimensions, but apparently just using elementary matrices (identity plus off diagonal 1) won't do.

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/17/2010 12:24:22 PM

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

> Unimodular matricies of any dimension n>1 form an infinite group so no such list is possible. What is possible is a set of generators. For 2x2 matrices this is well known, and I presume something could be found for higher dimensions, but apparently just using elementary matrices (identity plus off diagonal 1) won't do.
>

I found this reference:

http://iopscience.iop.org/1468-4802/78/1/A08

I'll see if I can get the pdf, but anyone else is welcome to give it a shot.

🔗Carl Lumma <carl@lumma.org>

10/17/2010 12:47:59 PM

Graham wrote:

>The basic idea is that a rank 2 MOS has 2 step sizes roughly evenly
>distributed. So the generalization to rank R should have R distinct
>step sizes. Probably the Rothenberg matrix should give at most R
>distinct sizes of all interval classes.

I expect so, and as I've pointed out in the past, that takes care
of the arcana surrounding the distribution of the 2nds. I'll call
it generalized Myhill's property (GMP).

>The code I have now sometimes gives 4 step sizes for a
>rank 3 temperament.

I don't see how that can be right. But I guess you aren't
saying it is.

>My definition of maximally even n from d is floor(d*i/n) steps for
>the ith note. Or maybe the other way up.

If you really want to deal with 2nds (and that has some appeal),
you should derive the rule that produces GMP.

>It has the nasty smell of being NP-complete,

Does it relativize? I think you mean NP.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/17/2010 12:48:45 PM

--- In tuning-math@yahoogroups.com, "genewardsmith" <genewardsmith@...> wrote:
What is possible is a set of generators. For 2x2 matrices this is well known, and I presume something could be found for higher dimensions, but apparently just using elementary matrices (identity plus off diagonal 1) won't do.

I thought I read the above when I googled, but it occurs to me that this is wrong. You can get to any unimodular matrix by elementary operations, so the set of elementary matrices must generate GL(2, Z). That may be overkill, but it's easily defined.

🔗Carl Lumma <carl@lumma.org>

10/17/2010 1:26:29 PM

Robert wrote:

>See Jan Haluska's Research Papers which might help ???
> http://fpv.utc.sk/~jhaluska/haluska/haluskaPUB.html
>

Great link Robert, thanks. I can only comment on the English
papers, and not all of them, because I didn't have time to look
them all deeply. But I don't see anything of use for the
problem at hand. Still, I had never really looked at Haluska's
stuff and I'm glad I did. -Carl

🔗robert <robertthomasmartin@yahoo.com>

10/17/2010 3:46:09 PM

Ok, here's something else which may/may not help. Go to:
http://e-collection.ethbib.ethz.ch/
And insert "algorithms for matrix canonical forms" into the Search box.
If not helpful it could still be useful for other problems.
PDF=6.07MB.

--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>
> Robert wrote:
>
> >See Jan Haluska's Research Papers which might help ???
> > http://fpv.utc.sk/~jhaluska/haluska/haluskaPUB.html
> >
>
> Great link Robert, thanks. I can only comment on the English
> papers, and not all of them, because I didn't have time to look
> them all deeply. But I don't see anything of use for the
> problem at hand. Still, I had never really looked at Haluska's
> stuff and I'm glad I did. -Carl
>

🔗Graham Breed <gbreed@gmail.com>

10/18/2010 2:03:04 AM

On 17 October 2010 23:47, Carl Lumma <carl@lumma.org> wrote:
> Graham wrote:
>
>>The basic idea is that a rank 2 MOS has 2 step sizes roughly evenly
>>distributed.  So the generalization to rank R should have R distinct
>>step sizes.  Probably the Rothenberg matrix should give at most R
>>distinct sizes of all interval classes.
>
> I expect so, and as I've pointed out in the past, that takes care
> of the arcana surrounding the distribution of the 2nds.  I'll call
> it generalized Myhill's property (GMP).

What I can see working is defining an energy function where like
intervals repel each other, with something like an inverse square law.
Then try swapping intervals as long as the energy decreases. But
it's not something I want to look into if somebody already has an
algorithm that's known to work.

>>The code I have now sometimes gives 4 step sizes for a
>>rank 3 temperament.
>
> I don't see how that can be right.  But I guess you aren't
> saying it is.

The generalization of an MOS should have 3 steps for rank 3. The code
I have now for overlaying maximally even scales gives 4 step sizes.
That doesn't mean they're bad scales (Gene's hobbits also have 4 step
sizes) but it's a bad sign.

>>My definition of maximally even n from d is floor(d*i/n) steps for
>>the ith note.  Or maybe the other way up.
>
> If you really want to deal with 2nds (and that has some appeal),
> you should derive the rule that produces GMP.

Yes, if I knew how to do that.

>>It has the nasty smell of being NP-complete,
>
> Does it relativize?  I think you mean NP.

Yes, looks like it.

Graham

🔗Graham Breed <gbreed@gmail.com>

10/18/2010 2:11:46 AM

On 17 October 2010 23:01, genewardsmith <genewardsmith@sbcglobal.net> wrote:
>
>
> --- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:
>
>> Brute forcing 31&46&72 for a 3 step-size scale doesn't work.  So you
>> need to know you're looking for 26&15&5.  Finding that with brute
>> force will surely work but so far I don't even have a brute force
>> algorithm.  (I found it with pencil and paper.)  I need a recipe for
>> producing unimodular matrices.  For rank 3, a list of known matrices
>> will do.
>
> Unimodular matricies of any dimension n>1 form an infinite group so no such list is possible. What is possible is a set of generators. For 2x2 matrices this is well known, and I presume something could be found for higher dimensions, but apparently just using elementary matrices (identity plus off diagonal 1) won't do.

(Elementary matrices apparently do work according to your later message.)

The simplest permutations are most likely to be most interesting. So
I'd expect the algorithm to churn out the simplest matrices first. I
don't think defining simplicity of a unimodular matrix should be a
problem -- number of elementary matrices would be one way.

Also, where we get multiple ways of adding up to 46, we'll need a rule
to say which ones we prefer. Taking equal temperaments of minimal
error should work. I may not want a single solution but I only want
sensible ones.

When it comes to a standard list, only remember the simple ones. And
exclude any that would produce the same vals (scales, ETs, whatever)
in a different order. Most interesting are where the scale is a
division of one of the original vals.

Graham

🔗Graham Breed <gbreed@gmail.com>

10/18/2010 2:14:55 AM

I wrote:

> What I can see working is defining an energy function where like
> intervals repel each other, with something like an inverse square law.
>  Then try swapping intervals as long as the energy decreases.  But
> it's not something I want to look into if somebody already has an
> algorithm that's known to work.

Another idea for the energy function is to add up the standard
deviations of the intervals sizes for different diatonic classes.
That is standard deviations of generalized seconds, thirds, and so on
up to half-octaves. That should give the nearest distribution to an
equal temperament because the standard deviation of equally tempered
intervals is always zero.

Graham

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/18/2010 10:50:46 AM

--- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:
>
> On 17 October 2010 23:01, genewardsmith <genewardsmith@...> wrote:

> (Elementary matrices apparently do work according to your later message.)

Yes, I must have misread what I googled on, as elementary matrices clearly will work for a set of generators. Even so, getting a finite set plus one more generator to work, which apparently is possible for rank up through five, would be nice.

> The simplest permutations are most likely to be most interesting. So
> I'd expect the algorithm to churn out the simplest matrices first. I
> don't think defining simplicity of a unimodular matrix should be a
> problem -- number of elementary matrices would be one way.

The trouble with that is that the product giving the matrix is not unique. Why not use a matrix norm?

> Also, where we get multiple ways of adding up to 46, we'll need a rule
> to say which ones we prefer. Taking equal temperaments of minimal
> error should work. I may not want a single solution but I only want
> sensible ones.

I still think starting from commas should be considered for that.

🔗Carl Lumma <carl@lumma.org>

10/18/2010 10:51:46 AM

Graham wrote:

>> What I can see working is defining an energy function where like
>> intervals repel each other, with something like an inverse square law.
>> Then try swapping intervals as long as the energy decreases. But
>> it's not something I want to look into if somebody already has an
>> algorithm that's known to work.
>
>Another idea for the energy function is to add up the standard
>deviations of the intervals sizes for different diatonic classes.
>That is standard deviations of generalized seconds, thirds, and so on
>up to half-octaves. That should give the nearest distribution to an
>equal temperament because the standard deviation of equally tempered
>intervals is always zero.

That's a lot more complicated that just testing for GMP.
All the stuff about approximating ETs with the 2nds is very
likely aimed at producing GMP. Didn't somebody (you?) prove
one of the flavors is equivalent to GMP for rank 2?

-Carl

🔗Graham Breed <gbreed@gmail.com>

10/19/2010 3:14:13 AM

On 18 October 2010 21:51, Carl Lumma <carl@lumma.org> wrote:

> That's a lot more complicated that just testing for GMP.
> All the stuff about approximating ETs with the 2nds is very
> likely aimed at producing GMP.  Didn't somebody (you?) prove
> one of the flavors is equivalent to GMP for rank 2?

GMP (Generalized Myhill's Property) will give a lot of different
scales with the same value. It's easy to find rank 3 scales with 4
step sizes. It's much harder to find the scales with 3 step sizes.
Maybe something magic happens with higher ranks, but I'm not sure.
There are probably a lot of scales with a variety of 4.

The point of the energy minimization is that the energy should go down
with every step that gets you closer to the solution. Like-steps
repelling will do that if you move one note at a time. For 7 from 12,
you'll get either the diatonic (major etc) or melodic minor for only
1-step repulsion. Measure thirds and you get only the diatonic. It's
a simple process and easy to visualize. For higher ranks, there are
probably cases where you need to swap non-adjacent intervals, but it's
still relatively simple. If other methods give the same results, the
easiest way to find out is by trying.

All kinds of things are the same for rank 2. That doesn't mean
they'll hold in higher ranks. I think being close to an equal
temperament and having a regular pattern are the most important
properties for automatically-generated scales.

Graham

🔗Carl Lumma <carl@lumma.org>

10/19/2010 10:01:29 AM

At 03:14 AM 10/19/2010, you wrote:
>
>On 18 October 2010 21:51, Carl Lumma <carl@lumma.org> wrote:
>
>> That's a lot more complicated that just testing for GMP.
>> All the stuff about approximating ETs with the 2nds is very
>> likely aimed at producing GMP. Didn't somebody (you?) prove
>> one of the flavors is equivalent to GMP for rank 2?
>
>GMP (Generalized Myhill's Property) will give a lot of different
>scales with the same value. It's easy to find rank 3 scales with 4
>step sizes. It's much harder to find the scales with 3 step sizes.

GMP for rank 3 means 3 step sizes. I don't think the order
of the 2nds matters at all beyond GMP.

>The point of the energy minimization is that the energy should go down
>with every step that gets you closer to the solution.

What's the solution?

>All kinds of things are the same for rank 2. That doesn't mean
>they'll hold in higher ranks. I think being close to an equal
>temperament and having a regular pattern are the most important
>properties for automatically-generated scales.

Why? But I thought we were talking about MOS generalizations.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/19/2010 12:33:07 PM

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

> GMP for rank 3 means 3 step sizes. I don't think the order
> of the 2nds matters at all beyond GMP.

Wouldn't the simplest method be to simply come up with three step sizes, which is not difficult, and then construct your scales?

🔗Graham Breed <gbreed@gmail.com>

10/20/2010 12:36:45 AM

On 19 October 2010 21:01, Carl Lumma <carl@lumma.org> wrote:
> At 03:14 AM 10/19/2010, you wrote:
>>
>>GMP (Generalized Myhill's Property) will give a lot of different
>>scales with the same value.  It's easy to find rank 3 scales with 4
>>step sizes.  It's much harder to find the scales with 3 step sizes.
>
> GMP for rank 3 means 3 step sizes.  I don't think the order
> of the 2nds matters at all beyond GMP.

I don't know if it matters or not. But that's beside the point. I
said they're hard to find. You haven't said how I should find them.

>>The point of the energy minimization is that the energy should go down
>>with every step that gets you closer to the solution.
>
> What's the solution?

The scale with lowest energy.

>>All kinds of things are the same for rank 2.  That doesn't mean
>>they'll hold in higher ranks.  I think being close to an equal
>>temperament and having a regular pattern are the most important
>>properties for automatically-generated scales.
>
> Why?  But I thought we were talking about MOS generalizations.

Being close to an equal temperament and having regular pattern are
both properties of MOS scales. If somebody tunes up a new scale, it's
easier to get the hang of if the intervals are close to equal. It's
also easier to understand if there's a regular pattern.

Graham

🔗Graham Breed <gbreed@gmail.com>

10/20/2010 12:32:16 AM

On 19 October 2010 23:33, genewardsmith <genewardsmith@sbcglobal.net> wrote:
>
>
> --- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>
>> GMP for rank 3 means 3 step sizes.  I don't think the order
>> of the 2nds matters at all beyond GMP.
>
> Wouldn't the simplest method be to simply come up with three step sizes, which is not difficult, and then construct your scales?

Yes, that's what we're talking about. Constructing the scales. Both
coming up with the three step sizes and constructing the scales looks
difficult from where I'm sitting. If you disagree, post your
algorithm.

Graham

🔗Carl Lumma <carl@lumma.org>

10/20/2010 12:55:58 AM

Graham wrote:

>>>All kinds of things are the same for rank 2. That doesn't mean
>>>they'll hold in higher ranks. I think being close to an equal
>>>temperament and having a regular pattern are the most important
>>>properties for automatically-generated scales.
>>
>> Why? But I thought we were talking about MOS generalizations.
>
>Being close to an equal temperament and having regular pattern are
>both properties of MOS scales.

You know my motto: MOS IFF Myhill. I don't see where ETs or
regular patterns come into it. -Carl

🔗Graham Breed <gbreed@gmail.com>

10/20/2010 1:14:39 AM

On 20 October 2010 11:55, Carl Lumma <carl@lumma.org> wrote:

> You know my motto: MOS IFF Myhill. I don't see where ETs or
> regular patterns come into it.  -Carl

If you want a generalization of Myhill, fine. Give me an algorithm
for producing a generalization of Myhill.

Graham

🔗Carl Lumma <carl@lumma.org>

10/20/2010 1:37:41 AM

Graham wrote:

>> You know my motto: MOS IFF Myhill. I don't see where ETs or
>> regular patterns come into it. -Carl
>
>If you want a generalization of Myhill, fine. Give me an algorithm
>for producing a generalization of Myhill.

I don't know much of anything about rank 3 temperaments, but I
assume there's a period and two generators of known size. If the
problem is finding a scale of size N... we have a 2-D lattice of
generators (ignoring the period), the possible factorizations
of N into two positive integers and for each of those excepting
{sqrt(N) sqrt(N)} two rectangles on this lattice of generators.
Test all the rectangles for GMP and return those that have it,
if any. No?

We might start with {floor(sqrt(N) ceiling(sqrt(N)}, walk the first
term down and stop on the first GMP scale we find. -Carl

🔗Graham Breed <gbreed@gmail.com>

10/20/2010 1:59:37 AM

On 20 October 2010 12:37, Carl Lumma <carl@lumma.org> wrote:

> I don't know much of anything about rank 3 temperaments, but I
> assume there's a period and two generators of known size.  If the
> problem is finding a scale of size N... we have a 2-D lattice of
> generators (ignoring the period), the possible factorizations
> of N into two positive integers and for each of those excepting
> {sqrt(N) sqrt(N)} two rectangles on this lattice of generators.
> Test all the rectangles for GMP and return those that have it,
> if any.  No?

Right, yes, that'd probably work. For any given period, you can
choose an infinite number of generator pairs. But you can define one
of them to be orthogonal to the 3:1, the same way the period's defined
to be orthogonal to the 2:1. That's essentially the Hermite normal
form. You may want to reduce every generator to be within the period,
and you still have other choices, but I'm not sure they'd affect your
algorithm anyway. So we can say there are two well known generators.

I'm not sure what the sqrt(N) means. There are going to be about N
different scales you get from this, which is manageable. Can we be
sure that one will have the property we want? That isn't clear to me.

This would only be a solution for rank 3 scales. What it's doing is
pushing the rank down by 1 through octave equivalence. The general
case of arbitrary ranks is still difficult. But it isn't clear
anybody's really interested in that case.

> We might start with {floor(sqrt(N) ceiling(sqrt(N)}, walk the first
> term down and stop on the first GMP scale we find.  -Carl

One thing about taking a generator orthogonal to 3:1 is that it
specifies something like tetrachordal similarity. It'd be nice if our
scales were automatically tetrachordal -- a bonus over the rank 2
(MOS) case. Perhaps that means taking the largest number of steps for
the 3:1-orthogonal generator, rather than making them equal. And
without only taking that generator, which would give a lower rank
solution.

Graham

🔗robert <robertthomasmartin@yahoo.com>

10/20/2010 5:50:08 AM

I have added "Commutators in the Special and General Linear Groups" by Robert Charles Thompson (PhD thesis 1960) to the Files section but I will delete it if it is of no use to you. I also have files for:
A Complete Set of Unitary Invariants for 3x3 Complex Matrices.
Some Matrix Factorization Theorems 1.
Some Matrix Factorization Theorems 2.
The Matrix Cookbook.
Algorithms for Matrix Canonical Forms.
A Concise Guide to Hadamard Matrices.
Some of which I can add or send to you if you think it might help.

--- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:
>
> On 20 October 2010 12:37, Carl Lumma <carl@...> wrote:
>
> > I don't know much of anything about rank 3 temperaments, but I
> > assume there's a period and two generators of known size.  If the
> > problem is finding a scale of size N... we have a 2-D lattice of
> > generators (ignoring the period), the possible factorizations
> > of N into two positive integers and for each of those excepting
> > {sqrt(N) sqrt(N)} two rectangles on this lattice of generators.
> > Test all the rectangles for GMP and return those that have it,
> > if any.  No?
>
> Right, yes, that'd probably work. For any given period, you can
> choose an infinite number of generator pairs. But you can define one
> of them to be orthogonal to the 3:1, the same way the period's defined
> to be orthogonal to the 2:1. That's essentially the Hermite normal
> form. You may want to reduce every generator to be within the period,
> and you still have other choices, but I'm not sure they'd affect your
> algorithm anyway. So we can say there are two well known generators.
>
> I'm not sure what the sqrt(N) means. There are going to be about N
> different scales you get from this, which is manageable. Can we be
> sure that one will have the property we want? That isn't clear to me.
>
> This would only be a solution for rank 3 scales. What it's doing is
> pushing the rank down by 1 through octave equivalence. The general
> case of arbitrary ranks is still difficult. But it isn't clear
> anybody's really interested in that case.
>
> > We might start with {floor(sqrt(N) ceiling(sqrt(N)}, walk the first
> > term down and stop on the first GMP scale we find.  -Carl
>
> One thing about taking a generator orthogonal to 3:1 is that it
> specifies something like tetrachordal similarity. It'd be nice if our
> scales were automatically tetrachordal -- a bonus over the rank 2
> (MOS) case. Perhaps that means taking the largest number of steps for
> the 3:1-orthogonal generator, rather than making them equal. And
> without only taking that generator, which would give a lower rank
> solution.
>
>
> Graham
>

🔗Carl Lumma <carl@lumma.org>

10/20/2010 11:00:43 AM

Graham wrote:

>I'm not sure what the sqrt(N) means.

When sqrt(N) is an integer, there is a square rectangle and hence
only one rectangle for that factorization. All other factorizations
have two rectangles, oblong in one axis or the other.

>There are going to be about N different scales you get
>from this, which is manageable. Can we be sure that one
>will have the property we want? That isn't clear to me.

In the rank 2 case, not every N has a MOS.

>This would only be a solution for rank 3 scales. What it's doing
>is pushing the rank down by 1 through octave equivalence. The
>general case of arbitrary ranks is still difficult. But it isn't
>clear anybody's really interested in that case.

I think you're saying, if the interval of equivalence is a multiple
of the period, we need to use 3-D. That still should be tractable.
In ranks > 3 things start getting hairy, but no, I don't care about
them (I don't even care about rank 3, but here I am).

>> We might start with {floor(sqrt(N) ceiling(sqrt(N)}, walk the
>> first term down and stop on the first GMP scale we find.
>
>One thing about taking a generator orthogonal to 3:1 is that it
>specifies something like tetrachordal similarity. It'd be nice if
>our scales were automatically tetrachordal -- a bonus over the
>rank 2 (MOS) case. Perhaps that means taking the largest number
>of steps for the 3:1-orthogonal generator, rather than making
>them equal. And without only taking that generator, which would
>give a lower rank solution.

Can I really make the period orthogonal to 2:1 and one of the
generators orthogonal to 3:1 at the same time? That is a neat
trick. Yes, in that case perhaps oblong in 3 beats my suggestion
of favoring near-squares.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/20/2010 12:30:41 PM

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

> > Wouldn't the simplest method be to simply come up with three step sizes, which is not difficult, and then construct your scales?
>
> Yes, that's what we're talking about. Constructing the scales. Both
> coming up with the three step sizes and constructing the scales looks
> difficult from where I'm sitting. If you disagree, post your
> algorithm.

Here's how I'd start:

Take the 3x3 matrix with columns consisting of the 5-limit 26, 31, and 46 vals, and invert it. This gives three fractional monzos, which you then temper with the 17-limit portent temperament. If you don't like fractional monzos, you can use 2, 5 and 7, which gives actual monzos and the same result. Calling these c26, c31, and c46 then the three steps are c26+c46, c31+c46, c26+c31+c46. Using the pure octaves TOP-RMS, those step sizes are 27.1759, 21.5541, 32.8436, and the count for them is 15, 20, and 11.

🔗robert <robertthomasmartin@yahoo.com>

10/20/2010 3:23:00 PM

I have taken the liberty of uploading all of these files to the Files section except Algorithms for Matrix Canonical Forms which is too large at 6MBs to fit. Let me know if you want this file and/or want me to delete any/all of the aforementioned files.

--- In tuning-math@yahoogroups.com, "robert" <robertthomasmartin@...> wrote:
>
> I have added "Commutators in the Special and General Linear Groups" by Robert Charles Thompson (PhD thesis 1960) to the Files section but I will delete it if it is of no use to you. I also have files for:
> A Complete Set of Unitary Invariants for 3x3 Complex Matrices.
> Some Matrix Factorization Theorems 1.
> Some Matrix Factorization Theorems 2.
> The Matrix Cookbook.
> Algorithms for Matrix Canonical Forms.
> A Concise Guide to Hadamard Matrices.
> Some of which I can add or send to you if you think it might help.
>
> --- In tuning-math@yahoogroups.com, Graham Breed <gbreed@> wrote:
> >
> > On 20 October 2010 12:37, Carl Lumma <carl@> wrote:
> >
> > > I don't know much of anything about rank 3 temperaments, but I
> > > assume there's a period and two generators of known size.  If the
> > > problem is finding a scale of size N... we have a 2-D lattice of
> > > generators (ignoring the period), the possible factorizations
> > > of N into two positive integers and for each of those excepting
> > > {sqrt(N) sqrt(N)} two rectangles on this lattice of generators.
> > > Test all the rectangles for GMP and return those that have it,
> > > if any.  No?
> >
> > Right, yes, that'd probably work. For any given period, you can
> > choose an infinite number of generator pairs. But you can define one
> > of them to be orthogonal to the 3:1, the same way the period's defined
> > to be orthogonal to the 2:1. That's essentially the Hermite normal
> > form. You may want to reduce every generator to be within the period,
> > and you still have other choices, but I'm not sure they'd affect your
> > algorithm anyway. So we can say there are two well known generators.
> >
> > I'm not sure what the sqrt(N) means. There are going to be about N
> > different scales you get from this, which is manageable. Can we be
> > sure that one will have the property we want? That isn't clear to me.
> >
> > This would only be a solution for rank 3 scales. What it's doing is
> > pushing the rank down by 1 through octave equivalence. The general
> > case of arbitrary ranks is still difficult. But it isn't clear
> > anybody's really interested in that case.
> >
> > > We might start with {floor(sqrt(N) ceiling(sqrt(N)}, walk the first
> > > term down and stop on the first GMP scale we find.  -Carl
> >
> > One thing about taking a generator orthogonal to 3:1 is that it
> > specifies something like tetrachordal similarity. It'd be nice if our
> > scales were automatically tetrachordal -- a bonus over the rank 2
> > (MOS) case. Perhaps that means taking the largest number of steps for
> > the 3:1-orthogonal generator, rather than making them equal. And
> > without only taking that generator, which would give a lower rank
> > solution.
> >
> >
> > Graham
> >
>

🔗Carl Lumma <carl@lumma.org>

10/20/2010 4:07:04 PM

And I've taken the liberty of moving them into a folder for you:

/tuning-math/files/RobertThomasMartin/

Except the ones I deemed too large, which I deleted.

-Carl

Robert wrote:

>I have taken the liberty of uploading all of these files to the Files
>section except Algorithms for Matrix Canonical Forms which is too
>large at 6MBs to fit. Let me know if you want this file and/or want me
>to delete any/all of the aforementioned files.
>
>--- In tuning-math@yahoogroups.com, "robert" <robertthomasmartin@...> wrote:
>>
>> I have added "Commutators in the Special and General Linear Groups"
>> by Robert Charles Thompson (PhD thesis 1960) to the Files section but
>> I will delete it if it is of no use to you. I also have files for:
>> A Complete Set of Unitary Invariants for 3x3 Complex Matrices.
>> Some Matrix Factorization Theorems 1.
>> Some Matrix Factorization Theorems 2.
>> The Matrix Cookbook.
>> Algorithms for Matrix Canonical Forms.
>> A Concise Guide to Hadamard Matrices.
>> Some of which I can add or send to you if you think it might help.
>

🔗robert <robertthomasmartin@yahoo.com>

10/20/2010 4:55:42 PM

I thought you might have forgotten one so I added it because it was Part 1 of 2 Parts. So sorry. Do you want me to delete Part 1?

--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>
> And I've taken the liberty of moving them into a folder for you:
>
> /tuning-math/files/RobertThomasMartin/
>
> Except the ones I deemed too large, which I deleted.
>
> -Carl
>
> Robert wrote:
>
> >I have taken the liberty of uploading all of these files to the Files
> >section except Algorithms for Matrix Canonical Forms which is too
> >large at 6MBs to fit. Let me know if you want this file and/or want me
> >to delete any/all of the aforementioned files.
> >
> >--- In tuning-math@yahoogroups.com, "robert" <robertthomasmartin@> wrote:
> >>
> >> I have added "Commutators in the Special and General Linear Groups"
> >> by Robert Charles Thompson (PhD thesis 1960) to the Files section but
> >> I will delete it if it is of no use to you. I also have files for:
> >> A Complete Set of Unitary Invariants for 3x3 Complex Matrices.
> >> Some Matrix Factorization Theorems 1.
> >> Some Matrix Factorization Theorems 2.
> >> The Matrix Cookbook.
> >> Algorithms for Matrix Canonical Forms.
> >> A Concise Guide to Hadamard Matrices.
> >> Some of which I can add or send to you if you think it might help.
> >
>

🔗Carl Lumma <carl@lumma.org>

10/20/2010 5:10:49 PM

That's cool, thanks. -Carl

At 04:55 PM 10/20/2010, you wrote:
>I thought you might have forgotten one so I added it because it was
>Part 1 of 2 Parts. So sorry. Do you want me to delete Part 1?
>
>--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>>
>> And I've taken the liberty of moving them into a folder for you:
>>
>> /tuning-math/files/RobertThomasMartin/
>>
>> Except the ones I deemed too large, which I deleted.
>>
>> -Carl
>>
>> Robert wrote:
>>
>> >I have taken the liberty of uploading all of these files to the Files
>> >section except Algorithms for Matrix Canonical Forms which is too
>> >large at 6MBs to fit. Let me know if you want this file and/or want me
>> >to delete any/all of the aforementioned files.
>> >
>> >--- In tuning-math@yahoogroups.com, "robert" <robertthomasmartin@> wrote:
>> >>
>> >> I have added "Commutators in the Special and General Linear Groups"
>> >> by Robert Charles Thompson (PhD thesis 1960) to the Files section but
>> >> I will delete it if it is of no use to you. I also have files for:
>> >> A Complete Set of Unitary Invariants for 3x3 Complex Matrices.
>> >> Some Matrix Factorization Theorems 1.
>> >> Some Matrix Factorization Theorems 2.
>> >> The Matrix Cookbook.
>> >> Algorithms for Matrix Canonical Forms.
>> >> A Concise Guide to Hadamard Matrices.
>> >> Some of which I can add or send to you if you think it might help.
>> >
>>

🔗robert <robertthomasmartin@yahoo.com>

10/20/2010 5:57:50 PM

Ok. In all fairness I should point out that these papers are all totally beyond my understanding and maths ability. I came across them using keywords like matrix, matrices, lattice, unimodular etc and I uploaded them to my Box.net library which I share with 27 other persons. They might eventually appear at Jason's mega library at:
http://gfax.ch/files/Literature/music/
If they do you might want to delete them from your Files section to create extra space.

--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>
> That's cool, thanks. -Carl
>
> At 04:55 PM 10/20/2010, you wrote:
> >I thought you might have forgotten one so I added it because it was
> >Part 1 of 2 Parts. So sorry. Do you want me to delete Part 1?
> >
> >--- In tuning-math@yahoogroups.com, Carl Lumma <carl@> wrote:
> >>
> >> And I've taken the liberty of moving them into a folder for you:
> >>
> >> /tuning-math/files/RobertThomasMartin/
> >>
> >> Except the ones I deemed too large, which I deleted.
> >>
> >> -Carl
> >>
> >> Robert wrote:
> >>
> >> >I have taken the liberty of uploading all of these files to the Files
> >> >section except Algorithms for Matrix Canonical Forms which is too
> >> >large at 6MBs to fit. Let me know if you want this file and/or want me
> >> >to delete any/all of the aforementioned files.
> >> >
> >> >--- In tuning-math@yahoogroups.com, "robert" <robertthomasmartin@> wrote:
> >> >>
> >> >> I have added "Commutators in the Special and General Linear Groups"
> >> >> by Robert Charles Thompson (PhD thesis 1960) to the Files section but
> >> >> I will delete it if it is of no use to you. I also have files for:
> >> >> A Complete Set of Unitary Invariants for 3x3 Complex Matrices.
> >> >> Some Matrix Factorization Theorems 1.
> >> >> Some Matrix Factorization Theorems 2.
> >> >> The Matrix Cookbook.
> >> >> Algorithms for Matrix Canonical Forms.
> >> >> A Concise Guide to Hadamard Matrices.
> >> >> Some of which I can add or send to you if you think it might help.
> >> >
> >>
>

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 12:00:29 AM

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

> Calling these c26, c31, and c46 then the three steps are c26+c46, c31+c46, c26+c31+c46. Using the pure octaves TOP-RMS, those step sizes are 27.1759, 21.5541, 32.8436, and the count for them is 15, 20, and 11.

You can then break apart the larger step in a MOS to get to this. For instance the valentine (31&46) MOS is (sLL)^14 sLLL, and we could start by always breaking up the L in the same way.

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 12:24:54 AM

--- In tuning-math@yahoogroups.com, "genewardsmith" <genewardsmith@...> wrote:
>
> You can then break apart the larger step in a MOS to get to this. For instance the valentine (31&46) MOS is (sLL)^14 sLLL, and we could start by always breaking up the L in the same way.
>

Sorry, the target number is 46, so I should have said start from the 31 note MOS, (Ls)^14 Lss, and break apart the 15 L steps to get 46 notes.

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 12:39:03 AM

--- In tuning-math@yahoogroups.com, "genewardsmith" <genewardsmith@...> wrote:
>
>
>
> --- In tuning-math@yahoogroups.com, "genewardsmith" <genewardsmith@> wrote:
> >
> > You can then break apart the larger step in a MOS to get to this. For instance the valentine (31&46) MOS is (sLL)^14 sLLL, and we could start by always breaking up the L in the same way.
> >
>
> Sorry, the target number is 46, so I should have said start from the 31 note MOS, (Ls)^14 Lss, and break apart the 15 L steps to get 46 notes.

Doesn't work, as the counts for small, medium and large steps come out wrong.

🔗Graham Breed <gbreed@gmail.com>

10/21/2010 9:55:44 AM

Carl Lumma <carl@lumma.org> wrote:
> Graham wrote:
>
> >I'm not sure what the sqrt(N) means.
>
> When sqrt(N) is an integer, there is a square rectangle
> and hence only one rectangle for that factorization. All
> other factorizations have two rectangles, oblong in one
> axis or the other.

I've realized that these are looking very much like
periodicity blocks. So I'm looking into them. The
archives promise an algorithm here:

http://sonic-arts.org/td/erlich/intropblock3.htm

I don't see any reason why they can't be adapted from
5-limit JI to arbitrary rank 3 temperaments, anyway.

> >There are going to be about N different scales you get
> >from this, which is manageable. Can we be sure that one
> >will have the property we want? That isn't clear to me.
>
> In the rank 2 case, not every N has a MOS.

Every N from d has an MOS. They may not belong to the
right temperament class. The basis my software comes up
with is bound to work, though, by definition. Any
unimodular transformation of it will also work, because it
avoids contorsion. That's why I'm insisting on unimodular
transformations for all ranks.

> >This would only be a solution for rank 3 scales. What
> >it's doing is pushing the rank down by 1 through octave
> >equivalence. The general case of arbitrary ranks is
> >still difficult. But it isn't clear anybody's really
> >interested in that case.
>
> I think you're saying, if the interval of equivalence is
> a multiple of the period, we need to use 3-D. That still
> should be tractable. In ranks > 3 things start getting
> hairy, but no, I don't care about them (I don't even care
> about rank 3, but here I am).

No, the period is defined so that the interval of
equivalence is a multiple of it. So a rank 3 problem can
always be reduced to 2-D, which is useful. But a rank 4
problem is still 3-D. There's no general solution.

I put off rank 3 for a long time. My website supports
arbitrary ranks now because the algorithms generalize
without much trouble. It's time to look at the scales
because Caleb is asking about them in another place. I can
see the argument for rank 4 being a good deal less
interesting, but still, a good algorithm will generalize.
I don't see why periodicity blocks wouldn't, provided they
work properly with JI.

> >One thing about taking a generator orthogonal to 3:1 is
> >that it specifies something like tetrachordal
> >similarity. It'd be nice if our scales were
> >automatically tetrachordal -- a bonus over the rank 2
> >(MOS) case. Perhaps that means taking the largest
> >number of steps for the 3:1-orthogonal generator, rather
> >than making them equal. And without only taking that
> >generator, which would give a lower rank solution.
>
> Can I really make the period orthogonal to 2:1 and one of
> the generators orthogonal to 3:1 at the same time? That
> is a neat trick. Yes, in that case perhaps oblong in 3
> beats my suggestion of favoring near-squares.

I should have said "parallel" one time there. You can make
one generator parallel to 2:1 and the other parallel to
3:1. The remaining generator is then orthogonal to both of
them. And, yes, it usually works. Sometimes 3:1 is
defined parallel to 2:1 so you have to drop down to the
first independent prime. You can recognize such cases
because there are two leading zeros in the second row of
the reduced mapping, as on my website. The best example I
can think of right now is this Mystery permutation:

http://x31eq.com/cgi-bin/rt.cgi?ets=29+58+87&limit=17

The Hermite generators would correspond to a step of
29-equal, a tempered 5:1, and a tempered 17:1.

Note that there's also a happy band of rank 3 temperaments
where the three Hermite generators are approximations to
the primes 2, 3, and 5. They're the equivalent of meantone
and schismatic, which can be considered as Pythagorean
extensions. They have the same melodic structure as
5-limit JI but allow you to bring in higher primes. You
recognize them because the left hand square of the Hermite
normal form is the identity matrix. Marvel is an example:

http://x31eq.com/cgi-bin/rt.cgi?ets=19++22+31&limit=7

Graham

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 11:19:56 AM

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

> I've realized that these are looking very much like
> periodicity blocks. So I'm looking into them. The
> archives promise an algorithm here:
>
> http://sonic-arts.org/td/erlich/intropblock3.htm

I never finished the article, but there's also this:

http://xenharmonic.wikispaces.com/Fokker+blocks

> I put off rank 3 for a long time. My website supports
> arbitrary ranks now because the algorithms generalize
> without much trouble. It's time to look at the scales
> because Caleb is asking about them in another place.

Rank three is really quite interesting. Hobbits were cooked up to supply one answer to the scale question, but obviously there's much more to be said.

I can
> see the argument for rank 4 being a good deal less
> interesting, but still, a good algorithm will generalize.
> I don't see why periodicity blocks wouldn't, provided they
> work properly with JI.

They do.

> > >One thing about taking a generator orthogonal to 3:1 is

What do you two mean by "orthogonal" and parallel in this context? I've been unable to understand your exchange on this topic.

> Note that there's also a happy band of rank 3 temperaments
> where the three Hermite generators are approximations to
> the primes 2, 3, and 5.

A survey of happy temperaments for higher rank would be interesting, perhaps. In the 7-limit the temperaments tempering 36/35, 525/512, 64/63, 875/864, 126/125, 225/224, 5120/5103, 65625/65536 and 4375/4374 are happy. Of these, 64/63, 126/125, 225/224, 5120/5103 and 4375/4374 have been discussed and used. I've proposed "horwell" as the name for the comma 65625/65536, and it seems worth looking at; and 36/35, 525/512 or 875/874 could be just the thing for some people.

🔗Carl Lumma <carl@lumma.org>

10/21/2010 11:48:31 AM

Graham wrote:

>I've realized that these are looking very much like
>periodicity blocks. So I'm looking into them. The archives
>promise an algorithm here:
>
>http://sonic-arts.org/td/erlich/intropblock3.htm
>
>I don't see any reason why they can't be adapted from
>5-limit JI to arbitrary rank 3 temperaments, anyway.

In fact we already know 5-limit blocks are related to MOS,
through the Hypothesis. But there the intention is to temper,
so you look for small commas. Here we are staying rank 3 so
I think we want to look for GMP.

Alternatively we could untemper, find a good block, and
then retemper it down to rank 3 by taking out the smallest
comma each time. I think that's like taking the commas
of the temperament and leaving the three largest ones
untempered. Hm...

>> >There are going to be about N different scales you get
>> >from this, which is manageable. Can we be sure that one
>> >will have the property we want? That isn't clear to me.
>>
>> In the rank 2 case, not every N has a MOS.
>
>Every N from d has an MOS.

What's d?

>I should have said "parallel" one time there. You can make
>one generator parallel to 2:1 and the other parallel to
>3:1. The remaining generator is then orthogonal to both of
>them. And, yes, it usually works.

Thanks.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 12:11:42 PM

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

>Of these, 64/63, 126/125, 225/224, 5120/5103 and 4375/4374 have been discussed and used. I've proposed "horwell" as the name for the comma 65625/65536, and it seems worth looking at; and 36/35, 525/512 or 875/874 could be just the thing for some people.

525/512 tends pretty flat, but 875/864 has quite an acceptable tuning. It's a sort of competitor with 126/125, in that both work along the 6/5 axis. Put the two together and you get keemun.

🔗Graham Breed <gbreed@gmail.com>

10/21/2010 12:28:24 PM

"genewardsmith" <genewardsmith@sbcglobal.net> wrote:

> I never finished the article, but there's also this:
>
> http://xenharmonic.wikispaces.com/Fokker+blocks

I've opened it in another tab.

> Rank three is really quite interesting. Hobbits were
> cooked up to supply one answer to the scale question, but
> obviously there's much more to be said.

Hobbits as I understand them are harmonic objects that obey
the mapping. MOS scales are melodic objects that obey the
mapping, and so have useful harmonic properties.

> I can
> > see the argument for rank 4 being a good deal less
> > interesting, but still, a good algorithm will
> > generalize. I don't see why periodicity blocks
> > wouldn't, provided they work properly with JI.
>
> They do.

Does that mean periodicity blocks of just intonations of
arbitrary rank are guaranteed to have the generalized
Myhill property?

> > > >One thing about taking a generator orthogonal to 3:1
> > > >is
>
> What do you two mean by "orthogonal" and parallel in this
> context? I've been unable to understand your exchange on
> this topic.

By "parallel" I mean what you'd obviously expect: collinear
in a Euclidean space, having a wedge product of zero, being
linearly dependent. By "orthogonal" I mean roughly the
thing the wedge product gives you. And certainly linearly
independent.

This is my way out of the "things like unison vectors"
conundrum. I said that the equivalence interval looked a
lot like a unison vector, and the reason is that it defines
an orthogonality. When you temper out a unison vector, you
say that every collinear interval is to disappear, and so
you keep that part of interval space that's orthogonal to
it. The algebra, either adjoints or wedge products,
ensures this. Octave-equivalent space is defined by the
vectors orthogonal to the octave. When you define a
period/generator pair, the period is parallel to the
equivalence interval, and the generator orthogonal to it.
The algebra is the same as for defining the equivalence
interval to be a unison vector, but the common thread is
orthogonality, not tempering out or being unisonous.

Graham

🔗Graham Breed <gbreed@gmail.com>

10/21/2010 1:04:59 PM

Carl Lumma <carl@lumma.org> wrote:

> In fact we already know 5-limit blocks are related to MOS,
> through the Hypothesis. But there the intention is to
> temper, so you look for small commas. Here we are
> staying rank 3 so I think we want to look for GMP.

You don't need to temper a periodicity block. They're used
to find useful scales in just intonation. The commas may
be small but the chromatic unison vector needn't be. It
should be about the right size.

The unison vectors are steps in the scale, with the last
one implied by the octave repetition. The Fokker blocks
are chosen to be good distributions of those steps. That
can directly translate to tempered scales once we know what
step sizes we want.

> Alternatively we could untemper, find a good block, and
> then retemper it down to rank 3 by taking out the smallest
> comma each time. I think that's like taking the commas
> of the temperament and leaving the three largest ones
> untempered. Hm...

No need. There's nothing special about JI in the
definitions of periodicity blocks that I can see.

> >> In the rank 2 case, not every N has a MOS.
> >
> >Every N from d has an MOS.
>
> What's d?

It's the number of steps in the scale you're taking N
from. The diatonic scale is N=7 and d=5 or 12 or something
else. But not 31 which would give Mohajira.

Graham

🔗Carl Lumma <carl@lumma.org>

10/21/2010 1:34:05 PM

Graham wrote:

>The unison vectors are steps in the scale, with the last
>one implied by the octave repetition. The Fokker blocks
>are chosen to be good distributions of those steps. That
>can directly translate to tempered scales once we know what
>step sizes we want.

I thought the problem was to find a scale given a rank 3
wedgie and a scale cardinality (N).

>You don't need to temper a periodicity block. They're used
>to find useful scales in just intonation. The commas may
>be small but the chromatic unison vector needn't be. It
>should be about the right size.

We figured out before that the "chromatic" vector must be
larger than the "commatic" one for the block to be
epimorphic. By first finding a JI block in the primes of
the temperament and then removing all but the three largest
commas, I'm betting we get GMP or something close to it.

-Carl

🔗Carl Lumma <carl@lumma.org>

10/21/2010 1:34:31 PM

Graham wrote:

>This is my way out of the "things like unison vectors"
>conundrum. I said that the equivalence interval looked a
>lot like a unison vector, and the reason is that it defines
>an orthogonality. When you temper out a unison vector, you
>say that every collinear interval is to disappear, and so
>you keep that part of interval space that's orthogonal to
>it. The algebra, either adjoints or wedge products,
>ensures this. Octave-equivalent space is defined by the
>vectors orthogonal to the octave. When you define a
>period/generator pair, the period is parallel to the
>equivalence interval, and the generator orthogonal to it.
>The algebra is the same as for defining the equivalence
>interval to be a unison vector, but the common thread is
>orthogonality, not tempering out or being unisonous.

That's pretty cool. -Carl

🔗Graham Breed <gbreed@gmail.com>

10/21/2010 1:36:18 PM

"genewardsmith" <genewardsmith@sbcglobal.net> wrote:

> I never finished the article, but there's also this:
>
> http://xenharmonic.wikispaces.com/Fokker+blocks

I don't understand most of that, but I found this equation:

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

I think the symbols are:

ek: number of the kth generators per octave
P: number of notes in the scale per octave
e1: same as P
i: number of the note in the scale
ak: arbitrary constants
tk: size of the kth generator

As such, it looks like the algorithm I started using
that I found wasn't working. Maybe the difference is that
I was looking for only one step going up at the same time.
For rank 3, this gives three possibilities at each step:

2nd step goes up by 1, 3rd step stays the same
2nd step stays the same, 3rd step goes up by 1
2nd and 3rd steps both go up by 1

We know that the first step goes up by 1 each time. So the
third case, where both steps go up together, corresponds to
the diatonic step, which isn't a unison vector. At least,
this describe the canonical example of the 5-limit
based on a chromatic semitone and syntonic comma:

[0 0 0]
[1 1 0]
[2 1 1]
[3 2 1]
[4 3 2]
[5 4 2]
[6 4 3]
[7 5 3]

So my question is: what's to stop both steps staying the
same between two notes? That looks inevitable if 2(k2+k3)
< k1.

Graham

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 2:59:34 PM

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

> > I can
> > > see the argument for rank 4 being a good deal less
> > > interesting, but still, a good algorithm will
> > > generalize. I don't see why periodicity blocks
> > > wouldn't, provided they work properly with JI.
> >
> > They do.
>
> Does that mean periodicity blocks of just intonations of
> arbitrary rank are guaranteed to have the generalized
> Myhill property?

Sorry, no.

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 3:23:17 PM

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

> So my question is: what's to stop both steps staying the
> same between two notes? That looks inevitable if 2(k2+k3)
> < k1.

e1 represents the "chroma", each step of which corresponds to a step of the corresponding equal temperaments.

🔗Graham Breed <gbreed@gmail.com>

10/21/2010 4:09:43 PM

Carl Lumma <carl@lumma.org> wrote:

> I thought the problem was to find a scale given a rank 3
> wedgie and a scale cardinality (N).

Yes, what is the problem? What I want to do is add scales
to my website. So on the page showing a regular
temperament, there can be links to scales. We can use any
information on that page to find them. Most useful is the
matrix (Gene's icon I think) under "Equal Temperament
Mappings". This already gives us some choices for N and I
don't think we need to worry about any others.

Note: these are the best possible equal temperaments to
give the correct regular temperament without contorsion.
So they're a non-arbitrary place to start. If I want to
offer other cardinalities, I know what to do, so let's only
worry about the ones in that matrix.

So there are two problems now. One is to turn the matrix
of equal temperament mappings into one that describes the
steps that are going to make up the scale we want. That's
what the unimodular transformations are for. The other
problem is to find the optimal distribution of those
intervals, and that's what this sub-thread has been about.
At that point, we know that N is correct relative to the
given mappings. Wedgies don't enter into it.

Now, this could be implemented as a method of a linear
temperament object that takes N and returns a scale. But
that only needs to give sensible answers for certain values
of N. And, yes, it will fail to be sensible for some rank 2
cases. A 31 note scale from 7&5 won't work, and I don't
think it'll be an MOS.

> >You don't need to temper a periodicity block. They're
> >used to find useful scales in just intonation. The
> >commas may be small but the chromatic unison vector
> >needn't be. It should be about the right size.
>
> We figured out before that the "chromatic" vector must be
> larger than the "commatic" one for the block to be
> epimorphic. By first finding a JI block in the primes of
> the temperament and then removing all but the three
> largest commas, I'm betting we get GMP or something close
> to it.

If you want the three largest possible unison vectors (why
are you calling them commas when they aren't tempered out)
they can be defined without worrying about looking at all
the primes.

I think I've got the first step sorted out now. So here's
the idea:

I'll move to a periodicity block-style matrix because
that's easiest to explain. So we want the top row to be
the mapping for N notes to the octave, which we have
anyway. The other mappings correspond to unison vectors.
We want the total number of unison vectors in the scale to
sum to less than N, which means the sum of the left hand
column of the matrix should be less than 2N.

The row that doesn't correspond to a unison vector doesn't
have a name that I know of. So for this message I'll call
it Gerald.

The other constraints are that the new matrix should be a
unimodular transformation (by rows) of the old one and the
resulting "Step Tunings" should always be positive. I
forgot that second one before. It is important because you
can't expect a sensible scale otherwise.

It's always safe to subtract one column from another
provided the number of steps to the octave stays positive.
This is one of the operations that's guaranteed not to
alter the determinant. And reducing the number of steps
means increasing the size of the steps, so the sizes won't
become negative.

The first thing is to get the number of steps to the octave
for each unison vector to be less than N. You can do that
by subtracting the relevant multiple of Gerald. For
example, if we want 46 notes from 31&46&72, we note that 72
is larger than 46 and so replace it with 72 mod 46 which is
72-46 = 26.

Now we need to reduce the unison vectors so that they total
less than N to the octave. To do this, subtract one from
another as long as the condition isn't met. I think it's
best to keep the number of different steps to the octave as
near as possible to be equal, so I'll say replace the
most common step with the difference between the most and
least common. For rank 3, that's redundant, so for the
example replace 31 with 31-26=5. This gives us a 46&26&5
scale. In step sizes, that's 26&15&5.

At this point, we have as many unison vectors to the octave
as we can get. That's the same as having the smallest
possible unison vectors. But you suggested the largest
possible ones, so we can carry on reducing.

26&5 -> 21&5 -> 16&5 -> 11&5 -> 6&5 -> 5&1

Note that 15 got bypassed in this process. So we're not
visiting all possible equal temperaments.

The result is 5 of one unison vector, 1 of another, and the
other 40 steps to be the same size.

I don't know if that makes sense, but I think the algorithm
will work.

Graham

🔗Carl Lumma <carl@lumma.org>

10/21/2010 6:02:33 PM

Graham wrote:

>What I want to do is add scales
>to my website. So on the page showing a regular
>temperament, there can be links to scales.

I'm all for it!

I'll use this one from here out:

http://x31eq.com/cgi-bin/rt.cgi?ets=22_19_12&error=5.0&limit=7&invariant=1_2_1_0_2_1_0_0_-5

I asked a while back for RESTful URIs based on wedgies,
and I'll reiterate that now.

>We can use any
>information on that page to find them. Most useful is the
>matrix (Gene's icon I think) under "Equal Temperament
>Mappings". This already gives us some choices for N and I
>don't think we need to worry about any others.
>Note: these are the best possible equal temperaments to
>give the correct regular temperament without contorsion.
>So they're a non-arbitrary place to start.

Best how? Here are the patent vals N < 100 that temper out
225/224 (comma sequences are another thing I'd add to your
page before scales by the way):

(1 2 2 3)
(2 3 5 6)
(9 14 21 25)
(10 16 23 28)
(11 17 26 31)
(12 19 28 34)
(19 30 44 53)
(20 32 46 56)
(21 33 49 59)
(22 35 51 62)
(29 46 67 81)
(31 49 72 87)
(32 51 74 90)
(33 52 77 93)
(40 63 93 112)
(41 65 95 115)
(43 68 100 121)
(44 70 102 124)
(50 79 116 140)
(51 81 118 143)
(52 82 121 146)
(53 84 123 149)
(54 86 125 152)
(60 95 139 168)
(62 98 144 174)
(63 100 146 177)
(64 101 149 180)
(72 114 167 202)
(74 117 172 208)
(75 119 174 211)
(81 128 188 227)
(82 130 190 230)
(84 133 195 236)
(85 135 197 239)
(91 144 211 255)
(93 147 216 261)
(94 149 218 264)
(96 152 223 270)

Your three are certainly in there.

I'd give two scales, in .scl format, one for 5 <= N <= 10 and
one for 11 <= N <= 100. In each case, I'd use the N from the
logflat best val in that complexity range, do the 'rectangles
with GMP' thing, with the period parallel to 2 and a generator
parallel to 3 as you suggested (are you already doing that for
Generator Tunings?).

Failing that, an alternative is the JI block / unison vector
approach I suggested, where the r largest UVs on the list are
chromatic, r being the rank. The resulting scale ought to be
as small as possible if you start out with a list of UVs that
are as simple as possible. I don't know a list for marvel.
Presumably one could start with its comma sequence
http://lumma.org/tuning/gws/commaseq.htm
and backfill it.

>> We figured out before that the "chromatic" vector must be
>> larger than the "commatic" one for the block to be
>> epimorphic. By first finding a JI block in the primes of
>> the temperament and then removing all but the three
>> largest commas, I'm betting we get GMP or something close
>> to it.
>
>If you want the three largest possible unison vectors (why
>are you calling them commas when they aren't tempered out)

Sorry, chromas.

>I think I've got the first step sorted out now. So here's
>the idea:
>
>I'll move to a periodicity block-style matrix because
>that's easiest to explain. So we want the top row to be
>the mapping for N notes to the octave, which we have
>anyway. The other mappings correspond to unison vectors.
>We want the total number of unison vectors in the scale to
>sum to less than N, which means the sum of the left hand
>column of the matrix should be less than 2N.

You lost me. The number of UVs is pi(p) for a p-limit
temperament, no?

-Carl

🔗Carl Lumma <carl@lumma.org>

10/21/2010 6:50:17 PM

I wrote:

>Presumably one could start with its comma sequence
> http://lumma.org/tuning/gws/commaseq.htm
>and backfill it.

Looks like Gene's page

http://xenharmonic.wikispaces.com/Fokker+blocks

gives some good clues, but doesn't have all the
ingredients.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 6:59:33 PM

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

> So there are two problems now. One is to turn the matrix
> of equal temperament mappings into one that describes the
> steps that are going to make up the scale we want.

I've not seen any responses to my posting on how to obtain these.

> If you want the three largest possible unison vectors (why
> are you calling them commas when they aren't tempered out)

They *are* commas--they are commas of the val for the steps of the block. On the other hand they are not unisons and and are only vectors if you embed the monzos in a vector space, so "unison vector" is not very good terminology.

> This gives us a 46&26&5
> scale. In step sizes, that's 26&15&5.

I'll check on how the system I proposed works for 46&26&5.

> Note that 15 got bypassed in this process. So we're not
> visiting all possible equal temperaments.

Given that I showed 46&31&26 leads to an 11, 15, and 20 steps system, that should be clear.

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 7:57:18 PM

--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>
> Graham wrote:
>
> >What I want to do is add scales
> >to my website. So on the page showing a regular
> >temperament, there can be links to scales.
>
> I'm all for it!

I've started giving links to hobbit scales for some of the rank 3 temperaments on the xenwiki.

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 7:58:24 PM

--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>
> Looks like Gene's page
>
> http://xenharmonic.wikispaces.com/Fokker+blocks
>
> gives some good clues, but doesn't have all the
> ingredients.

Ingredients to do what?

🔗Carl Lumma <carl@lumma.org>

10/21/2010 8:07:38 PM

>> Looks like Gene's page
>>
>> http://xenharmonic.wikispaces.com/Fokker+blocks
>>
>> gives some good clues, but doesn't have all the
>> ingredients.
>
>Ingredients to do what?

Produce the UVs of a fokker block given a temperament
of arbitrary rank.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 9:42:08 PM

--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>
> >> Looks like Gene's page
> >>
> >> http://xenharmonic.wikispaces.com/Fokker+blocks
> >>
> >> gives some good clues, but doesn't have all the
> >> ingredients.
> >
> >Ingredients to do what?
>
> Produce the UVs of a fokker block given a temperament
> of arbitrary rank.

What's a UV?

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/21/2010 9:48:29 PM

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

> >Ingredients to do what?
>
> Produce the UVs of a fokker block given a temperament
> of arbitrary rank.

It occurs to me that UV could be short for that dubious term, "unison vector". If so, the problem does not seem to be very well-defined, so you might expand on it a little. Will any Fokker block fitting the temperament and with the correct number of notes do?

🔗Graham Breed <gbreed@gmail.com>

10/22/2010 12:12:17 AM

"genewardsmith" <genewardsmith@sbcglobal.net> wrote:
>
> --- In tuning-math@yahoogroups.com, Graham Breed
> <gbreed@...> wrote:
>
> > So there are two problems now. One is to turn the
> > matrix of equal temperament mappings into one that
> > describes the steps that are going to make up the scale
> > we want.
>
> I've not seen any responses to my posting on how to
> obtain these.

Was that the string of postings that ended with a "Doesn't
work"?

> > If you want the three largest possible unison vectors
> > (why are you calling them commas when they aren't
> > tempered out)
>
> They *are* commas--they are commas of the val for the
> steps of the block. On the other hand they are not
> unisons and and are only vectors if you embed the monzos
> in a vector space, so "unison vector" is not very good
> terminology.

It is a unison vector, which means it is unisonous. So
everything I said about them being scale steps was wrong.

It looks like the only constraint, then, is to get a
mapping for N-et and some mappings for ETs less than N that
are unimodular transformations of the original mappings.
So this part is looking easy. Am I missing anything?

The example of the diatonic has a left hand column 7, 5,
3. Because 5+3 is more than 7, that obviously doesn't do
any harm.

For the portent example, that leaves 46&31&26, which does
agree with one of your methods.

> > This gives us a 46&26&5
> > scale. In step sizes, that's 26&15&5.
>
> I'll check on how the system I proposed works for 46&26&5.

You could have a look, although it's not as interesting now.

> > Note that 15 got bypassed in this process. So we're not
> > visiting all possible equal temperaments.
>
> Given that I showed 46&31&26 leads to an 11, 15, and 20
> steps system, that should be clear.

I can see you say that, but not how you got it.

Graham

🔗Carl Lumma <carl@lumma.org>

10/22/2010 12:11:49 AM

Gene wrote:

>> Produce the UVs of a fokker block given a temperament
>> of arbitrary rank.
>
>It occurs to me that UV could be short for that dubious term,
>"unison vector".

Yessir. You can see I catch flak no matter what I call them.

>If so, the problem does not seem to be very well-defined, so
>you might expand on it a little. Will any Fokker block fitting the
>temperament and with the correct number of notes do?

I want a comma list that is a "comma sequence" with the front
snapped on. I think.

Maybe another way to say it is the TM-reduced basis of the
temperament kernel, if the temperament were extended to rank 1.
This page
http://xenharmonic.wikispaces.com/Fokker+blocks
seems to give a method for filling in the missing comma for
a codimension n-1 temperament. I would like to fill out three
missing commas for a codimension n-3 temperament (marvel).

Does that make any sense?

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/22/2010 12:26:19 AM

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

> > I've not seen any responses to my posting on how to
> > obtain these.
>
> Was that the string of postings that ended with a "Doesn't
> work"?

No, the one before that.

> It looks like the only constraint, then, is to get a
> mapping for N-et and some mappings for ETs less than N that
> are unimodular transformations of the original mappings.
> So this part is looking easy. Am I missing anything?

Not that I can see.

> > > This gives us a 46&26&5
> > > scale. In step sizes, that's 26&15&5.
> >
> > I'll check on how the system I proposed works for 46&26&5.
>
> You could have a look, although it's not as interesting now.

Didn't lead to anything new.

> > Given that I showed 46&31&26 leads to an 11, 15, and 20
> > steps system, that should be clear.
>
> I can see you say that, but not how you got it.

Which part are you talking about--the 11, 15, and 20 or the step sizes which go with them?

🔗Graham Breed <gbreed@gmail.com>

10/22/2010 12:36:11 AM

"genewardsmith" <genewardsmith@sbcglobal.net> wrote:

> > > Given that I showed 46&31&26 leads to an 11, 15, and
> > > 20 steps system, that should be clear.
> >
> > I can see you say that, but not how you got it.
>
> Which part are you talking about--the 11, 15, and 20 or
> the step sizes which go with them?

How you get from 46&31&26 to 11&15&20

🔗Graham Breed <gbreed@gmail.com>

10/22/2010 12:37:49 AM

Carl Lumma <carl@lumma.org> wrote:

> I asked a while back for RESTful URIs based on wedgies,
> and I'll reiterate that now.

You mean getting rid of the cgi-bin? That's not likely to
happen. Why bring wedgies up?

> >We can use any
> >information on that page to find them. Most useful is
> >the matrix (Gene's icon I think) under "Equal Temperament
> >Mappings". This already gives us some choices for N and I
> >don't think we need to worry about any others.
> >Note: these are the best possible equal temperaments to
> >give the correct regular temperament without contorsion.
> >So they're a non-arbitrary place to start.
>
> Best how? Here are the patent vals N < 100 that temper
> out 225/224 (comma sequences are another thing I'd add to
> your page before scales by the way):

Best in terms of having the lowest badness. What have
patent vals got to do with anything? What are comma
sequences?

> http://lumma.org/tuning/gws/commaseq.htm and backfill it.

Oh. That looks complicated.

The best way of finding the scales looks like Paul Erlich's
algorithm from the Gentle Introduction. All I need to do
is make the seeds more specific than a big chunk of the
lattice.

> >I'll move to a periodicity block-style matrix because
> >that's easiest to explain. So we want the top row to be
> >the mapping for N notes to the octave, which we have
> >anyway. The other mappings correspond to unison vectors.
> >We want the total number of unison vectors in the scale
> >to sum to less than N, which means the sum of the left
> >hand column of the matrix should be less than 2N.
>
> You lost me. The number of UVs is pi(p) for a p-limit
> temperament, no?

The number of distinct unison vectors. But they aren't
scale steps, so that paragraph was wrong.

Graham

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/22/2010 1:05:18 AM

--- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:
>
> "genewardsmith" <genewardsmith@...> wrote:
>
> > > > Given that I showed 46&31&26 leads to an 11, 15, and
> > > > 20 steps system, that should be clear.
> > >
> > > I can see you say that, but not how you got it.
> >
> > Which part are you talking about--the 11, 15, and 20 or
> > the step sizes which go with them?
>
> How you get from 46&31&26 to 11&15&20
>

31+26-46 = 11
46-31 = 15
46-26 = 20

The main point is that 46 appears once and only once in each sum. 46 corresponds to the chroma; that is, it corresponds to a single scale step. 26 and 31 correspond to a commatic or zero step; and (31+26-46) + (46-31) + (46-26) = 46.

🔗Carl Lumma <carl@lumma.org>

10/22/2010 1:10:58 AM

Graham wrote:

>> I asked a while back for RESTful URIs based on wedgies,
>> and I'll reiterate that now.
>
>You mean getting rid of the cgi-bin? That's not likely to
>happen. Why bring wedgies up?

1. The URL is too long
2. There's no way to tell which temperament it points to
3. I could never remember it

If you solve these, the cgi-bin is tolerable. Wedgies
uniquely identify temperaments and so are natural URI keys.

>The best way of finding the scales looks like Paul Erlich's
>algorithm from the Gentle Introduction. All I need to do
>is make the seeds more specific than a big chunk of the
>lattice.

I see an algorithm for turing UVs into a JI block. Not the
problem I think we're facing.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/22/2010 1:12:08 AM

--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
nel, if the temperament were extended to rank 1.
> This page
> http://xenharmonic.wikispaces.com/Fokker+blocks
> seems to give a method for filling in the missing comma for
> a codimension n-1 temperament. I would like to fill out three
> missing commas for a codimension n-3 temperament (marvel).
>
> Does that make any sense?

Seems like the most straightforward way would be to get the commas from a val tempering out 225/224, or whatever comma you are thinking of, which has the right number of steps to the octave for the scale you want.

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/22/2010 1:20:20 AM

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

> If you solve these, the cgi-bin is tolerable. Wedgies
> uniquely identify temperaments and so are natural URI keys.

Graham has been using a Hermite reduction lately, I thought.

🔗Graham Breed <gbreed@gmail.com>

10/22/2010 2:21:53 AM

"genewardsmith" <genewardsmith@sbcglobal.net> wrote:
>
>
> --- In tuning-math@yahoogroups.com, Carl Lumma <carl@...>
> wrote:
>
> > If you solve these, the cgi-bin is tolerable. Wedgies
> > uniquely identify temperaments and so are natural URI
> > keys.
>
> Graham has been using a Hermite reduction lately, I
> thought.

Right, the "invariant" is a linearization of the Reduced
Mapping, which looks like Hermite normal form. The URLs
aren't supposed to be hand-edited, but you could give it a
try. Please leave out the "error" term because that's to
avoid inefficient calculations and you could specify
even less efficient calculations if you get it wrong.

Graham

🔗Graham Breed <gbreed@gmail.com>

10/22/2010 3:12:04 AM

Carl Lumma <carl@lumma.org> wrote:
> Graham wrote:

> >The best way of finding the scales looks like Paul
> >Erlich's algorithm from the Gentle Introduction. All I
> >need to do is make the seeds more specific than a big
> >chunk of the lattice.
>
> I see an algorithm for turing UVs into a JI block. Not
> the problem I think we're facing.

The UVs are in the adjoint of the matrix of mappings we
start with. I think it's possible to avoid the
double-adjoint to get the "inverse" Paul talks about.
Here's a Python method, which won't work standalone, and
will have the indentation screwed up on the web interface.
But, anyway, here it is:

def periodicityBlock(self):
import matfunc
N = self.melody[0][0]
rank = len(self.melody)
mapping = matfunc.Matrix(self.melody)

transform = matfunc.Matrix([[0]*rank]*rank)
transform[0][0] = 1
for i in range(1, rank):
transform[i][i] = N
transform[i][0] = -mapping[i][0]
cells = transform.tr()*(1/N)

def incell(vec):
for each in
matfunc.Matrix([vec]).mmul(cells)[0]: if not (0 <=
each <= 1): return False
return True

octaves = [mapping[i][0] for i in range(rank)]

def possibleVectors(i, ets):
if ets:
more = possibleVectors(i, ets[1:])
if (i*ets[0])%N == 0:
return [[(i*ets[0])//N] + each for each
in more] lower = int(floor(i*ets[0]/N))
higher = int(ceil(i*ets[0]/N))
return ([[lower] + each for each in more] +
[[higher] + each for each in more])
return [[]]

for i in range(1,N+1):
yield filter(incell, possibleVectors(i,
octaves))[0]

I still get 4 step sizes for 46&31&26. Also for 46&15&26.
And I still get 3 step sizes for 46&15&5.

Here's the 17-limit 46&31&26 periodicity block:

32.862
65.724
87.290
114.482
136.048
168.910
184.805
217.667
250.529
266.425
299.287
320.853
348.044
369.610
402.473
429.664
451.230
484.092
499.987
532.849
554.416
581.607
603.173
636.035
663.226
684.793
717.655
733.550
766.412
787.978
815.170
848.032
869.598
896.789
918.355
951.217
967.113
999.975
1032.837
1048.732
1081.594
1103.160
1130.352
1151.918
1184.780
1200.675

It looks like the 46&31&72 block is identical, so any
choice of equal temperaments will do.

Graham

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/22/2010 9:58:41 AM

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

> Here's the 17-limit 46&31&26 periodicity block:

"The" periodicty block?

🔗Graham Breed <gbreed@gmail.com>

10/22/2010 10:08:16 AM

"genewardsmith" <genewardsmith@sbcglobal.net> wrote:
>
>
> --- In tuning-math@yahoogroups.com, Graham Breed
> <gbreed@...> wrote:
>
> > Here's the 17-limit 46&31&26 periodicity block:
>
> "The" periodicty block?

The Fokker block.

Graham

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/22/2010 10:59:49 AM

--- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:
>
> "genewardsmith" <genewardsmith@...> wrote:
> >
> >
> > --- In tuning-math@yahoogroups.com, Graham Breed
> > <gbreed@> wrote:
> >
> > > Here's the 17-limit 46&31&26 periodicity block:
> >
> > "The" periodicty block?
>
> The Fokker block.

I meant there's more than one of them.

🔗Carl Lumma <carl@lumma.org>

10/22/2010 12:25:58 PM

>> This page
>> http://xenharmonic.wikispaces.com/Fokker+blocks
>> seems to give a method for filling in the missing comma for
>> a codimension n-1 temperament. I would like to fill out three
>> missing commas for a codimension n-3 temperament (marvel).
>>
>> Does that make any sense?
>
>Seems like the most straightforward way would be to get the commas
>from a val tempering out 225/224, or whatever comma you are thinking
>of, which has the right number of steps to the octave for the
>scale you want.

Ok cool, so here's my suggestion.

Problem: Given a p-limit temperament T of rank R and a complexity
cuttof N, return a generalized MOS scale for it with no more than
N notes/octave.

Solution:

1. Find the TM-reduced basis for T. Graham, can you
add this to your site?

2. Find the logflat best val < N which sends the commas
of the TM-reduced basis to zero.

3. Find the TM-reduced basis of this val.

4. Use those commas to create a Fokker block, for instance
with Paul's algorithm from the final installment of his
Gentle Introduction.

5. Retune the lattice using the TOP-RMS "Tuning map"
for T from Graham's site.

6. Your Fokker block should now make a scale with R unique
step sizes in all interval classes (up to the period).
Ok, maybe not, but I think it's worth a try. You'll have
to identify duplicate pitches after retuning the lattice,
and you might have to detect rounding errors there...

-Carl

🔗Carl Lumma <carl@lumma.org>

10/22/2010 12:26:53 PM

Graham wrote:

>Right, the "invariant" is a linearization of the Reduced
>Mapping, which looks like Hermite normal form. The URLs
>aren't supposed to be hand-edited,

Not RESTful. Handslap for you, sir. -Carl

🔗Carl Lumma <carl@lumma.org>

10/22/2010 12:31:18 PM

Graham wrote:

>The UVs are in the adjoint of the matrix of mappings we
>start with.

Does this wind up doing the same thing as what I just posted?

-Carl

🔗Graham Breed <gbreed@gmail.com>

10/23/2010 1:06:16 AM

On 22 October 2010 23:31, Carl Lumma <carl@lumma.org> wrote:
> Graham wrote:
>
>>The UVs are in the adjoint of the matrix of mappings we
>>start with.
>
> Does this wind up doing the same thing as what I just posted?

The UVs won't be TM-reduced. I'm not sure what criteria for mappings
corresponds to Tenney reduction of intervals. Maybe minimal scalar
complexity (roughly).

You're also adding a load of commatic UVs, which don't contribute to
the final scale. They may affect the algebra before you temper them
out. I doubt they add any interesting properties.

Graham

🔗Graham Breed <gbreed@gmail.com>

10/23/2010 1:27:33 AM

On 22 October 2010 21:59, genewardsmith <genewardsmith@sbcglobal.net> wrote:
>
> --- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:

>> The Fokker block.
>
> I meant there's more than one of them.

Then the context of my original message should have indicated which
one I was talking about.

I thought there was generally only one Fokker block for a given set of
unison vectors, following Paul's algorithm, but sometimes you get two
notes that fit the extremes of the criteria and you need a tie-breaker
rule. There are different tunings, of course.

Graham

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/23/2010 1:35:29 AM

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

> I thought there was generally only one Fokker block for a given set of
> unison vectors, following Paul's algorithm,

No, there are typically a lot of them.

🔗Graham Breed <gbreed@gmail.com>

10/23/2010 1:42:58 AM

On 23 October 2010 12:35, genewardsmith <genewardsmith@sbcglobal.net> wrote:
>
> --- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:
>
>> I thought there was generally only one Fokker block for a given set of
>> unison vectors, following Paul's algorithm,
>
> No, there are typically a lot of them.

Are you going to explain how this paradoxical situation occurs, or
shall we keep exchanging terse contradictions?

Graham

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/23/2010 3:17:38 AM

--- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:
>
> On 23 October 2010 12:35, genewardsmith <genewardsmith@...> wrote:
> >
> > --- In tuning-math@yahoogroups.com, Graham Breed <gbreed@> wrote:
> >
> >> I thought there was generally only one Fokker block for a given set of
> >> unison vectors, following Paul's algorithm,
> >
> > No, there are typically a lot of them.
>
> Are you going to explain how this paradoxical situation occurs, or
> shall we keep exchanging terse contradictions?

It's not a contradiction--you have a fundamental region, defined by a parallelepiped, which you can move without change of orientation to various positions. If you want a complete collection of the Fokker blocks, you are much better off adopting the method in the xenwiki article than messing around with this stuff, however.

🔗Graham Breed <gbreed@gmail.com>

10/23/2010 3:49:37 AM

On 23 October 2010 14:17, genewardsmith <genewardsmith@sbcglobal.net> wrote:
>
>
> --- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:
>>
>> On 23 October 2010 12:35, genewardsmith <genewardsmith@...> wrote:
>> >
>> > --- In tuning-math@yahoogroups.com, Graham Breed <gbreed@> wrote:
>> >
>> >> I thought there was generally only one Fokker block for a given set of
>> >> unison vectors, following Paul's algorithm,
>> >
>> > No, there are typically a lot of them.
>>
>> Are you going to explain how this paradoxical situation occurs, or
>> shall we keep exchanging terse contradictions?
>
> It's not a contradiction--you have a fundamental region, defined by a parallelepiped, which you can move without change of orientation to various positions. If you want a complete collection of the Fokker blocks, you are much better off adopting the method in the xenwiki article than messing around with this stuff, however.

There's nothing about moving in Paul's algorithm. It uses a single
block defined by the unison vectors.

Is the xenwiki algorithm equivalent to Paul's with moving
parallelepipeds then? It looks like what I was doing in the first
place, with merging maximally even scales.

Graham

🔗Carl Lumma <carl@lumma.org>

10/23/2010 11:11:00 AM

Graham wrote:

>You're also adding a load of commatic UVs, which don't contribute to
>the final scale. They may affect the algebra before you temper them
>out. I doubt they add any interesting properties.

n = pi(p)
r = rank

I don't think so. I think I'm keeping the same commatic UVs as
the original temperament, and adding n - r new ones, which are
all chromatic in the final scale. That's the point. The procedure
finds the best chromatic UVs for the original commatic UVs.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/23/2010 11:14:10 AM

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

> There's nothing about moving in Paul's algorithm. It uses a single
> block defined by the unison vectors.

I din't know what exactly you mean by "Paul's algorithm", but he did discuss positioning the block somewhere. There's no positioning which has any claim to be special or better.

> Is the xenwiki algorithm equivalent to Paul's with moving
> parallelepipeds then?

Yes.

🔗Carl Lumma <carl@lumma.org>

10/24/2010 1:57:03 AM

I wrote:

>I don't think so. I think I'm keeping the same commatic UVs as
>the original temperament, and adding n - r new ones,

Sorry, adding r - 1 new ones.

In the 5-limit meantone case, we get 2GMP (Myhill) from one
commatic and one chromatic UV. The latter is the difference
between the L and s intervals in each interval class.

In the 7-limit marvel case, we're hoping for 3GMP from one
commatic and two chromatic -- that'd make sense because we
need two chroma to separate L, m, and s.

-Carl

🔗Carl Lumma <carl@lumma.org>

10/24/2010 2:37:43 AM

> I'm not sure what criteria for mappings
>corresponds to Tenney reduction of intervals. Maybe minimal scalar
>complexity (roughly).

Yes, that's the whole idea. -Carl

🔗Graham Breed <gbreed@gmail.com>

10/24/2010 3:31:32 AM

On 24 October 2010 13:37, Carl Lumma <carl@lumma.org> wrote:
>> I'm not sure what criteria for mappings
>>corresponds to Tenney reduction of intervals.  Maybe minimal scalar
>>complexity (roughly).
>
> Yes, that's the whole idea.  -Carl

So if you want vals of minimal complexity, you can look for them. No
need to minimize a larger set of unison vectors, some of them ghostly
commas that you're going to throw away, in order to do it.

Graham

🔗Graham Breed <gbreed@gmail.com>

10/24/2010 3:47:23 AM

On 23 October 2010 22:14, genewardsmith <genewardsmith@sbcglobal.net> wrote:
>
> --- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:
>
>> There's nothing about moving in Paul's algorithm.  It uses a single
>> block defined by the unison vectors.
>
> I din't know what exactly you mean by "Paul's algorithm", but he did discuss positioning the block somewhere. There's no positioning which has any claim to be special or better.

Then how you can be sure it gives multiple results? Here's the link again:

http://sonic-arts.org/td/erlich/intropblock3.htm

The unit cubes are defined as between 0 an 1. That's probably where
you could position things differently. But he doesn't. And that's
the algorithm I'm following (maybe not perfectly) and always said I
was following.

>> Is the xenwiki algorithm equivalent to Paul's with moving
>> parallelepipeds then?
>
> Yes.

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

It looks like what I was originally using, and trying different
parameters to minimize the number of distinct scale steps. So mixing
maximally even templates and periodicity blocks are the same
generalization of MOS scales. But they don't always have a
generalization of Myhill's property.

Commatic unison vectors will disappear and not contribute to the
result at all. But maybe they imply a change in orientation for
Paul's formula. I'll have to ponder that.

Notice that all we need the temperament to give us in either case is:

1) The total number of steps to the octave.

2) The number of steps to the octave for each generating ET.

3) The tempered step size for each generating ET, as on the website.

The unison vectors are implied by this.

Graham

🔗Carl Lumma <carl@lumma.org>

10/24/2010 10:33:29 AM

Graham wrote:

>>> I'm not sure what criteria for mappings
>>>corresponds to Tenney reduction of intervals. Maybe minimal scalar
>>>complexity (roughly).
>>
>> Yes, that's the whole idea. -Carl
>
>So if you want vals of minimal complexity, you can look for them. No
>need to minimize a larger set of unison vectors, some of them ghostly
>commas that you're going to throw away, in order to do it.

I have no idea what you mean. I'm not throwing away any commas.
I'm finding the natural chroma for the scale.

-Carl

🔗Graham Breed <gbreed@gmail.com>

10/25/2010 2:34:55 AM

On 24 October 2010 21:33, Carl Lumma <carl@lumma.org> wrote:

> I have no idea what you mean. I'm not throwing away any commas.
> I'm finding the natural chroma for the scale.

The message I thought I was replying to says this:

"Problem: Given a p-limit temperament T of rank R and a complexity
cuttof N, return a generalized MOS scale for it with no more than
N notes/octave."

So it looks like you don't have a scale. You're trying to find a
scale. After that you said:

"1. Find the TM-reduced basis for T. Graham, can you
add this to your site?"

A TM-reduced basis for a temperament is a set of commatic unison
vectors, isn't it? They're commas you're going to throw away. I said
you don't need them.

To make things clear, here's the Python code for generating Fokker
blocks according to Paul's algorithm:

from __future__ import division

def fokkerBlock(*octaves):
return zip(*[maximallyEven(octaves[0], j, -1) for j in octaves])

def maximallyEven(d, n, rotation=0):
"""A maximally even d from n scale.
Rotations from 1 to d should cover all possibilities.
"""
return [(i*n + n + rotation%d)//d for i in range(d)]

This is all you need to find scales with generalized Myhill's
property. There will be constraints on the valid tunings that relate
to the mapping from JI. But you don't need commatic unison vectors
for that. The commatic unison vectors completely disappear from the
problem.

For a diatonic you do fokkerBlock(7, 5, 3), and for a Portent scale
fokkerBlock(46, 72, 31). You can try different numbers until you get
a scale you like.

Here's a function that verifies the result complies with Paul's condition:

def checkFokker(*octaves):
N = octaves[0]
for row in fokkerBlock(*octaves):
for j, octave in enumerate(octaves):
assert 0 <= N*row[j] - row[0]*octave < N

It may not be obvious that this is Paul's unit cell. If Gene doesn't
cover it, I might have to write it up. But that's how you do it.

Graham

🔗Carl Lumma <carl@lumma.org>

10/25/2010 2:46:39 AM

Graham wrote:

>"1. Find the TM-reduced basis for T. Graham, can you
>add this to your site?"
>
>A TM-reduced basis for a temperament is a set of commatic unison
>vectors, isn't it?

I turn them into commatic unison vectors in a particular
Fokker block setting, yes. Anyway, TM-reduced bases are useful
for more than this particular application.

>To make things clear, here's the Python code for generating Fokker
>blocks according to Paul's algorithm:
>
>from __future__ import division
>
>def fokkerBlock(*octaves):
> return zip(*[maximallyEven(octaves[0], j, -1) for j in octaves])
>
>def maximallyEven(d, n, rotation=0):
> """A maximally even d from n scale.
> Rotations from 1 to d should cover all possibilities.
> """
> return [(i*n + n + rotation%d)//d for i in range(d)]

Thanks!

>This is all you need to find scales with generalized Myhill's
>property.

How so? Can you find scales with GMP for arbitrary temperaments?

>There will be constraints on the valid tunings that relate
>to the mapping from JI. But you don't need commatic unison vectors
>for that. The commatic unison vectors completely disappear from the
>problem.

The chromatic vectors are what we want, yes, but they depend
on what the commatic vectors are.

>For a diatonic you do fokkerBlock(7, 5, 3), and for a Portent scale
>fokkerBlock(46, 72, 31). You can try different numbers until you get
>a scale you like.

This isn't Paul's algorithm then, which takes UVs as its
input.

-Carl

🔗Graham Breed <gbreed@gmail.com>

10/25/2010 3:22:57 AM

On 25 October 2010 13:46, Carl Lumma <carl@lumma.org> wrote:

>>This is all you need to find scales with generalized Myhill's
>>property.
>
> How so?  Can you find scales with GMP for arbitrary temperaments?

What I meant is, if you want to find Fokker blocks with GMP, you can
use this code. I don't know how to do it. But you can experiment
with different octave sizes.

>>There will be constraints on the valid tunings that relate
>>to the mapping from JI.  But you don't need commatic unison vectors
>>for that.  The commatic unison vectors completely disappear from the
>>problem.
>
> The chromatic vectors are what we want, yes, but they depend
> on what the commatic vectors are.

All contribution of the commatic vectors vanishes. All you need to
know is the tempered size of each unison vector that you don't temper
out, and the number of them you have in an octave.

>>For a diatonic you do fokkerBlock(7, 5, 3), and for a Portent scale
>>fokkerBlock(46, 72, 31).  You can try different numbers until you get
>>a scale you like.
>
> This isn't Paul's algorithm then, which takes UVs as its
> input.

The unison vectors are implicitly [0, 1, 0> and [0, 0, 1>. For
vectors in an arbitrary lattice, you transform them into the lattice
where this is true.

Graham

🔗Carl Lumma <carl@lumma.org>

10/25/2010 10:04:43 AM

Graham wrote:

>>>This is all you need to find scales with generalized Myhill's
>>>property.
>>
>> How so? Can you find scales with GMP for arbitrary temperaments?
>
>What I meant is, if you want to find Fokker blocks with GMP, you can
>use this code. I don't know how to do it. But you can experiment
>with different octave sizes.

I don't know how either. I looked at some 5-limit blocks (with
two chroma) and they didn't have GMP. They had 4, 3, or 2 sizes
per interval class. Like in majsyn3, the 2nds are

250/243, 25/24, 16/15, 27/25
^ ^ ^
81/80 128/125 81/80

81/80 and (128/125 - 81/80) = 648/625 are the chroma. We know
if we temper one of them out we get a rank 2 scale, because
there's only one chroma left to separate intervals per class.

My procedure first finds the ideal commas to complete a block
in the p-limit along with the commas of the given temperament.
Ideal in the sense that they result in a small block without
much additional error (since they appear together in one of
the best ETs). Then I detemper the ET back to the commas of
the given temperament, leaving the r - 1 chroma I found. So
for rank 3 marvel, there will be two chroma, capable of
separating three interval sizes per class (though worryingly
from the above, potentially capable of separating more).
I'd love to compute some examples but I don't have a procedure
for finding TM-reduced bases for arbitrary temperaments.

>> The chromatic vectors are what we want, yes, but they depend
>> on what the commatic vectors are.
>
>All contribution of the commatic vectors vanishes.

Nonsense. They are tempering down the block just as in the
rank 2 case and its celebrated Hypothesis.

>All you need to know is the tempered size of each unison vector
>that you don't temper out, and the number of them you have in
>an octave.

Great, how are you going to find that? We're not given the
untempered UVs. You keep solving a problem other than the
one stated.

>>>For a diatonic you do fokkerBlock(7, 5, 3), and for a Portent scale
>>>fokkerBlock(46, 72, 31). You can try different numbers until you get
>>>a scale you like.
>>
>> This isn't Paul's algorithm then, which takes UVs as its
>> input.
>
>The unison vectors are implicitly [0, 1, 0> and [0, 0, 1>.

I have no idea how you got that, nor do I particularly
care. What's the point creating some obfuscating notation
like "(7, 5, 3)"?

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/25/2010 11:40:21 AM

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

> It may not be obvious that this is Paul's unit cell. If Gene doesn't
> cover it, I might have to write it up. But that's how you do it.

I don't read Python, alas.

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/25/2010 11:42:37 AM

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

> >For a diatonic you do fokkerBlock(7, 5, 3), and for a Portent scale
> >fokkerBlock(46, 72, 31). You can try different numbers until you get
> >a scale you like.
>
> This isn't Paul's algorithm then, which takes UVs as its
> input.

Does it give the same blocks as in my Fokker block surveys?

🔗Carl Lumma <carl@lumma.org>

10/25/2010 12:06:19 PM

>> It may not be obvious that this is Paul's unit cell. If Gene doesn't
>> cover it, I might have to write it up. But that's how you do it.
>
>I don't read Python, alas.

That's ok, all the action is clearly happening elsewhere
in Graham's library, which, I'm sure he'll be quick to point
out, is available. But that's not the same as posting an
algorithm.

-Carl

🔗Carl Lumma <carl@lumma.org>

10/25/2010 12:08:20 PM

Gene wrote:

>> This isn't Paul's algorithm then, which takes UVs as its
>> input.
>
>Does it give the same blocks as in my Fokker block surveys?

It's a simple algorithm, which I reckon would be very easy for
you to implement:

http://www.tonalsoft.com/enc/f/fokker-gentle-3.aspx

-C.

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/25/2010 12:22:36 PM

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

> 81/80 and (128/125 - 81/80) = 648/625 are the chroma.

I thought they were the commas. A chroma would be, for instance, 16/15. Or so I thought.

🔗Carl Lumma <carl@lumma.org>

10/25/2010 12:26:14 PM

At 12:22 PM 10/25/2010, you wrote:
>
>
>--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>
>> 81/80 and (128/125 - 81/80) = 648/625 are the chroma.
>
>I thought they were the commas. A chroma would be, for instance,
>16/15. Or so I thought.

A chroma or chromatic interval is an interval not in a scale,
at least the way I use the term.

-Carl

🔗Graham Breed <gbreed@gmail.com>

10/26/2010 12:52:03 AM

On 25 October 2010 22:42, genewardsmith <genewardsmith@sbcglobal.net> wrote:
>
> --- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>
>> >For a diatonic you do fokkerBlock(7, 5, 3), and for a Portent scale
>> >fokkerBlock(46, 72, 31).  You can try different numbers until you get
>> >a scale you like.
>>
>> This isn't Paul's algorithm then, which takes UVs as its
>> input.
>
> Does it give the same blocks as in my Fokker block surveys?

What surveys? It certainly should give the same blocks because it's
pretty much an identical formula. Here it is again:

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

To match Paul, set ak=1-P, or re-write

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

Graham

🔗Graham Breed <gbreed@gmail.com>

10/26/2010 2:15:23 AM

On 25 October 2010 21:04, Carl Lumma <carl@lumma.org> wrote:

> I don't know how either.  I looked at some 5-limit blocks (with
> two chroma) and they didn't have GMP.  They had 4, 3, or 2 sizes
> per interval class.  Like in majsyn3, the 2nds are
>
> 250/243, 25/24, 16/15, 27/25
>        ^      ^      ^
>     81/80  128/125  81/80
>
> 81/80 and (128/125 - 81/80) = 648/625 are the chroma.  We know
> if we temper one of them out we get a rank 2 scale, because
> there's only one chroma left to separate intervals per class.

Right, it looks difficult. The rank 2 properties aren't all inherited.

> My procedure first finds the ideal commas to complete a block
> in the p-limit along with the commas of the given temperament.
> Ideal in the sense that they result in a small block without
> much additional error (since they appear together in one of
> the best ETs).  Then I detemper the ET back to the commas of
> the given temperament, leaving the r - 1 chroma I found.  So
> for rank 3 marvel, there will be two chroma, capable of
> separating three interval sizes per class (though worryingly
> from the above, potentially capable of separating more).
> I'd love to compute some examples but I don't have a procedure
> for finding TM-reduced bases for arbitrary temperaments.

I worked out a 46 note Portent example in Pari/GP last night. First
you need these functions:

get ratios(rows) = {
local(size);
size = matsize(rows);
vector(size[1], j, prod(i=1, size[2], prime(i)^rows[j,i]))
}

complexity metric(plimit) = {
local(size, H, W);
size = primepi(plimit);
H = log(primes(size))/log(2);
W = matrix(size,size,i,j,(i==j)/H[i]);
W^2 / (H*W^2*H~)
}

Then I define the Portent mapping like this:

portent = [46, 73, 107, 129, 159, 170, 188;31, 49, 72, 87, 107, 115,
127;72, 114, 167, 202, 249, 266, 294]

Each think between semicolons is an equal temperament mapping, or val.
This is a one liner. GP won't like it unless you type it in one
line. It may not be the correct 17-limit Portent but it doesn't
really matter.

You can extract the 46 note mapping like this:

h46 = portent[,1]

But there's an interesting feature of Pari that means it won't find
the kernel (null space) of single column. So this is how you do it:

uv46 = matkerint([46, 73, 107, 129, 159, 170, 188;0,0,0,0,0,0,0])~

Those seem to be returned in Hermite normal form, and the variant that
makes most sense for ratio space vectors. But what we really want is
a minimal set. Unfortunately, Pari doesn't have (that I can find) a
function to reduce a lattice basis according to a quadratic form. So
we have to look for small vectors. First, define the matrix for
complexity:

invk = matadjoint(complexity metric(17))/matdet(complexity metric(17)

This is a roundabout way of specifying the complexity of a ratio space
vector, but I happened to write the function for mappings first, so
there.

The unison vectors we want come from this:

best46 = qfminim(uv46 * invk * uv46~, 430, 20, 2)[3]~ * uv46

There's a magic number "430" that happens to be the appropriate
cutoff. I found it by trial and error. Future (or even present)
versions of Pari might make it easier.

Anyway, I went through removing the most common vectors and checking
if the kernel was still correct. This is, I believe, the optimal set:

tuv46 = [-1, -2, -1, 1, 0, 1, 0; -1, 2, 0, -1, -1, 0, 1; 3, -3, -1, 0,
0, 0, 1; 4, 0, -2, -1, 1, 0, 0; 2, -1, -1, 2, 0, -1, 0; -4, 1, -1, -1,
1, 0, 1]

As ratios:

91/90, 153/154, 136/135, 176/175, 196/195, 561/560

These come from get ratios(tuv46) which is why I gave you that function.

To get the unison vectors in terms of the original Portent basis:

planarUVs = tuv46 * portent

And the result is:

[0, 1, 1; 0, 0, -1; 0, 1, 1; 0, 0, 1; 0, 0, 1; 0, 0, 0]

The only independent vectors here note tempered out by Portent are
[0,1,1] and [0,0,1]. So these will be the chromatic unison vectors
for Portent. The numbers of them to the octave will be 72 and
31+72=103. Pari/GP is also smart enough to calculate that:

tuv46 * portent * portent[1,]~

You can now call the Python function with 46, 103, 72 and find that
the resulting scale has 4 distinct step sizes.

Simple unison vectors are clearly not giving simple mappings. My
suggestion that minimizing scalar complexity in one also minimizes it
into the other is wrong. I think what's really happening is that
minimizing scalar complexity in the unison vectors minimizes scalar
badness (error*complexity) in the mappings. That follows from
complexity and simple badness being dual in some sense I'll pretend to
understand.

>>> The chromatic vectors are what we want, yes, but they depend
>>> on what the commatic vectors are.
>>
>>All contribution of the commatic vectors vanishes.
>
> Nonsense.  They are tempering down the block just as in the
> rank 2 case and its celebrated Hypothesis.

The block gets tempered the same way regardless of which commatic
unison vectors you choose. The only requirement is that they're
tempered out by the temperament in question.

>>All you need to know is the tempered size of each unison vector
>>that you don't temper out, and the number of them you have in
>>an octave.
>
> Great, how are you going to find that?  We're not given the
> untempered UVs.  You keep solving a problem other than the
> one stated.

I find my mappings by looking at equal temperaments with low Cangwu
badness. The number of each in an octave is the number of steps to
the octave. Their tempered sizes come from a least squares
optimization.

If your hunch is correct, you should be looking at equal temperaments
with minimal scalar badness (error*complexity or 0-badness). Although
the scalar badness metric is only positive semidefinite, when you
constrain it to a temperament lattice (like in the Pari examples I've
given) it becomes positive definite. Pari is then happy to minimize
it for you.

>>>>For a diatonic you do fokkerBlock(7, 5, 3), and for a Portent scale
>>>>fokkerBlock(46, 72, 31).  You can try different numbers until you get
>>>>a scale you like.
>>>
>>> This isn't Paul's algorithm then, which takes UVs as its
>>> input.
>>
>>The unison vectors are implicitly [0, 1, 0> and [0, 0, 1>.
>
> I have no idea how you got that, nor do I particularly
> care.  What's the point creating some obfuscating notation
> like "(7, 5, 3)"?

What does the notation matter? You can re-write it to (fokkerBlock 7
5 3) in your head if you prefer. Python is what I happened to use to
implement it.

Graham

🔗Carl Lumma <carl@lumma.org>

10/26/2010 10:49:14 AM

Graham wrote:

>portent = [46, 73, 107, 129, 159, 170, 188;31, 49, 72, 87, 107, 115,
>127;72, 114, 167, 202, 249, 266, 294]
[snip]
>Simple unison vectors are clearly not giving simple mappings. My
>suggestion that minimizing scalar complexity in one also minimizes it
>into the other is wrong. I think what's really happening is that
>minimizing scalar complexity in the unison vectors minimizes scalar
>badness (error*complexity) in the mappings. That follows from
>complexity and simple badness being dual in some sense I'll pretend to
>understand.

Why did you choose a 17-limit, 46-note example the first time
out of the gate? I can't follow half of what you're doing here,
probably because you haven't explained it. At any rate, if you
worked examples like pajara, meantone, marvel in the 7-limit
and actually posted the scales, maybe I'd have a chance of
convincing myself of something.

>If your hunch is correct, you should be looking at equal temperaments
>with minimal scalar badness (error*complexity or 0-badness).

That is what my procedure says to do.

>Although the scalar badness metric is only positive semidefinite,
>when you constrain it to a temperament lattice (like in the Pari
>examples I've given) it becomes positive definite. Pari is then
>happy to minimize it for you.

I don't need any of that for my procedure, just TM-reduction.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/26/2010 12:16:42 PM

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

> I don't need any of that for my procedure, just TM-reduction.

All three of us could take a specific small but interesting example, such as constructing an 11-note scale for starling using the starling val <11 18 26 31|, and explaining things as best as possible.

🔗Carl Lumma <carl@lumma.org>

10/26/2010 3:01:24 PM

Gene wrote:
>> I don't need any of that for my procedure, just TM-reduction.
>
>All three of us could take a specific small but interesting example,
>such as constructing an 11-note scale for starling using the starling
>val <11 18 26 31|, and explaining things as best as possible.

What's the TM-reduced basis for the val?

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/26/2010 3:21:32 PM

--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>
> Gene wrote:
> >> I don't need any of that for my procedure, just TM-reduction.
> >
> >All three of us could take a specific small but interesting example,
> >such as constructing an 11-note scale for starling using the starling
> >val <11 18 26 31|, and explaining things as best as possible.
>
> What's the TM-reduced basis for the val?

{16/15, 49/45, 126/125}

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/26/2010 7:16:03 PM

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

> All three of us could take a specific small but interesting example, such as constructing an 11-note scale for starling using the starling val <11 18 26 31|, and explaining things as best as possible.

Consider the Hermite normal form mapping/ikon for starling. This gives (tempered) 2, 3, and 5 as generators for the intervals of the temperament. In this subgroup, the <11 18 26 31| val becomes <11 18 26|. A basis for the commas is 16/15 and 3125/2916.

Now form a projection matrix by the following proceedure:

(1) Weight the monzos for 2, 16/15 and 3125/2916 by <1 log2(3) log2(5)|; call these u1, u2, and u3.

(2) Take the matrix M whose rows are these weighted monzos, and find
Q = M`M, where M` is the pseudoinverse. The projection matrix is now P = I - Q, where I is the identity matrix.

(3) Project u2 and u3 (u1 projects to zero) by v2 = u2.P, v3 = u3.P.

(4) v2 and v3 span a subspace of R^4, the 4-dimensional real Euclidean space with dot product norm, and define a lattice on this subspace. Find the Minkowski basis for this subspace, which consists of the projections of 16/15 and 15625/15552.

(5) If you take all 11 Fokker blocks for these commas, you find the transversal for the hobbit scale is one of them. But you don't need to worry about that; instead take just one such Fokker block, and for each scale step z, project z and find which of the nine choices z+-v2+-v3 is closest to the origin. Nine should be enough, but 25 would not unduly strain computing resources. The corresponding 5-limit interval is in the transversal for the hobbit.

Step five involves the problem of finding a lattice point closest to a given point, which in theory is NP-hard. In spite of your no doubt fervently held belief that P does not equal NP, we don't actually have a hard problem, since in rank three we are looking at a planar lattice, and we can't stack up very many commas without running over the boundries for a scale step.

By the way, the counterexample I thought I had to the claim that all hobbits come from a Minkowski basis in terms of the projection metric was a mistake, so I suppose I'd better see if I can think of a proof.

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/26/2010 7:20:27 PM

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

> (5) If you take all 11 Fokker blocks for these commas, you find the transversal for the hobbit scale is one of them. But you don't need to worry about that; instead take just one such Fokker block, and for each scale step z, project z and find which of the nine choices z+-v2+-v3 is closest to the origin. Nine should be enough, but 25 would not unduly strain computing resources. The corresponding 5-limit interval is in the transversal for the hobbit.

I was assuming we'd switched basis to 16/15 15625/15552 for v2 and v3; if we don't, we'd better go with the 25.

🔗Carl Lumma <carl@lumma.org>

10/26/2010 9:16:58 PM

>> What's the TM-reduced basis for the val?
>
> {16/15, 49/45, 126/125}

Thanks. Just so there's no confusion, this is the problem
I'm solving:

> Problem: Given a p-limit temperament T of rank R and a complexity
> cuttof N, return a generalized MOS scale for it with no more than
> N notes/octave.

We have

p = 7
T = 126/125
R = 3

and instead of a complexity cutoff to find a val, it's given.

Steps to solution, following
/tuning-math/message/18248

> 1. Find the TM-reduced basis for T.

126/125

> 2. Find the logflat best val < N which sends the commas
> of the TM-reduced basis to zero.

Given. < 11 18 26 31 |

> 3. Find the TM-reduced basis of this val.

(16/15, 49/45, 126/125)

> 4. Use those commas to create a Fokker block, for instance
> with Paul's algorithm from the final installment of his
> Gentle Introduction.

| 4 -1 -1 0 >
| 0 -2 -1 2 >
| 1 2 -3 1 >

ignoring 2...

| -1 -1 0 >
| -2 -1 2 >
| 2 -3 1 >

check: (det3x3 '((-1 -1 0) (-2 -1 2) (2 -3 1))) -> -11 OK

Now we'll need the inverse. Wolfram Alpha sez

(-5/11 -1/11 2/11)
(-6/11 1/11 -2/11)
(-8/11 5/11 1/11)

Now we transform a bunch of 3-5-7 lattice with this (I used a
cube +/- 5 in each direction from the origin), get the unit cube,

((0 0 0) (10/11 2/11 7/11) (5/11 1/11 9/11) (9/11 4/11 3/11)
(4/11 3/11 5/11) (3/11 5/11 1/11) (8/11 6/11 10/11) (7/11 8/11 6/11)
(2/11 7/11 8/11) (6/11 10/11 2/11) (1/11 9/11 4/11))

transform back using the original matrix,

((0 0 0)
(0 -3 1)
(1 -3 1)
(-1 -2 1)
(0 -2 1)
(-1 -1 1)
(0 -4 2)
(-1 -3 2)
(0 -3 2)
(-2 -2 2)
(-1 -2 2))

and finally, translate by +3 in prime 5 and -1 in prime 7

((0 3 -1)
(0 0 0)
(1 0 0)
(-1 1 0)
(0 1 0)
(-1 2 0)
(0 -1 1)
(-1 0 1)
(0 0 1)
(-2 1 1)
(-1 1 1))

> 5. Retune the lattice using the TOP-RMS "Tuning map"
> for T from Graham's site.

http://x31eq.com/cgi-bin/rt.cgi?ets=27_19_12&error=4.715&limit=7&invariant=1_3_1_0_-2_1_0_0_-1

(fucking URL)

says < 1199.795 1900.927 2789.622 3367.214 |

I'll ignore the fact that the octave isn't pure -- its error
is small relative to a 11-note scale so I should be OK.

79.7
272.7
275.2
582.6
585.1
778.1
892.6
969.7
1088.0
1165.2
2/1

>6. Your Fokker block should now make a scale with R unique
>step sizes in all interval classes (up to the period).
>Ok, maybe not, but I think it's worth a try. You'll have
>to identify duplicate pitches after retuning the lattice,
>and you might have to detect rounding errors there...

Here's the part where I reveal that I'm not producing an
11-note scale at all. I can't produce a cardinality to
order. I could conceivable try every size up to 100 and
report the numbers I get out.

I've got two pairs of dupes above, likely made further
apart by the fact that the tuning I used was meant for
tempered octaves. I'll try reducing with Graham's octave
instead of 1200 cents and make an educated guess about
which ones to omit:

!
starling[9] 7-limit rank 3 scale
9
!
80.3
273.3
583.0
778.7
892.8
970.3
1088.5
1166.0
2/1
!

It does not seem to have 3GMP, having what appears to be
five kinds of 2nd, for starters. It's possible I screwed
up somewhere. Hopefully someone will be kind enough to
look this over. Meanwhile, I see you've (Gene) added
"Minkowski blocks" to the wiki, including some for Starling...

-Carl

🔗Carl Lumma <carl@lumma.org>

10/26/2010 9:20:59 PM

For the droves of people who are interested, here's the code
I used...

;; --------------------------------------------------------------

;; Finds the determinant of a 3x3 matrix.

(define det3x3
(lambda (mat)
(let ((a (caar mat))
(b (cadar mat))
(c (caddar mat))
(d (caadr mat))
(e (cadadr mat))
(f (caddr (cadr mat)))
(g (caaddr mat))
(h (cadr (caddr mat)))
(i (caddr (caddr mat))))
(- (+ (* a e i) (* b f g) (* c d h))
(* c e g) (* a f h) (* b d i)))))

;; Multiplies a 3-column vector by a 3x3 matrix.

(define mult3x3
(lambda (vec mat)
(let ((a (car vec))
(b (cadr vec))
(c (caddr vec))
(d (caar mat))
(e (cadar mat))
(f (caddar mat))
(g (caadr mat))
(h (cadadr mat))
(i (caddr (cadr mat)))
(j (caaddr mat))
(k (cadr (caddr mat)))
(l (caddr (caddr mat))))
(list (+ (* a d) (* b g) (* c j))
(+ (* a e) (* b h) (* c k))
(+ (* a f) (* b i) (* c l))))))

;; Takes a list of numbers defining origin-centered radii for
;; each lattice axis, and returns all monzos in the resulting
;; lattice area.

(define lattice-ball
(lambda (power-rangers)
(letrec ((loop (lambda (ls)
(if (null? (cdr ls))
(map list (car ls))
(matrixmap cons
(car ls) (loop (cdr ls)))))))
(loop (map (lambda (x)
(range (- x) x))
power-rangers)))))

;; Takes a list of monzos and returns only those that are within
;; a unit cube.

(define unit-ball
(lambda (monzos)
(map (lambda (x)
(if (and
(>= (car x) 0)
(< (car x) 1)
(>= (cadr x) 0)
(< (cadr x) 1)
(>= (caddr x) 0)
(< (caddr x) 1))
x))
monzos)))

;; Tunes a list of monzos using val.

(define monzos-image
(lambda (val monzos)
(map (lambda (x)
(apply + (map * x val)))
monzos)))

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/26/2010 9:29:16 PM

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

> Now form a projection matrix by the following proceedure:
>
> (1) Weight the monzos for 2, 16/15 and 3125/2916 by <1 log2(3) log2(5)|; call these u1, u2, and u3.

Sorry, I mean weight the monzos for 2 and 126/125! The matrix M has rows which are the weighted monzos for 2 and 126/125.

🔗Carl Lumma <carl@lumma.org>

10/26/2010 11:04:16 PM

Gene wrote:

>> (1) Weight the monzos for 2, 16/15 and 3125/2916 by <1 log2(3)
>log2(5)|; call these u1, u2, and u3.
>
>Sorry, I mean weight the monzos for 2 and 126/125! The matrix M has
>rows which are the weighted monzos for 2 and 126/125.

That definitely sounds more interesting... -Carl

🔗Graham Breed <gbreed@gmail.com>

10/26/2010 11:18:56 PM

On 26 October 2010 23:16, genewardsmith <genewardsmith@sbcglobal.net> wrote:

> All three of us could take a specific small but interesting example, such as constructing an 11-note scale for starling using the starling val <11 18 26 31|, and explaining things as best as possible.

The first question, of course, is "what's starling"? I had to read
the rest of the thread, and notice 126/125 mentioned. So I fed it
into my website, and a starling came out as the rank 3 result:

http://x31eq.com/cgi-bin/rt.cgi?ets=27_19_12&error=4.715&limit=7&invariant=1_3_1_0_-2_1_0_0_-1

(Yes, Carl, that's a URL.)

It doesn't have an 11 in it. Finding a unimodular translation to an
arbitrary scale is still something I consider hard. And 11 isn't the
difference between any of these scales. At first, I decided to panic.
Then I stuck 11 into the URL instead of 27, and this came out:

[< 11 17 25 30 ]
< 19 30 44 53 ]
< 12 19 28 34 ]>

http://x31eq.com/cgi-bin/rt.cgi?ets=11_19_12&limit=7&invariant=1_3_1_0_-2_1_0_0_-1

Fortunately, there's no contorsion. Unfortunately, it's the wrong
mapping for 11. I'm tired after the previous panic, so I'll go with
this anyway and not research the discrepancy. I'll find the obvious
11&19&12 scale.

At this point, my website has done most of the work. Some of the
steps weren't trivial, but I'm not inclined to explain them now, so
we'll treat it as a black box. I could now use my Python function to
find the scale structure, if I had a Python interpreter here. As it
is, I have Microsoft Office 2003, so I'll use Excel.

First, fill column A with the integers 1 to 11. Cell B1 has the
formula "=INT((A1*19+10)/11)". This should be the correct 19 from 11
note maximally even scale using INT as a floor. (Maybe Excel has a
ceiling function, but never mind, this works) Yes, I'm being naughty
and not leaving a row for headings. Fill the column down with this.
Cell C1 has the formula "=INT((A1*12+10)/11)" and I copied it for the
rest of the column.

Here's the scale defined in steps of the different step generators:

1 2 2
2 4 3
3 6 4
4 7 5
5 9 6
6 11 7
7 13 8
8 14 9
9 16 10
10 18 11
11 19 12

The first note of the tuned scale is calculated in D1 as "=A1*-14.906
+ B1*59.517 + C1*19.412". This is the scale in the previous three
columns tuned according to the basis I copied from my website. The
result is:

142.952
266.492
390.032
454.055
577.595
701.135
824.675
888.698
1012.238
1135.778
1199.801

As a check, I added more notes, and a column to calculate the step
sizes. The formula for Cell E1 is "=D2-D1". The result is:

123.54
123.54
64.023
123.54
123.54
123.54
64.023
123.54
123.54
64.023
142.952
123.54
123.54
64.023

I count 3 distinct step sizes. One of about 124 cents, one of about
64 cents, and one of about 143 cents. The largest step is the first
one (it isn't listed first because there's no tonic) which is
consistent with the scales coming from a ceiling function.

Graham

🔗Graham Breed <gbreed@gmail.com>

10/26/2010 11:42:04 PM

On 26 October 2010 21:49, Carl Lumma <carl@lumma.org> wrote:

> Why did you choose a 17-limit, 46-note example the first time
> out of the gate?  I can't follow half of what you're doing here,
> probably because you haven't explained it.  At any rate, if you
> worked examples like pajara, meantone, marvel in the 7-limit
> and actually posted the scales, maybe I'd have a chance of
> convincing myself of something.

I chose it because it's the one Caleb asked about in another place.
I'm no trying to convince you of anything. I'm trying to find a
simple way of adding scales to my website.

I thought I gave meantone as my first example of Pari. I remember
forgetting to mention unison vectors, so I decided to cover that in my
next message in the thread.

I could, of course, do all kinds of examples if somebody asked me in a
civil manner.

>>Although the scalar badness metric is only positive semidefinite,
>>when you constrain it to a temperament lattice (like in the Pari
>>examples I've given) it becomes positive definite.  Pari is then
>>happy to minimize it for you.
>
> I don't need any of that for my procedure, just TM-reduction.

Great, how are you calculating it? I can't, so I'm using Pari to find
short vectors.

Graham

🔗Carl Lumma <carl@lumma.org>

10/27/2010 12:35:40 AM

Graham wrote:

>> I don't need any of that for my procedure, just TM-reduction.
>
>Great, how are you calculating it? I can't, so I'm using Pari to find
>short vectors.

I asked Gene. I've got what looks like his maple code for it
here, but it looks like they only work if you already have a basis
to start.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/27/2010 12:46:46 AM

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

> [< 11 17 25 30 ]
> < 19 30 44 53 ]
> < 12 19 28 34 ]>
>
> http://x31eq.com/cgi-bin/rt.cgi?ets=11_19_12&limit=7&invariant=1_3_1_0_-2_1_0_0_-1
>
> Fortunately, there's no contorsion. Unfortunately, it's the wrong
> mapping for 11. I'm tired after the previous panic, so I'll go with
> this anyway and not research the discrepancy. I'll find the obvious
> 11&19&12 scale.

Both <11 17 25 30| and <11 18 26 31| support starling, but the second one seems preferable in terms of tuning.

🔗Carl Lumma <carl@lumma.org>

10/27/2010 1:03:28 AM

I wrote:

>transform back using the original matrix,
>((0 0 0)
> (0 -3 1)
> (1 -3 1)
>(-1 -2 1)
> (0 -2 1)
>(-1 -1 1)
> (0 -4 2)
>(-1 -3 2)
> (0 -3 2)
>(-2 -2 2)
>(-1 -2 2))
>and finally, translate by +3 in prime 5 and -1 in prime 7
>((0 3 -1)
> (0 0 0)
> (1 0 0)
>(-1 1 0)
> (0 1 0)
>(-1 2 0)
> (0 -1 1)
>(-1 0 1)
> (0 0 1)
>(-2 1 1)
>(-1 1 1))

I'm going to try the "minimax" tuning suggested on the xenwiki,
which I think is < 1200 1901.955 2790.912 3368.826 |.
That gives

!
starling[11]
11
!
79.869
203.91
266.871
390.912
577.914
657.783
701.955
888.957
968.826
1155.828
2/1
!

Very different from what I got with Graham's tuning, but still
doesn't have 3GMP.

-Carl

🔗Carl Lumma <carl@lumma.org>

10/27/2010 1:18:47 AM

I wrote:

>I'm going to try the "minimax" tuning suggested on the xenwiki,
>which I think is < 1200 1901.955 2790.912 3368.826 |.
>That gives
>
>!
> starling[11]
> 11
>!
> 79.869
> 203.91
> 266.871
> 390.912
> 577.914
> 657.783
> 701.955
> 888.957
> 968.826
> 1155.828
> 2/1
>!
>
>Very different from what I got with Graham's tuning,

Probably because I made a mistake tuning the monzos before.
Here's Graham's tuning, or something similar:

!
starling[11], x31eq tuning
11
!
78.932
202.472
266.492
390.032
577.592
656.524
701.132
888.695
967.624
1155.187
1199.795
!

-C.

🔗Carl Lumma <carl@lumma.org>

10/27/2010 11:22:36 AM

Right, so this is my answer

>>!
>> starling[11]
>> 11
>>!
>> 79.869
>> 203.91
>> 266.871
>> 390.912
>> 577.914
>> 657.783
>> 701.955
>> 888.957
>> 968.826
>> 1155.828
>> 2/1
>>!

The reason it didn't shrink like I thought at first is that
126/125 is in the basis for both the temperament and the val,
so it winds up being a block UV. But I think the number of
steps should still be reduced with respect to JI.
So here's JI:

!
{16/15, 49/45, 126/125} Fokker block
11
!
25/24
125/112
7/6
5/4
7/5
35/24
3/2
5/3
7/4
35/18
2/1
!

This has mean variety 7 according to Scala, whereas the
scale above has mean variety 5.6.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/27/2010 11:59:15 AM

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

> Then I stuck 11 into the URL instead of 27, and this came out:
>
> [< 11 17 25 30 ]
> < 19 30 44 53 ]
> < 12 19 28 34 ]>

Generators corresponding to these are [81/80, 405/392, 686/675]. These have the property that they give a step of 1 with the associated val, and 0 with the other two. Let's call these 1/c1, c2, and c3, so that the generator for 11 is 80/81.

> Here's the scale defined in steps of the different step generators:
>
> 1 2 2
> 2 4 3
> 3 6 4
> 4 7 5
> 5 9 6
> 6 11 7
> 7 13 8
> 8 14 9
> 9 16 10
> 10 18 11
> 11 19 12

Using the successive rows of this as exponents, we obtain the following scale:

49/45, 7/6, 5/4, 35/27, 25/18, 125/84, 625/392, 625/378, 3125/1764,
15625/8232, 15625/7938

Reducing this modulo 126/125 gives this:

49/45, 7/6, 5/4, 35/27, 7/5, 3/2, 45/28, 5/3, 9/5, 27/14, 2

This is a 7-limit transversal for the scale. Replacing 7 with 125/18 in this scale gives this:

3125/2916, 125/108, 5/4, 625/486, 25/18, 3/2, 81/50,
5/3, 9/5, 243/125, 2

This is the unique 5-limit transversal for the scale.

If we take <11 17 25 30| and reduce it to the 5-limit as <11 17 25|, we obtain a comma basis {25/24, 729/640}. This is not only the Tenney-Minkowski basis, but the Minkowski basis for the projected lattice. There are 11 Fokker blocks (modulo transposition) for this lattice basis, and Graham's scale is not one of them. So we are looking at a distinct approach, even account for the change in the val. You can get an idea of just how different they are by looking at the lattices in Scala. Here is Graham's transversal:

! graham.scl
Graham's 5-limit transversal
11
!
3125/2916
125/108
5/4
625/486
25/18
3/2
81/50
5/3
9/5
243/125
2

Here is mine:

! star11a.scl
!
Star11a hobbit block = prehobbit11
11
!
25/24
144/125
6/5
5/4
25/18
36/25
8/5
5/3
125/72
48/25
2/1

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/27/2010 12:36:08 PM

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

> !
> {16/15, 49/45, 126/125} Fokker block

Substituting 125/18 for 7 in the above gives {16/15, 3125/2916, 1} so it isn't the same Fokker block as my {16/15, 15625/15552}. However, I'd guess that fairly often the two methods would converge on the same answer.

Doing the same substitution on the 7-limit scale itself yields

! carl.scl
Carl's 5-limit transversal
11
!
25/24
9/8
125/108
5/4
25/18
625/432
3/2
5/3
125/72
625/324
2

You might amuse yourself by looking at the lattice in Scala.

> This has mean variety 7 according to Scala, whereas the
> scale above has mean variety 5.6.

Like a lot of the statistics Scala comes out with, I don't know what that means.

🔗Carl Lumma <carl@lumma.org>

10/27/2010 1:18:48 PM

>> This has mean variety 7 according to Scala, whereas the
>> scale above has mean variety 5.6.
>
>Like a lot of the statistics Scala comes out with, I don't know what
>that means.

Probably the single most important property of scales 10/oct
and smaller: the average number of sizes per interval class.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/27/2010 1:53:10 PM

--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
>
> >> This has mean variety 7 according to Scala, whereas the
> >> scale above has mean variety 5.6.
> >
> >Like a lot of the statistics Scala comes out with, I don't know what
> >that means.
>
> Probably the single most important property of scales 10/oct
> and smaller: the average number of sizes per interval class.

Sounded like it might be. Dividing by the number scale steps would make sense.

I don't think that property is nearly as important as propriety, by the way. Why is it such a big deal?

🔗Carl Lumma <carl@lumma.org>

10/27/2010 2:13:59 PM

Gene wrote:
>> Probably the single most important property of scales 10/oct
>> and smaller: the average number of sizes per interval class.
[snip]
>I don't think that property is nearly as important as propriety, by
>the way. Why is it such a big deal?

It seems to be readily audible. ET and rank 2 scales are much
easier to learn to sing. Even when it comes to the subtle
differences from playing Bach WTC in meantone while avoiding
wolves, as you did years ago, the problem (for me and a couple
others I played them for) is melodic irregularity.

Propriety is important, but one can always feature proper subsets
in a composition. There's also the issue of the magnitude of
impropriety (in cents) being arbitrarily small. (That's solved
by using Lumma impropriety, available in Scala show data.)

It's true that things like 5-ET and 6-ET are a bit *too* regular
(as addressed by Rothenberg efficiency, there is no way to tell
where you are)... so I think that rank 2 really is the sweet
spot, at least for generalized-diatonic music.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/27/2010 3:07:23 PM

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

> It's true that things like 5-ET and 6-ET are a bit *too* regular
> (as addressed by Rothenberg efficiency, there is no way to tell
> where you are)... so I think that rank 2 really is the sweet
> spot, at least for generalized-diatonic music.

I like some irregularity, and judging by comments I've heard about circulating temperaments, I am far from alone in that.

🔗Carl Lumma <carl@lumma.org>

10/27/2010 3:23:22 PM

Gene wrote:

>> It's true that things like 5-ET and 6-ET are a bit *too* regular
>> (as addressed by Rothenberg efficiency, there is no way to tell
>> where you are)... so I think that rank 2 really is the sweet
>> spot, at least for generalized-diatonic music.
>
> I like some irregularity, and judging by comments I've heard about
> circulating temperaments, I am far from alone in that.

Music written for well temperaments tends to sound good in them,
ditto meantone[12]. There's a small contingent of folks who
claim to like well temperament better than 12-ET for all music,
and in most cases I think they're attached to the story and
can't actually hear what they claim to be hearing. Most models
of discordance say it falls off faster than linearly with error,
and that would explain why we don't just use strict JI in the
first place. For the record, I think your Brahms etc. retunings
in grail etc. sound interesting but awful.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/27/2010 3:30:40 PM

--- In tuning-math@yahoogroups.com, Carl Lumma <carl@...> wrote:
For the record, I think your Brahms etc. retunings
> in grail etc. sound interesting but awful.

That was when I was exploring the somewhat crazed idea of replacing some thirds with 14/11 or 9/7 versions. What did you think of the Brahms in Valotti recently posted?

🔗Carl Lumma <carl@lumma.org>

10/27/2010 4:03:38 PM

>> For the record, I think your Brahms etc. retunings
>> in grail etc. sound interesting but awful.
>
>That was when I was exploring the somewhat crazed idea of replacing
>some thirds with 14/11 or 9/7 versions. What did you think of the
>Brahms in Valotti recently posted?

I didn't listen, but I wouldn't be surprised if it sounded good.
For one thing, Valotti is a mild (1/6-comma) WT and if it was a
symphony, those generally stick close to home so it could
conceivably work very well. But any improvement over ET to my
ears would be from the improve consonance, not melodic
irregularity (which may be undetectable).

Hey, you renamed Septimal Star "Music For Your Ears"... what gives?

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/27/2010 4:16:39 PM

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

> Hey, you renamed Septimal Star "Music For Your Ears"... what gives?

That was the original name.

🔗Graham Breed <gbreed@gmail.com>

10/28/2010 12:19:36 PM

"genewardsmith" <genewardsmith@sbcglobal.net> wrote:

> Both <11 17 25 30| and <11 18 26 31| support starling,
> but the second one seems preferable in terms of tuning.

Well, there you go. The first one has lower TOP-RMS error,
and therefore scores better on any reasonable badness
measure I know, and particularly the one I use to choose my
default mappings. So you've got me there.

I'm reunited with my Python interpreter now, though, so I
got this sorted out. I tried the new mapping with
different subsets of the old one, and found that 11&27&12
works. Here's the standard printout:

Starling

mapping by steps:
[<11, 18, 26, 31],
<27, 43, 63, 76],
<12, 19, 28, 34]>

step tunings:
<-29.704, 74.314, -39.995] cents

reduced mapping:
[<1, 0, 0, -1],
<0, 1, 0, -2],
<0, 0, 1, 3]>

tuning map:
[1199.795, 1900.927, 2789.622, 3367.214> cents

scalar complexity: 0.099
RMS weighted error: 0.840 cents/octave
max weighted error: 1.425 cents/octave

The scale is

113.248
192.177
345.420
424.349
577.593
656.522
809.765
888.694
1041.937
1120.866
1199.795

It still has 3 interval sizes. This is the pattern of
steps it's based on:

[(1, 3, 2), (2, 5, 3), (3, 8, 4), (4, 10, 5), (5, 13, 6),
(6, 15, 7), (7, 18, 8), (8, 20, 9), (9, 23, 10), (10, 25,
11), (11, 27, 12)]

If there's something wrong with that I'll have to look into
it tomorrow.

Graham

🔗Carl Lumma <carl@lumma.org>

10/28/2010 1:25:01 PM

>The scale is
>
>113.248
>192.177
>345.420
>424.349
>577.593
>656.522
>809.765
>888.694
>1041.937
>1120.866
>1199.795
>
>It still has 3 interval sizes.

That last one you posted had more than 3, and this
one has more than that: 4.8.

-Carl

🔗Graham Breed <gbreed@gmail.com>

10/28/2010 1:34:35 PM

Carl Lumma <carl@lumma.org> wrote:

> >It still has 3 interval sizes.
>
> That last one you posted had more than 3, and this
> one has more than that: 4.8.

Step sizes, sorry. Does it match what you were doing?
I'll have to get some sleep before I go through and check.

Graham

🔗Carl Lumma <carl@lumma.org>

10/28/2010 2:27:58 PM

>> >It still has 3 interval sizes.
>>
>> That last one you posted had more than 3, and this
>> one has more than that: 4.8.
>
>Step sizes, sorry. Does it match what you were doing?

I don't know about the method, the result is different,
since mine had mean variety 5.6.

Gene's still 'winning' with 3.2. So here's the part where
I ask Gene to post the mean variety of the scale his method
produces for starling at every cardinality from 5-100/oct,
in hopes a pattern emerges.

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/28/2010 2:52:43 PM

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

> Gene's still 'winning' with 3.2. So here's the part where
> I ask Gene to post the mean variety of the scale his method
> produces for starling at every cardinality from 5-100/oct,
> in hopes a pattern emerges.

The pattern which would emerge is that I would go nuts. What about a smaller list?

🔗Carl Lumma <carl@lumma.org>

10/28/2010 2:57:35 PM

>> Gene's still 'winning' with 3.2. So here's the part where
>> I ask Gene to post the mean variety of the scale his method
>> produces for starling at every cardinality from 5-100/oct,
>> in hopes a pattern emerges.
>
>The pattern which would emerge is that I would go nuts. What about a
>smaller list?

I thought you'd automated everything!

-Carl

🔗genewardsmith <genewardsmith@sbcglobal.net>

10/28/2010 6:00:26 PM

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

> I thought you'd automated everything!

No, but I suppose if Graham wanted to use any method it would need to be automated. In this case, that would mean automating the Minkowski basis algorithm to get the Minkowski block, and then automate finding the hobbit starting from a Minkowski block scale. Then for your problem, automate finding the mean variety. From the examples I've already worked, I have:

7: 3
8: 3.42857
9: 3
11: 3.2
12: 3.09091
15: 3.14286
16: 3.46667
17: 4.625
19: 3.44444

🔗Graham Breed <gbreed@gmail.com>

10/28/2010 11:26:15 PM

"genewardsmith" <genewardsmith@sbcglobal.net> wrote:

> No, but I suppose if Graham wanted to use any method it
> would need to be automated. In this case, that would mean
> automating the Minkowski basis algorithm to get the
> Minkowski block, and then automate finding the hobbit
> starting from a Minkowski block scale. Then for your
> problem, automate finding the mean variety. From the
> examples I've already worked, I have:

I hope I don't need a Minkowski basis algorithm because I
don't have one. What I could do is find the TLLL-reduced
vals (Tenney-weighted LLL-reduced ET mappings) and define a
new metric that makes them perfectly orthogonal. This will
be very close to your projection inspired metric but has the
advantage that it's suitable for LLL reduction.

Graham

🔗Carl Lumma <carl@lumma.org>

10/29/2010 1:20:29 AM

Gene wrote:

>> I thought you'd automated everything!
>
>No, but I suppose if Graham wanted to use any method it would need to
>be automated. In this case, that would mean automating the Minkowski
>basis algorithm to get the Minkowski block, and then automate finding
>the hobbit starting from a Minkowski block scale. Then for your
>problem, automate finding the mean variety. From the examples I've
>already worked, I have:

Mean variety is really easy, like, 5 lines of scheme.
You're on your own for the other stuff!

>7: 3
>8: 3.42857
>9: 3
>11: 3.2
>12: 3.09091
>15: 3.14286
>16: 3.46667
>17: 4.625
>19: 3.44444

Thanks. It's not for sure that 7 and 9 have 3GMP, but it
seems likely. I wonder if this has anything to do with the
badness of the best vals beginning as above that send 126/125
to zero...

-Carl

🔗Graham Breed <gbreed@gmail.com>

10/29/2010 11:01:53 AM

"genewardsmith" <genewardsmith@sbcglobal.net> wrote:
>
> --- In tuning-math@yahoogroups.com, Graham Breed
> <gbreed@...> wrote:
> >
> > [< 11 17 25 30 ]
> > < 19 30 44 53 ]
> > < 12 19 28 34 ]>
>
> Generators corresponding to these are [81/80, 405/392,
> 686/675]. These have the property that they give a step
> of 1 with the associated val, and 0 with the other two.
> Let's call these 1/c1, c2, and c3, so that the generator
> for 11 is 80/81.

That's it.

> If we take <11 17 25 30| and reduce it to the 5-limit as
> <11 17 25|, we obtain a comma basis {25/24, 729/640}.
> This is not only the Tenney-Minkowski basis, but the
> Minkowski basis for the projected lattice. There are 11
> Fokker blocks (modulo transposition) for this lattice
> basis, and Graham's scale is not one of them. So we are
> looking at a distinct approach, even account for the
> change in the val. You can get an idea of just how
> different they are by looking at the lattices in Scala.

Er, yes, because you found ratios for my unison vectors
above: 405/392 and 686/675. These new ratios translate to
my basis as [0,1,1> and [0,3,2>. Of course they won't give
the same Fokker block as [0,1,0> and [0,0,1>. Why would
you expect them to?

Graham