back to list

Re: More temperaments (from Tuning List)

🔗graham@microtonal.co.uk

5/25/2001 2:36:00 PM

Paul wrote:

> > Yes, the 11- and 15-limits are riddled with them. There's even one
> that
> > divides the octave into 29 equal parts! 4.7 cents for the 15-
> limit, only
> > needs 1 generator, needing 30 for a complete chord? Mighty
> strange, but
> > it does mean you can use it with two manuals tuned to 29-equal a
> generator
> > apart. As I've shown before that 29-equal works quite well mapped
> to
> > Halberstadt, this is far from arbitrary.
>
> My proposal of two 12-equal keyboards 15 cents apart must look pretty
> good in the 5-limit, yes?

Doesn't make the list, but only extremely accurate temperaments do in the
5-limit.

I think the 29+ one should be more complex than that. I'm calculating the
number of steps for a chord as the number of generators to the most
complex interval times the number of equivalence intervals plus one. I
think the addition should be done before the multiplication, but I think
that makes the octave-splitting ones look worse than they really are.
This particular one looks much better, though. I'll try and sort it out
in the morning.

I've changed the scoring which alters the 11 and 15-limit ordering. This
was to balance the 9-limit for simplicity rather than accuracy.

The program and output files should be at
<http://x31eq.com/temper.html> by now.

Graham

🔗Paul Erlich <paul@stretch-music.com>

5/25/2001 2:46:10 PM

--- In tuning-math@y..., graham@m... wrote:

> The program and output files should be at
> <http://x31eq.com/temper.html> by now.
>
Excuse me if I'm misunderstanding, but isn't your top 11-limit
generator, "11/113", just the MIRACLE generator?

🔗Paul Erlich <paul@stretch-music.com>

5/25/2001 2:52:18 PM

--- In tuning-math@y..., graham@m... wrote:

> The program and output files should be at
> <http://x31eq.com/temper.html> by now.

On that page it says,

"I've written a Python script to systematically find equal
temperaments consistent within a given prime limit."

You mean odd limit, right?

🔗graham@microtonal.co.uk

5/26/2001 1:47:00 AM

Paul Erlich wrote:

> Excuse me if I'm misunderstanding, but isn't your top 11-limit
> generator, "11/113", just the MIRACLE generator?

Yes, with the new scoring system. It's also bottom of the 9-limit and
around the middle of the 7-limit.

The scoring could still do with some tweaking, to ensure the best
temperaments make the list. The real challenge will be removing the
octave invariance.

Graham

🔗graham@microtonal.co.uk

5/26/2001 1:53:00 PM

I've half-updated the stuff at

<http://x31eq.com/temper.html>

mostly to clean up the code. Also temperaments that too complex or
inaccurate get left out, which stops the 5-limit being swamped by
impractical temperaments.

On the question of the number of notes needed for a complete chord.
Properly, for an equal number of generators to each equivalence interval,
the formula should be (d+1)*n where d is the generator and n is the
number of divisions of an octave. For the strangest example (now top of
the 15-limit list!) which needs 29 equivalence intervals and 1 generator,
this gives 58 notes.

However, you get 29 different complete chords within those notes. So the
temperament is much more efficient than one with an equivalence interval
of an octave that requires 58 notes to get a complete chord.

For that simple case, you get a new complete chord with each new note. So
the number of notes to a complete chord tells you how many you'll get with
however many notes are in the MOS. The equivalent measure where the
equivalence interval is a division of the octave is d*n+1, which is what
my program uses.

In some cases, like that 29 step octave, it gives somewhat eccentric
results. But I think a human looking at the data can use their
intelligence to work this out, instead of expecting the dumb computer to
produce a magic number that explains it all.

If you're curious, you could try looking through the 7- and 9-limit lists.
There are some interesting scales in there I haven't seen before, along
with some old friends.

The magic connection between Miracle and diaschismic I had in mind is that
they both have a generator of a semitone, approximating 16:15. This is
the same but different to the connection between schismic and diaschismic
(single and double-positive).

For the following discussion I'll use "formal octave" for the interval we
choose to stand in for an octave, and "equivalence interval" for the MOS
parameter that will be a fraction of the formal octave.

To get the program to work for inharmonic timbres, you need to express all
intervals in terms of the formal octave. This shouldn't be difficult to
do. But how do you get the formal octave? That is our next challenge.

One approach would be to extend Dave Keenan's brute force to try all
generators and equivalence intervals. This is probably too complex for a
spreadsheet, but should be easy enough as a program. The problem is that
it'd need quadratic time to check all combinations. For checking an
octave to 0.1 cents precision, that's 144 million combinations. Okay,
less than that, because the generator doesn't have to be greater than the
equivalence interval. But we still have a lot of combinations. It
wouldn't be efficient, but it would work. I don't think I'll try this,
but somebody should. I'll have a go at the more complex method below.

The first step is to get hold of all the ranges of consistent ETs for the
intervals we're looking at. Paul Erlich has already done this for the
traditional limits. The best way is probably brute force. It'd take a
while but nowhere near as long as brute forcing the linear temperaments.

I think the linear temperaments can still be expressed in step sizes for
any pair of temperaments. The challenge is getting at the formal octave.
Optimising the tuning and assessing the complexity will be harder
otherwise. Because schismic and Miracle temperaments can work with
different equivalence intervals, there's obviously no unique way of
getting an equivalence interval when you know the temperament.

The first step would be to express each temperament using an arbitrary
formal octave, probably the first one in the list of prime intervals.
Then we can use that specification to weed out duplicates for when we come
to the hard work. This would mean taking each consonant interval for a
formal octave, and seeing which ones work best.

So, what makes a good formal octave? It's tempting to say it should be a
prime, rather than derived, interval. But schismic works with a fourth
and Miracle with a fifth, so that obviously won't work. Perhaps we only
need to check combinations of the first few prime intervals, assuming them
to be the most important. But can we be sure this is always sufficient?

A post on the practical microtonality list (I don't have the reference,
sorry) did suggest deliberately choosing poor consonances for formal
octaves. So we will probably have to have a lot of freedom in how the
choice is made.

Other factors are that the scale should have a "nice" number and pattern
of notes to its formal octave. I'm not sure how to express this for an
open ended temperament.

There we go, ideas are welcome.

Graham

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/26/2001 2:44:40 PM

--- In tuning-math@y..., graham@m... wrote:
> The scoring could still do with some tweaking, to ensure the best
> temperaments make the list. The real challenge will be removing the
> octave invariance.

What do you mean by this? Do you mean you want to find MA errors
at an N+1 integer limit instead of N odd limit when the octave is
tempered too?

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/26/2001 3:49:34 PM

--- In tuning-math@y..., graham@m... wrote:
> On the question of the number of notes needed for a complete chord.
...

Ah yes. I see your point. So how about simply using n*d, the number of
generators in a complete chord. Its a more useful number. If you want
to know how many complete otonalities you get for N notes, it's simply
N - n*d.

> If you're curious, you could try looking through the 7- and 9-limit
lists.
> There are some interesting scales in there I haven't seen before,
along
> with some old friends.

It would be a lot easier to recognise any old friends if you had your
program express the basis as "N chains of G cent generators".

> For the following discussion I'll use "formal octave" for the
interval we
> choose to stand in for an octave, and "equivalence interval" for the
MOS
> parameter that will be a fraction of the formal octave.

This is too confusing. How about we use the term "period" instead of
"equivalence interval". If you thing that might be confused with a
time period you could call it the "log period", but notice that we
already use it in this way, without the "log" qualifier, in the term
"periodicity block".

> To get the program to work for inharmonic timbres, you need to
express all
> intervals in terms of the formal octave. This shouldn't be
difficult to
> do. But how do you get the formal octave? That is our next
challenge.

I'm personally not very interested in that completely general case
just yet. Most inharmonic timbres are short lived and so coinciding
partials isn't all that important.

I'd be more interested in the cases where the period is a
whole-number fraction of another highly consonant (harmonic) interval,
such as the BP 1:3, or 1:4, 2:3, 1:5, 1:6, 2:5, 3:4 etc.

And even more interested in the case where we stick to fractions of a
real octave but allow the octave to be tempered and use N+1 integer
limits in place of N odd-limits.

-- Dave Keenan

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/26/2001 11:40:57 PM

--- In tuning-math@y..., graham@m... wrote:
> Okay,
> less than that, because the generator doesn't have to be greater
than the
> equivalence interval.

The generator doesn't have to be greater than _half_ the period
(equivalence interval). But yes, it's still O(n^2).

🔗graham@microtonal.co.uk

5/27/2001 5:28:00 AM

Dave Keenan wrote:

> --- In tuning-math@y..., graham@m... wrote:
> > The scoring could still do with some tweaking, to ensure the best
> > temperaments make the list. The real challenge will be removing the
> > octave invariance.
>
> What do you mean by this? Do you mean you want to find MA errors
> at an N+1 integer limit instead of N odd limit when the octave is
> tempered too?

I mean taking an arbitrary set of intervals and finding some generators
and periods that fit them.

Graham

🔗graham@microtonal.co.uk

5/27/2001 5:28:00 AM

Dave Keenan wrote:

> --- In tuning-math@y..., graham@m... wrote:
> > On the question of the number of notes needed for a complete chord.
> ...
>
> Ah yes. I see your point. So how about simply using n*d, the number of
> generators in a complete chord. Its a more useful number. If you want
> to know how many complete otonalities you get for N notes, it's simply
> N - n*d.

Equally useful, they're only 1 note apart. Originally I was using n*d for
the scoring anyway.

> > If you're curious, you could try looking through the 7- and 9-limit
> lists.
> > There are some interesting scales in there I haven't seen before,
> along
> > with some old friends.
>
> It would be a lot easier to recognise any old friends if you had your
> program express the basis as "N chains of G cent generators".

Uh, yeah, sometime. You'll have to convert from octaves for now, or hack
the code yourself (Python's really easy to learn, you can download the
interpreter)

> > For the following discussion I'll use "formal octave" for the
> interval we
> > choose to stand in for an octave, and "equivalence interval" for the
> MOS
> > parameter that will be a fraction of the formal octave.
>
> This is too confusing. How about we use the term "period" instead of
> "equivalence interval". If you thing that might be confused with a
> time period you could call it the "log period", but notice that we
> already use it in this way, without the "log" qualifier, in the term
> "periodicity block".

Okay.

> > To get the program to work for inharmonic timbres, you need to
> express all
> > intervals in terms of the formal octave. This shouldn't be
> difficult to
> > do. But how do you get the formal octave? That is our next
> challenge.
>
> I'm personally not very interested in that completely general case
> just yet. Most inharmonic timbres are short lived and so coinciding
> partials isn't all that important.

How about bells? My wok makes some good sound if I thwack it right as
well.

I don't think the harmonic series has many more surprises for us. It was
worth a look to make sure we hadn't overlooked any Miracles, but I think
the program already shows that. The 15-limit temperaments are too complex
for me right now, and there's no point in finding them again.

You could try it with different sets of intervals, but that's really easy,
no more programming.

One thing is it might be good for the program to recognize scales that
approximate a subset of the intervals you gave it.

Thinking about it, for the non-octave case, we don't even need a
brute-force search for ETs. So long as we only take consistent ones, we
can choose an arbitrary formal octave and do the same search as currently.
It may be best to choose a large interval for that formal octave, as
there may be more than one consistent ET that divides a small interval
into the same number of steps.

> I'd be more interested in the cases where the period is a
> whole-number fraction of another highly consonant (harmonic) interval,
> such as the BP 1:3, or 1:4, 2:3, 1:5, 1:6, 2:5, 3:4 etc.

So long as you choose the interval first, that should be easy. You need
to specify each prime direction in terms of that interval. Something
like:

newprimes = []
for interval in primes:
newprimes.append(newprimes/pitchOfFormalOctave)

where primes is a list of the intervals in terms of octaves (current
standard) and pitchOfFormalOctave is the pitch of this interval you chose
in octaves (log2(3) for 3:1).

> And even more interested in the case where we stick to fractions of a
> real octave but allow the octave to be tempered and use N+1 integer
> limits in place of N odd-limits.

I don't really care what happens after the linear temperament's found.
The program can be hacked for that easily enough. If you have an
algorithm for the optimization, it can be added as a method like
optimizeMinimax.

Graham

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/27/2001 8:56:34 PM

--- In tuning-math@y..., graham@m... wrote:
> Dave Keenan wrote:
> > It would be a lot easier to recognise any old friends if you had
your
> > program express the basis as "N chains of G cent generators".
>
> Uh, yeah, sometime. You'll have to convert from octaves for now, or
hack
> the code yourself (Python's really easy to learn, you can download
the
> interpreter)

I'm getting too old for that. I've had to learn so many new
programming languages (and GUI libraries) in my life that I'm heartily
sick of it.

I had a hard time recognising Paultone among your top-10 7-limit
generators.

I think there's a bug in your MA optimiser. In the case where one or
more intervals is purely a multiple of the period (zero generators)
you need to either give a _range_ for the optimum generator, or
preferably eliminate the zero-generator intervals from the
optimisation.

If you do that you should get 109.36 cents (not 111.04) for Paultone.

> I don't really care what happens after the linear temperament's
found.
> The program can be hacked for that easily enough. If you have an
> algorithm for the optimization, it can be added as a method like
> optimizeMinimax.

Not by me. How about giving us the top-tens ranked according to RMS
error times (n*d)^2, generators in cents.

-- Dave Keenan

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/27/2001 10:01:00 PM

Doesn't the fact that meantone, (the single most popular 5-limit
temperament of all time), doesn't even make the top-ten, mean that
there is something very wrong with our figure of demerit?

🔗graham@microtonal.co.uk

5/28/2001 12:56:00 AM

D.KEENAN@UQ.NET.AU (Dave Keenan) wrote:

> Doesn't the fact that meantone, (the single most popular 5-limit
> temperament of all time), doesn't even make the top-ten, mean that
> there is something very wrong with our figure of demerit?
>

You're out of date. It's this one:

66/157

basis:
(1.0, 0.419517976278)

mapping:
([1, 0], ([2, 4], [-1, -4]))
^^^^^^

primeApprox:
([88, 69], [(139, 109), (204, 160)])

highest interval width: 4
notes required: 5
highest error: 0.004480 (5.377 cents)

The list I point to is the easiest way of showing that it's meantone. A
third is four fifths.

The figure of demerit isn't perfect but, now the really useless
temperaments are excluded, it's good enough to bring the interesting ones
into the 10. You can change that to 20 if you don't trust it.

Graham

🔗Paul Erlich <paul@stretch-music.com>

5/28/2001 2:08:59 AM

--- In tuning-math@y..., graham@m... wrote:

> The magic connection between Miracle and diaschismic I had in mind
is that
> they both have a generator of a semitone, approximating 16:15.

Well, I usually think of diaschismic as having a ~3:2 generator and a
half-octave "by-generator". But yes, replacing the ~3:2 with an
approximate 16:15 is equivalent.

> This is
> the same but different to the connection between schismic and
diaschismic
> (single and double-positive).

The same but different . . . pretty cryptic!
>
> For the following discussion I'll use "formal octave" for the
interval we
> choose to stand in for an octave, and "equivalence interval" for
the MOS
> parameter that will be a fraction of the formal octave.
>
> To get the program to work for inharmonic timbres, you need to
express all
> intervals in terms of the formal octave. This shouldn't be
difficult to
> do. But how do you get the formal octave? That is our next
challenge.

There's only one interval that sounds like a repetition of the same
pitch to humans and other mammals. It's pretty close to 2:1.

>
> I think the linear temperaments can still be expressed in step
sizes for
> any pair of temperaments. The challenge is getting at the formal
octave.

Still?

> Optimising the tuning and assessing the complexity will be harder
> otherwise. Because schismic and Miracle temperaments can work with
> different equivalence intervals,

Really?

> there's obviously no unique way of
> getting an equivalence interval when you know the temperament.
>
> The first step would be to express each temperament using an
arbitrary
> formal octave, probably the first one in the list of prime
intervals.
> Then we can use that specification to weed out duplicates for when
we come
> to the hard work. This would mean taking each consonant interval
for a
> formal octave, and seeing which ones work best.

You've lost me.

🔗Paul Erlich <paul@stretch-music.com>

5/28/2001 2:23:22 AM

--- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:

> I had a hard time recognising Paultone among your top-10 7-limit
> generators.

Holy $#!% -- totally missed that. And how did MIRACLE end up on the
_bottom_ for 9-limit?
>
> I think there's a bug in your MA optimiser.

MA optimization is hard. Go with RMS.

> In the case where one or
> more intervals is purely a multiple of the period (zero generators)
> you need to either give a _range_ for the optimum generator, or
> preferably eliminate the zero-generator intervals from the
> optimisation.
>
> If you do that you should get 109.36 cents (not 111.04) for
Paultone.

Yes.

> Not by me. How about giving us the top-tens ranked according to RMS
> error times (n*d)^2, generators in cents.
>
Good idea.

🔗Paul Erlich <paul@stretch-music.com>

5/28/2001 2:24:45 AM

--- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:
> Doesn't the fact that meantone, (the single most popular 5-limit
> temperament of all time), doesn't even make the top-ten, mean that
> there is something very wrong with our figure of demerit?

Very wrong. Very, very wrong.

🔗Paul Erlich <paul@stretch-music.com>

5/28/2001 2:26:51 AM

--- In tuning-math@y..., graham@m... wrote:
> D.KEENAN@U... (Dave Keenan) wrote:
>
> > Doesn't the fact that meantone, (the single most popular 5-limit
> > temperament of all time), doesn't even make the top-ten, mean
that
> > there is something very wrong with our figure of demerit?
> >
>
> You're out of date.

Oh, OK! So where is it in the 5-limit ranking now?

> It's this one:
>
>
> 66/157
>
How is this approximation decided upon? What makes it 66/157 and not
some more or less complex approximation?

🔗graham@microtonal.co.uk

5/28/2001 5:54:00 AM

Paul Erlich wrote:

> --- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:
>
> > I had a hard time recognising Paultone among your top-10 7-limit
> > generators.
>
> Holy $#!% -- totally missed that. And how did MIRACLE end up on the
> _bottom_ for 9-limit?

It's moved up now.

> > I think there's a bug in your MA optimiser.
>
> MA optimization is hard. Go with RMS.

I used that algorithm *because* it's easy. If you have another one, write
the code and plug it in.

> > In the case where one or
> > more intervals is purely a multiple of the period (zero generators)
> > you need to either give a _range_ for the optimum generator, or
> > preferably eliminate the zero-generator intervals from the
> > optimisation.
> >
> > If you do that you should get 109.36 cents (not 111.04) for
> Paultone.
>
> Yes.

AIUI, this wouldn't affect the minimax. So does it matter?

> > Not by me. How about giving us the top-tens ranked according to RMS
> > error times (n*d)^2, generators in cents.
> >
> Good idea.

Well, go on and implement it.

Sorry if this sounds dismissive, but I would like to get some music
written today.

Graham

🔗graham@microtonal.co.uk

5/28/2001 5:54:00 AM

Paul wrote:

> > You're out of date.
>
> Oh, OK! So where is it in the 5-limit ranking now?

<counts> 5. The files should be on the website, and not have changed
since Saturday night (my time).

>
> > It's this one:
> >
> >
> > 66/157
> >
> How is this approximation decided upon? What makes it 66/157 and not
> some more or less complex approximation?

The temperaments are chosen from pairs of consistent ETs. To prevent
duplicates, more complex temperaments always overwrite simpler ones with
the same mapping. The program's searching ETs from 1 to 99, and so the
most complex meantone pair is 88 and 69.

This is something that should be fixed, to give a simpler default and all
the versions in a detailed list, but I haven't done so yet.

Graham

🔗Paul Erlich <paul@stretch-music.com>

5/28/2001 10:04:29 AM

--- In tuning-math@y..., graham@m... wrote:
>
> AIUI,

??

>this wouldn't affect the minimax. So does it matter?

Yup -- the 6:5 and 5:3 are kinda hairy at your value.

> Sorry if this sounds dismissive, but I would like to get some music
> written today.

Yay! By the way, your Blackjack chord progression totally blew away
and inspired Joseph Pehrson. You should take this as a sign that
you're on the right track!

🔗graham@microtonal.co.uk

5/28/2001 12:55:00 PM

Paul wrote:

> There's only one interval that sounds like a repetition of the same
> pitch to humans and other mammals. It's pretty close to 2:1.

That isn't what I found by playing the Bohlen-Pierce and O'Connell scales
with the matching timbres. I'll keep looking for alternative periods
until my ears tell me otherwise.

Graham

🔗graham@microtonal.co.uk

5/28/2001 12:55:00 PM

paul@stretch-music.com (Paul Erlich) wrote:

> > AIUI,
>
As I Understand It

> >this wouldn't affect the minimax. So does it matter?
>
> Yup -- the 6:5 and 5:3 are kinda hairy at your value.

But I'm only doing the optimization in order to compare temperaments. The
way I'm doing it is good enough for that. The real tuning would only
become important if you actually wanted to play one of the things, which
would require sufficient effort that you could work out the optimum then.
I can do my own optimization by ear when it comes to that.

One think I don't think I've mentioned yet. Where the period is an
octave, your "miraculous" property (more complete chords than notes) is
present whenever there's a tonality diamond, isn't it? It's 2n+1 notes
required each time. So we have a theorem:

Any MOS containing a tonality diamond will have at least as many complete
chords (otonal and utonal) as notes.

> > Sorry if this sounds dismissive, but I would like to get some music
> > written today.
>
> Yay!

Actually, that was more desperation than resolution. I went out for a
walk after that, dropped in at the office to listen to some MP3s, haven't
got anything written on the holiday, although I do still like the stuff I
recorded yesterday.

The things you mention can be done. When I next look at the program I'll
implement them. But you might be able to work it out anyway with the code
and an interpreter. You don't need to know the language, just use a bit
of pattern recognition.

Optimising for inharmonic timbres with a perfect octave will be easy. The
only assumption made is that you'll have "prime" and "derived" intervals.
If all intervals are prime (no consonance is a combination of other
consonances) consistency isn't defined, so it defaults to brute force for
the ETs but might still work. Searching inharmonic timbres for a given
formal octave is straightforward too. It's only feeding in an arbitrary
set of intervals and saying "give me a period and generator" that isn't
defined.

> By the way, your Blackjack chord progression totally blew away
> and inspired Joseph Pehrson. You should take this as a sign that
> you're on the right track!

That's good. One of the things I listened to was that piece of his played
by Johnny Reinhard. I think he's somebody really worth inspiring.

Graham

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/28/2001 5:16:04 PM

--- In tuning-math@y..., "Paul Erlich" <paul@s...> wrote:
> --- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:
> > Doesn't the fact that meantone, (the single most popular 5-limit
> > temperament of all time), doesn't even make the top-ten, mean that
> > there is something very wrong with our figure of demerit?
>
> Very wrong. Very, very wrong.

When I wrote the above I hadn't got around to converting all Graham's
decimal octaves into something I could understand. Here they are.

Min Gens
Num of MA per Figure
chains Gen err compl of
per oct (cents)(cents) otonal demerit
---------------------------------------
15-limit
29 15.93 4.7 29 3948
1 497.24 10.0 23 5269
1 351.71 7.8 28 6089
3 83.02 2.8 48 6426
1 497.89 4.8 37 6619
2 83.16 3.1 52 8431
1 83.42 6.4 38 9190
1 116.72 5.0 45 10111
1 234.41 5.8 42 10162
2 165.81 3.9 52 10575

11-limit
1 116.72 3.3 22 1608
2 183.21 2.4 30 2168
2 216.74 3.1 30 2747
1 271.14 9.3 17 2693
29 16.37 3.7 29 3124
2 83.25 2.9 34 3302
1 193.24 2.8 35 3417
1 310.20 5.4 25 3404
1 585.14 4.1 29 3454
2 165.21 5.1 26 3472

9-limit
1 380.39 5.9 12 853
1 497.81 4.3 16 1109
1 351.45 1.9 25 1188
1 503.42 10.8 10 1075
1 116.72 3.3 19 1200 miracle
2 108.77 17.5 8 1119
1 316.76 2.7 22 1322
2 92.21 19.5 8 1248
1 251.71 20.5 8 1314
1 271.62 5.3 17 1544

7-limit
1 193.87 1.4 16 366
1 116.59 2.4 13 410 miracle
1 271.14 4.3 11 516
1 503.42 5.4 10 538
1 310.20 5.4 10 545
1 77.76 4.6 12 662
2 111.04 17.5 6 630 paultone
1 316.99 17.8 6 643
1 380.39 5.9 12 853
1 232.19 5.4 13 909

5-limit
1 498.26 0.2 9 18 schismic?
1 316.99 1.4 6 49 kleismic
1 387.74 1.4 8 92
1 271.56 1.0 10 101
1 503.42 5.4 4 86 meantone
1 442.92 1.5 9 121
2 105.21 3.3 6 117 disachismic
1 380.39 5.9 5 148
3 84.36 13.7 3 123
1 176.26 3.1 9 249

🔗monz <joemonz@yahoo.com>

5/28/2001 8:18:37 PM

--- In tuning-math@y..., "Paul Erlich" <paul@s...> wrote:

/tuning-math/message/56

> ... By the way, your Blackjack chord progression totally
> blew away and inspired Joseph Pehrson.

Me too!!!! I could tell by looking at it that I simply
*had* to hear it... that's exactly why *I* made the audio file!

Just wish I currently had a polyphonic keyboard to map it
too, so that I could play around with it too. (well, I'd use
Canasta instead...) Pretty soon...

-monz
http://www.monz.org
"All roads lead to n^0"

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/29/2001 12:01:36 AM

This follows from
/tuning-math/message/59

I listed the temperaments in the order that Graham ranked them but I
gave a different figure-of-demerit. I used the MA error times the
square of the max number of notes giving zero complete otonal chords
(instead MA error times square of min number of notes giving one
complete otonal chord).

You will notice that, for 5-limit, meantone is 5th on Graham's ranking
and 3rd on mine.

At the 7-limit, Miracle is 2nd on both rankings, but Paultone is 6th
on mine, 7th on Graham's. The single chain 125 c generator that I
posted many months ago doesn't make it into the top ten by Grahams
ranking, but probably would on mine.

I think that, before we start writing a paper re Miracle, we should
spend some time fine-tuning our figure of demerit (FoD) so that
meantone ends up on top of the 5-limit list. Then I will have more
confidence that we haven't missed something that is even better than
Miracle at the 7 and 11 limits.

First I'd like to confirm that squaring numbers of notes is entirely
justified by the fact that this is proportional to a number of
_intervals_. By using a number one less than Graham was using, I'm
favouring scales with fewer notes, a little more.

In thinking about why other stuff, that is obvious junk, is beating
meantone, I came up with two ideas.
(a) We need some melodic factor(s) in our FoD
(b) There is a critical range of errors. Errors greater than that
range might as well be infinite. Errors less than that range, might as
well be zero (or might as well be equal to the bottom of the range).

(a) One crude way of taking melodic efficiency (not Rothenberg's) into
account would be to use the (square of the) number of notes in the
smallest proper MOS that contains a complete otonality, instead of
merely the (square of the) number of notes (of any propriety) that
contain a complete otonality.

(b) Although one doesn't like to have too many free parameters in
these models, I think the parameter we need here is the same one that
informs harmonic entropy; i.e. the standard deviation of the
probability-of-recognition curve (or whatever it is called).

Instead of multiplying by the raw error in cents, whether it be MA or
RMS, I think we should divide by the probability of recognition of
such an error. i.e. exp(-(error/std_error)^2). We should do two runs;
one for the average listener and one for the critical listener. Paul I
think the values you use correspond to std_errors of about 17c and 10c
respectively. Is that right?

Graham, whenever you have time, I'd be very interested in the top 10's
using the above FoD (MA and RMS making 4 runs in total). If you need
more explanation of how to calculate these numbers, don't hesitate to
ask.

But maybe folks can suggest other psychoacoustically justifiable FoD's
that might give the right answer for meantone.

Regards,
-- Dave Keenan

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/29/2001 12:12:30 AM

Notice how 16.6 cents (approx one step of 72-EDO) is by far the best
"generator generator". i.e. the vast majority of top-10 generators are
very close to a multiple of it. I haven't figured out what the others
are a multiple of.

🔗graham@microtonal.co.uk

5/29/2001 2:04:00 AM

In-Reply-To: <9ev4ed+ntv4@eGroups.com>
monz wrote:

> --- In tuning-math@y..., "Paul Erlich" <paul@s...> wrote:
>
> /tuning-math/message/56
>
> > ... By the way, your Blackjack chord progression totally
> > blew away and inspired Joseph Pehrson.
>
>
> Me too!!!! I could tell by looking at it that I simply
> *had* to hear it... that's exactly why *I* made the audio file!
>
> Just wish I currently had a polyphonic keyboard to map it
> too, so that I could play around with it too. (well, I'd use
> Canasta instead...) Pretty soon...

Which progression are we talking about here? The one I worked out by
improvising and posted notation and an MP3 for, or the one I worked out on
the lattice to show it could handle a particular acoustic equivalence?

Graham

🔗graham@microtonal.co.uk

5/29/2001 2:04:00 AM

In-Reply-To: <9evi4u+e5pu@eGroups.com>
In article <9evi4u+e5pu@eGroups.com>, D.KEENAN@UQ.NET.AU (Dave Keenan)
wrote:

> Notice how 16.6 cents (approx one step of 72-EDO) is by far the best
> "generator generator". i.e. the vast majority of top-10 generators are
> very close to a multiple of it. I haven't figured out what the others
> are a multiple of.

If you look down my tables, you should see which were produced using
72-equal.

Graham

🔗graham@microtonal.co.uk

5/29/2001 2:04:00 AM

In-Reply-To: <9evhgg+5rf0@eGroups.com>
Dave Keenan wrote:

> This follows from
> /tuning-math/message/59
>
> I listed the temperaments in the order that Graham ranked them but I
> gave a different figure-of-demerit. I used the MA error times the
> square of the max number of notes giving zero complete otonal chords
> (instead MA error times square of min number of notes giving one
> complete otonal chord).
>
> You will notice that, for 5-limit, meantone is 5th on Graham's ranking
> and 3rd on mine.
>
> At the 7-limit, Miracle is 2nd on both rankings, but Paultone is 6th
> on mine, 7th on Graham's. The single chain 125 c generator that I
> posted many months ago doesn't make it into the top ten by Grahams
> ranking, but probably would on mine.

Oh, I thought the difference would be the other way.

> I think that, before we start writing a paper re Miracle, we should
> spend some time fine-tuning our figure of demerit (FoD) so that
> meantone ends up on top of the 5-limit list. Then I will have more
> confidence that we haven't missed something that is even better than
> Miracle at the 7 and 11 limits.

I don't know about that, it sounds suspiciously like fixing the experiment
to get the right results. We've got everything we need to write the
paper. The icing on the cake would be a first rate piece of music using
the ideas. But I don't think anything now could disprove the usefulness
of that scale to me.

And let's forget 9-limit. I think schismic *is* better there.

> First I'd like to confirm that squaring numbers of notes is entirely
> justified by the fact that this is proportional to a number of
> _intervals_. By using a number one less than Graham was using, I'm
> favouring scales with fewer notes, a little more.
>
> In thinking about why other stuff, that is obvious junk, is beating
> meantone, I came up with two ideas.
> (a) We need some melodic factor(s) in our FoD
> (b) There is a critical range of errors. Errors greater than that
> range might as well be infinite. Errors less than that range, might as
> well be zero (or might as well be equal to the bottom of the range).

Yes, I thought about that. There should be a curve that levels off at the
normal range and gets dramatically worse as the error or number of notes
gets larger. But you could always choose the curve to favour particular
scales, so it's arbitrary.

You can get the "right" answer by choosing a critical error range, and
taking the simplest temperament that comes within it.

> (a) One crude way of taking melodic efficiency (not Rothenberg's) into
> account would be to use the (square of the) number of notes in the
> smallest proper MOS that contains a complete otonality, instead of
> merely the (square of the) number of notes (of any propriety) that
> contain a complete otonality.

Could be. That should be doable when I start walking the scale tree. I
don't know if it'd improve anything. (Other than favour octave periods.)

> (b) Although one doesn't like to have too many free parameters in
> these models, I think the parameter we need here is the same one that
> informs harmonic entropy; i.e. the standard deviation of the
> probability-of-recognition curve (or whatever it is called).
>
> Instead of multiplying by the raw error in cents, whether it be MA or
> RMS, I think we should divide by the probability of recognition of
> such an error. i.e. exp(-(error/std_error)^2). We should do two runs;
> one for the average listener and one for the critical listener. Paul I
> think the values you use correspond to std_errors of about 17c and 10c
> respectively. Is that right?
>
> Graham, whenever you have time, I'd be very interested in the top 10's
> using the above FoD (MA and RMS making 4 runs in total). If you need
> more explanation of how to calculate these numbers, don't hesitate to
> ask.

I couldn't optimize the RMS right now. I did energy minimization at
University, probably the same ideas could be used. A steepest descent
would be the first thing to do, but I couldn't sit down and start coding
that. And there is the possibility it'll get stuck in a local minimum.
Another way would be to walk the scale tree, turning towards the lower
value, like a continued fraction. This might also hit a local minimum.

> But maybe folks can suggest other psychoacoustically justifiable FoD's
> that might give the right answer for meantone.

The value of meantone is it's musical usefulness. It gives you a simple
way of approximating the consonances without them being too bad. I don't
know how you objectify that. The original algorithm gave loads of really
complex temperaments that gave really good approximations that are way
beyond what we wanted.

One thing is to use fewer ETs to work out the temperaments in the first
place.

Graham

🔗graham@microtonal.co.uk

5/29/2001 6:15:00 AM

In-Reply-To: <9evhgg+5rf0@eGroups.com>
Dave Keenan wrote:

> Instead of multiplying by the raw error in cents, whether it be MA or
> RMS, I think we should divide by the probability of recognition of
> such an error. i.e. exp(-(error/std_error)^2). We should do two runs;
> one for the average listener and one for the critical listener. Paul I
> think the values you use correspond to std_errors of about 17c and 10c
> respectively. Is that right?
>
> Graham, whenever you have time, I'd be very interested in the top 10's
> using the above FoD (MA and RMS making 4 runs in total). If you need
> more explanation of how to calculate these numbers, don't hesitate to
> ask.

I've updated the files at <http://x31eq.com/temper.html> with a
few changes:

Simpler ETs are listed.

The +1 is taken out for measuring complexity.

The size of generator in cents is shown.

The minimax function should ignore octave-divisions as suggested, although
I'm not sure it's working.

getFigureOfDemerit has been added, to make this easier to change. You can
get it to work using the suggestion above by commenting out the last line
in the function and uncommenting the one before.

If that's too difficult for you, the results are at

<http://x31eq.com/limit5.exp>
<http://x31eq.com/limit7.exp>
<http://x31eq.com/limit9.exp>
<http://x31eq.com/limit11.exp>
<http://x31eq.com/limit15.exp>

It does make meantone the best 5-limit temperament. It leaves Miracle as
the best 11-limit, but doesn't treat it well otherwise.

Graham

🔗Paul Erlich <paul@stretch-music.com>

5/29/2001 1:08:45 PM

--- In tuning-math@y..., "monz" <joemonz@y...> wrote:
> --- In tuning-math@y..., "Paul Erlich" <paul@s...> wrote:
>
> /tuning-math/message/56
>
> > ... By the way, your Blackjack chord progression totally
> > blew away and inspired Joseph Pehrson.
>
>
> Me too!!!! I could tell by looking at it that I simply
> *had* to hear it... that's exactly why *I* made the audio file!

You deserve a lot of credit also for the voice-leading (which Joseph
and I meticulously reproduced on the keyboard) and for such a good
choice of timbre.

🔗Paul Erlich <paul@stretch-music.com>

5/29/2001 1:12:48 PM

--- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:

> (a) One crude way of taking melodic efficiency (not Rothenberg's)
into
> account would be to use the (square of the) number of notes in the
> smallest proper MOS that contains a complete otonality, instead of
> merely the (square of the) number of notes (of any propriety) that
> contain a complete otonality.

Exactly what I was thinking (with a generalized definition of
MOS) . . . and of course, the more complete otonalities, the better.
>
>Paul I
> think the values you use correspond to std_errors of about 17c and
10c
> respectively. Is that right?

Yes, that's right. You should throw a 4-5¢ case in there as well for
people interested in beating (which is totally unrelated to harmonic
entropy).

🔗Paul Erlich <paul@stretch-music.com>

5/29/2001 1:13:57 PM

--- In tuning-math@y..., graham@m... wrote:

> Which progression are we talking about here? The one I worked out
by
> improvising and posted notation and an MP3 for, or the one I worked
out on
> the lattice to show it could handle a particular acoustic
equivalence?
>
>
> Graham

The latter. I must have missed the former -- where it it?

🔗Joe Monzo <joemonz@yahoo.com>

5/29/2000 1:20:38 PM

----- Original Message -----
From: Paul Erlich <paul@stretch-music.com>
To: <tuning-math@yahoogroups.com>
Sent: Tuesday, May 29, 2001 1:08 PM
Subject: [tuning-math] Re: Temperament program issues

> --- In tuning-math@y..., "monz" <joemonz@y...> wrote:
> > --- In tuning-math@y..., "Paul Erlich" <paul@s...> wrote:
> >
> > /tuning-math/message/56
> >
> > > ... By the way, your Blackjack chord progression totally
> > > blew away and inspired Joseph Pehrson.
> >
> >
> > Me too!!!! I could tell by looking at it that I simply
> > *had* to hear it... that's exactly why *I* made the audio file!
>
> You deserve a lot of credit also for the voice-leading (which Joseph
> and I meticulously reproduced on the keyboard) and for such a good
> choice of timbre.

Wow, Paul, thanks! So the stuff I learned in school had
a point behind it after all! ;-)

-monz
http://www.monz.org
"All roads lead to n^0"

_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

🔗Paul Erlich <paul@stretch-music.com>

5/29/2001 2:37:49 PM

I don't think it's essential to make meantone look like the best 5-
limit linear temperament. Meantone is important for other reasons,
outside the scope of this program:

One of the first MOSs with complete chords is the diatonic scale. The
diatonic scale has identical tetrachords in every octave species -- a
very important melodic property. The diatonic scale allows both the
complete utonalities and the complete otonalities to come from a
single pattern in the scale -- something only my 7-limit decatonic
scales share. The diatonic scale has been the basis of musical
composition and notation back in the 3-limit era, when Pythagorean
tuning was the norm, and 5-limit practice _evolved_ from this, rather
than being a new creation. Etc, etc . . .

🔗Paul Erlich <paul@stretch-music.com>

5/29/2001 3:00:46 PM

> If that's too difficult for you, the results are at
>
> <http://x31eq.com/limit5.exp>
> <http://x31eq.com/limit7.exp>
> <http://x31eq.com/limit9.exp>
> <http://x31eq.com/limit11.exp>
> <http://x31eq.com/limit15.exp>
>
I looked at the 7-limit results and they're fascinating. While I
don't see paultone, I see a 5/11 oct. generator with a half-octave
interval of repetition. So 22-tET should work very well for it. Can
you talk about the structure of this scale at all?

🔗David C Keenan <D.KEENAN@UQ.NET.AU>

5/30/2001 3:45:50 AM

Graham wrote:
>If that's too difficult for you, the results are at ...

Thanks for doing that Graham. Much appreciated.

Here's how to calculate the notes per octave of the smallest MOS containing
a complete otonality. In pseudo Pascal.

Given period p and generator g (both in octaves) and
w as the width of the complete otonality (in generators).

r := g/p
m_prev := 0
m := 1

WHILE m <= w DO
i := INT(r)
r := 1/(r-i)
temp := m
m := m*i + m_prev
m_prev := temp

return m/p

Regards,
-- Dave Keenan
Brisbane, Australia
http://dkeenan.com

🔗graham@microtonal.co.uk

5/30/2001 5:48:00 AM

In-Reply-To: <9f166e+2vcv@eGroups.com>
Paul Erlich wrote:

> I looked at the 7-limit results and they're fascinating. While I
> don't see paultone, I see a 5/11 oct. generator with a half-octave
> interval of repetition. So 22-tET should work very well for it. Can
> you talk about the structure of this scale at all?

There was a bug in the program when I generated the exp files. The
routine for optimizing the minimax was ignoring octave-divisions, and this
got reflected in the scoring. I don't think it affected the top of any of
the lists, but that's how this scale got in.

5/11, 274.511 cent generator

basis:
(0.5, 0.22875937481971093)

mapping by period and generator:
([2, 0], ([5, 6, 7], [-4, -3, -3]))

mapping by steps:
([18, 4], [(29, 6), (42, 9), (51, 11)])

highest interval width: 4
complexity measure: 8 (10 for smallest MOS)
highest error: 0.014573 (17.488 cents)

The period is 7:5, like for diaschismic. So the max error is for that
7:5. You'll probably find it has good approximations to the rest of the
7-limit. It's also consistent with 26=, so can be generated from 22 and
26 and will have been in previous charts as this. Here's how you prove
that:

>>> import temper
>>> tuning = temper.Temperament(22,26,temper.primes[:3])
>>> tuning.mapping
([5, 6, 7], [-4, -3, -3])

Calling it 18r+4s, we have

3:2 => 11r+2s
5:4 => 6r+s
7:4 => 15r+3s
7:8 => 3r+s

r r r r s r r r r r s r r r r s r r r r r s
1 7 6 5 7 3 7
- - - - - - -
1 6 5 4 5 2 4

I think that's right. r=1/22 or 1/26, s=1/22 or 2/26.

Graham

🔗graham@microtonal.co.uk

5/30/2001 5:48:00 AM

In-Reply-To: <3.0.6.32.20010530034550.00a72d90@uq.net.au>
Dave Keenan wrote:

> Here's how to calculate the notes per octave of the smallest MOS
> containing
> a complete otonality. In pseudo Pascal.

I've updated that. It's showing 22 as a schismic MOS, which is wrong.

Graham

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/30/2001 3:27:39 PM

--- In tuning-math@y..., graham@m... wrote:
> In-Reply-To: <3.0.6.32.20010530034550.00a72d90@u...>
> Dave Keenan wrote:
>
> > Here's how to calculate the notes per octave of the smallest MOS
> > containing
> > a complete otonality. In pseudo Pascal.
>
> I've updated that. It's showing 22 as a schismic MOS, which is
wrong.

I disagree. I think it's correct. With a period of an octave won't any
generator in the range 489 to 492 cents generate a proper MOS? 490.9 c
will give you 22-EDO itself which is certainly a proper MOS (albeit a
boring one melodically). Although 22-EDO has a half-ocatve it is still
a single chain of fifths within the octave.

Regards,
-- Dave Keenan

🔗Paul Erlich <paul@stretch-music.com>

5/30/2001 3:32:49 PM

--- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:
> --- In tuning-math@y..., graham@m... wrote:
> > In-Reply-To: <3.0.6.32.20010530034550.00a72d90@u...>
> > Dave Keenan wrote:
> >
> > > Here's how to calculate the notes per octave of the smallest
MOS
> > > containing
> > > a complete otonality. In pseudo Pascal.
> >
> > I've updated that. It's showing 22 as a schismic MOS, which is
> wrong.
>
> I disagree. I think it's correct. With a period of an octave won't
any
> generator in the range 489 to 492 cents generate a proper MOS?
490.9 c
> will give you 22-EDO itself which is certainly a proper MOS (albeit
a
> boring one melodically). Although 22-EDO has a half-ocatve it is
still
> a single chain of fifths within the octave.

But it's not _schismic_!

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/30/2001 3:38:08 PM

--- In tuning-math@y..., "Paul Erlich" <paul@s...> wrote:
> --- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:
> > --- In tuning-math@y..., graham@m... wrote:
> > > In-Reply-To: <3.0.6.32.20010530034550.00a72d90@u...>
> > > Dave Keenan wrote:
> > >
> > > > Here's how to calculate the notes per octave of the smallest
> MOS
> > > > containing
> > > > a complete otonality. In pseudo Pascal.
> > >
> > > I've updated that. It's showing 22 as a schismic MOS, which is
> > wrong.
> >
> > I disagree. I think it's correct. With a period of an octave won't
> any
> > generator in the range 489 to 492 cents generate a proper MOS?
> 490.9 c
> > will give you 22-EDO itself which is certainly a proper MOS
(albeit
> a
> > boring one melodically). Although 22-EDO has a half-ocatve it is
> still
> > a single chain of fifths within the octave.
>
> But it's not _schismic_!

Ok. So what are the generator and period we are talking about here.
The algorithm doesn't take "schismic" as input.

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/30/2001 4:31:44 PM

--- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:
Ok. Pardon my ignorance. I looked up Schismic on Graham's website.
It's what I call simply Pythagorean. A 498 cent generator with an
octave period.

My Excel implementation of the algorithm gives
Proper MOS sequence:
1
2
5
12
41
53

So I agree. 22 shouldn't be there.

Either I've given the algorithm wrongly in Pseudo-Pascal or Graham's
implemented it wrongly. Probably the former. I'll have a look when I
get the time.

-- Dave Keenan

🔗David C Keenan <D.KEENAN@UQ.NET.AU>

5/31/2001 12:29:41 AM

I goofed. It should have been (changes shown with *):

Given period p and generator g (both in octaves) and
w as the width of the complete otonality (in generators).

r := g/p
i := INT(r) *
m_prev := 0
m := 1

WHILE m <= w DO
r := 1/(r-i) *
i := INT(r) *
temp := m
m := m*i + m_prev
m_prev := temp

return m/p

Here's a trace for a schismic generator of 498 cents.

g = 0.415
p = 1
r = 0.415
i = 0
m_prev = 0
m = 1
iteration 1
r = 2.410
i := 2
temp = 1
m = 2
m_prev = 1
iteration 2
r = 2.441
i = 2
temp = 2
m = 5
m_prev = 2
iteration 3
r = 2.267
i = 2
temp = 5
m = 12
m_prev = 5
iteration 4
r = 3.750
i = 3
temp = 12
m = 41
m_prev = 12

etc.

Regards,
-- Dave Keenan
Brisbane, Australia
http://dkeenan.com

🔗graham@microtonal.co.uk

5/31/2001 2:35:00 AM

In-Reply-To: <3.0.6.32.20010531002941.00a80540@uq.net.au>
Dave Keenan wrote:

> Given period p and generator g (both in octaves) and
> w as the width of the complete otonality (in generators).
>
> r := g/p
> i := INT(r) *
> m_prev := 0
> m := 1
>
> WHILE m <= w DO
> r := 1/(r-i) *
> i := INT(r) *
> temp := m
> m := m*i + m_prev
> m_prev := temp
>
> return m/p

Right, here's my method with a bit of debugging code:

def getSmallestContainingMOS(self, consonances=None):
consonances = consonances or self.consonances

width = self.getWidestInterval(consonances)[0]

print "generator=%s"%self.basis[1]
print "period=%s"%self.basis[0]
ratio = self.basis[1]/self.basis[0]
i = int(ratio)
print str(locals())

mPrev = 0
m = 1
while m <= width:
ratio = 1/(ratio-i)
i = int(ratio)
mPrev, m = m, m*i + mPrev
print str(locals())

return m*self.octaveDivision

So that should be the same

> Here's a trace for a schismic generator of 498 cents.
>
> g = 0.415
> p = 1
> r = 0.415
> i = 0
> m_prev = 0
> m = 1
> iteration 1
> r = 2.410
> i := 2
> temp = 1
> m = 2
> m_prev = 1
> iteration 2
> r = 2.441
> i = 2
> temp = 2
> m = 5
> m_prev = 2
> iteration 3
> r = 2.267
> i = 2
> temp = 5
> m = 12
> m_prev = 5
> iteration 4
> r = 3.750
> i = 3
> temp = 12
> m = 41
> m_prev = 12

So, for this temperament it gives, with cleaned up output:

>>> reload(temper)
<module 'temper' from 'temper.py'>
>>> tuning = temper.Temperament(12,29,temper.primes[:2])
>>> tuning.setConsonanceLimit(temper.limit5)
>>> tuning.optimizeMinimax()
>>> tuning.getSmallestContainingMOS()
generator=0.415218399352
period=1.0
{'ratio': 0.4152183993518006,
'consonances': [(0, 0), (1, 0), (0, 1), (-1, 1)],
'width': 9, 'i': 0}
{'m': 2, 'i': 2, 'mPrev': 1,
'ratio': 2.4083711164079067,
'width': 9}
{'m': 5,
'i': 2,
'mPrev': 2,
'ratio': 2.448753008773366,
'width': 9}
{'m': 12,
'i': 2,
'mPrev': 5,
'ratio': 2.2283973153370669
'width': 9}
12

I think that's equivalent. Anyway, the answer's 12, which is more like
it. So I'll update the main stuff to show this.

Graham

🔗David C Keenan <D.KEENAN@UQ.NET.AU>

5/31/2001 9:20:55 AM

--- In tuning-math@y..., graham@m... wrote:
> Right, here's my method with a bit of debugging code:
...
> I think that's equivalent.

Yes. Looks good.

> Anyway, the answer's 12, which is more
> like it. So I'll update the main stuff to show this.

Note that the algorithm I gave does not necessarily give the smallest
containing MOS, but it gives the smallest containing strictly-proper-MOS.
i.e. It only calculates the denominators of the _convergents_ of the ratio,
not the _semi-convergents_ which correspond to improper MOS.

See http://depts.washington.edu/pnm/CLAMPITT.pdf

Actually, I have no proof of this correspondence, only the lack of a
counterexample.

Here's the algorithm modified to return the smallest containing MOS, and
tell you whether it is strictly proper.

def getSmallestContainingMOS(self, consonances=None):
consonances = consonances or self.consonances

width = self.getWidestInterval(consonances)[0]

ratio = self.basis[1]/self.basis[0]
i = int(ratio)
mPrev, m = 0, 1
n = i

while m <= width:
ratio = 1/(ratio-i)
i = int(ratio)
mPrev, m = m, mPrev + m
n = 1
while (n < i) & (m <= width):
m = m + mPrev
n = n+1

strictlyProper = (n == i)

return m*self.octaveDivision, strictlyProper

Alternatively, you might prefer to have it return both the smallest
containing MOS and the smallest strictly-proper containing MOS.

def getSmallestContainingMOS(self, consonances=None):
consonances = consonances or self.consonances

width = self.getWidestInterval(consonances)[0]

ratio = self.basis[1]/self.basis[0]
i = int(ratio)
mPrev, m = 0, 1
smallest = 1
n = i

while m <= width:
ratio = 1/(ratio-i)
i = int(ratio)
mPrev, m = m, mPrev + m
if (m > width) & (smallest == 1):
smallest = m
n = 1

while (n < i):
m = m + mPrev
if (m > width) & (smallest == 1):
smallest = m
n = n+1

return smallest*self.octaveDivision, m*self.octaveDivision

You're gonna have to correct my syntax for sure.

I think the following is equivalent.

def getSmallestContainingMOS(self, consonances=None):
consonances = consonances or self.consonances

width = self.getWidestInterval(consonances)[0]

ratio = self.basis[1]/self.basis[0]
i = int(ratio)
mPrev, m = 0, 1
smallest = 1
n = i

while m <= width:
ratio = 1/(ratio-i)
i = int(ratio)
mPrev, m = m, mPrev
n = 0

repeat:
m = m + mPrev
if (m > width) & (smallest == 1):
smallest = m
n = n+1
until n >= i

return smallest*self.octaveDivision, m*self.octaveDivision

Regards,
-- Dave Keenan
Brisbane, Australia
http://dkeenan.com

🔗graham@microtonal.co.uk

5/31/2001 11:00:00 AM

In-Reply-To: <3.0.6.32.20010531092055.00a85990@uq.net.au>
Dave Keenan wrote:

> Note that the algorithm I gave does not necessarily give the smallest
> containing MOS, but it gives the smallest containing
> strictly-proper-MOS.
> i.e. It only calculates the denominators of the _convergents_ of the
> ratio,
> not the _semi-convergents_ which correspond to improper MOS.

We don't want to reject Blackjack as an MOS, do we?

> See http://depts.washington.edu/pnm/CLAMPITT.pdf
>
> Actually, I have no proof of this correspondence, only the lack of a
> counterexample.

It looks like it works.

> You're gonna have to correct my syntax for sure.

Both examples run. The only quibbles are:

It'd be better to use and than &.

There are no brackets round the condition of the first while loop, so they
aren't needed for the other one either.

> I think the following is equivalent.

...

> repeat:
> m = m + mPrev
> if (m > width) & (smallest == 1):
> smallest = m
> n = n+1
> until n >= i
>
> return smallest*self.octaveDivision, m*self.octaveDivision

Only the repeat...until had to be converted for this, and it's the one I
left active after uploading.

Although it gives good, quick data, I don't think we should be returning
two results. It'll cause confusion later on. The best thing would be to
have a condition on input to do the check or not. Hopefully, this would
avoid duplication of code.

Does

while m <= width:
ratio = 1/(ratio-i)
i = int(ratio)

if mustBeStrictlyProper:
mPrev, m = m, m*i + mPrev

else:
mPrev, m = m, mPrev
n = 0

while 1:
m = m + mPrev
if m > width and smallest == 1:
smallest = m
n = n+1
if n >= i: break

look right?

In fact, couldn't that inner loop be

for n in range(i):
m = m + mPrev
if m > width and smallest == 1:
smallest = m

looping n from 0 to i? There also seems to be a redundant n=i in there.
Ah, wouldn't have worked before because you were testing n at the end.

Right I think this is the thing:

def getSmallestContainingMOS(
self, consonances=None, mustBeStrictlyProper=0):
"""Dave Keenan's Algorithm"""

consonances = consonances or self.consonances
width = self.getWidestInterval(consonances)[0]

ratio = self.basis[1]/self.basis[0]
i = int(ratio)

mPrev, m = 0, 1
while m <= width:
ratio = 1/(ratio-i)
i = int(ratio)

if mustBeStrictlyProper:
mPrev, m = m, m*i + mPrev

else:
mPrev, m = m, mPrev

for n in range(i):
m = m + mPrev
if m > width:
return m*self.octaveDivision ###

return m*self.octaveDivision

But I haven't uploaded it because you get more information in the txt
files the other way.

Graham

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/31/2001 7:06:53 PM

--- In tuning-math@y..., graham@m... wrote:
> In-Reply-To: <3.0.6.32.20010531092055.00a85990@u...>
> Dave Keenan wrote:
>
> > Note that the algorithm I gave does not necessarily give the
smallest
> > containing MOS, but it gives the smallest containing
> > strictly-proper-MOS.
> > i.e. It only calculates the denominators of the _convergents_ of
the
> > ratio,
> > not the _semi-convergents_ which correspond to improper MOS.
>
> We don't want to reject Blackjack as an MOS, do we?

There's no question that Blackjack is a MOS. But it doesn't contain a
hexad so its a moot point and you'll get 31 for the 11-limit MOS
whether you insist it be proper or not. But of course Blackjack does
contain complete otonalities at odd-limits lower than 11. Really we
want to see both sets of generator rankings (those where we insist it
be proper and those where we don't).

Note that because we are dealing with generators which are irrational
fractions of an octave, we don't have to worry about the distinction
between proper and strictly-proper. No generator will ever be
precisely on the borderline, i.e. merely-proper. However you should be
aware that this algorithm, if fed rational generators, may include the
merely-proper with either the improper, or the strictly-proper,
depending on floating point precision.

Did you spot the unintentional almost-pun above. "_dealing_ with
generators" in Blackjack and Canasta. :-)

> > repeat:
> > m = m + mPrev
> > if (m > width) & (smallest == 1):
> > smallest = m
> > n = n+1
> > until n >= i
> >
> > return smallest*self.octaveDivision, m*self.octaveDivision
>
> Only the repeat...until had to be converted for this, and it's the
one I
> left active after uploading.
>
> Although it gives good, quick data, I don't think we should be
returning
> two results. It'll cause confusion later on. The best thing would
be to
> have a condition on input to do the check or not. Hopefully, this
would
> avoid duplication of code.

Yes. I agree with this approach.

> Right I think this is the thing:
>
>
> def getSmallestContainingMOS(
> self, consonances=None, mustBeStrictlyProper=0):
> """Dave Keenan's Algorithm"""
>
> consonances = consonances or self.consonances
> width = self.getWidestInterval(consonances)[0]
>
> ratio = self.basis[1]/self.basis[0]
> i = int(ratio)
>
> mPrev, m = 0, 1
> while m <= width:
> ratio = 1/(ratio-i)
> i = int(ratio)
>
> if mustBeStrictlyProper:
> mPrev, m = m, m*i + mPrev
>
> else:
> mPrev, m = m, mPrev
>
> for n in range(i):
> m = m + mPrev
> if m > width:
> return m*self.octaveDivision ###
>
> return m*self.octaveDivision

Yes. That looks to be correct.

So where are the results of the latest runs and what is your ranking
based on now?

Is the current Figure of Demerit (FoD) the size of smallest MOS (of
any propriety) containing a complete otonality, divided by the
probability of misrecognition of the MA error with a standard error of
10 cents?

Could you give the values of the parameters at the top of the output
file (MA versus RMS, MOS versus any, strictly proper MOS versus any
MOS, standard error). And could you give the actual FoD for each
generator so we can see _how_much_ better some generator might be than
its runner-ups?

I'm sure you can knock up a simple numerical min RMS finder to give
you the RMS optimium generator within say 0.01 c. Take an initial
estimate of the generator, calculate the RMS errors for generators
0.01 cents on either side. Figure out which direction reduces the RMS
error. Head downhill in increments of 0.01 cents until the error
increases again. Return the generator and RMS error before last.

Regards,
-- Dave Keenan

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

5/31/2001 7:25:43 PM

Note that the current implementation of this algorithm may fail with a
divide by zero error or a floating-point overflow with a generator
that is a rational fraction of the period. It should probably check
for the case where i and r differ by some really tiny amount and exit.
But maybe this will never happen with any "real" generators.

🔗graham@microtonal.co.uk

6/1/2001 4:39:00 AM

In-Reply-To: <9f6tbt+q4km@eGroups.com>
Dave Keenan wrote:

> So where are the results of the latest runs and what is your ranking
> based on now?

They're at <http://x31eq.com/temper.html> where they always
were. The ranking is how it always was, as I didn't get explicit
instructions on that, but it shows the outputs from your function.

At this point I add that if you got the interpreter and code you could try
whatever rankings you wanted without having to bounce them through the
list every time.

One thing you can do, and maybe I should add an example, is supply your
own cmp function to sort() instead of using the built-in comparisons.
Then you can do multiple runs with different FoDs. It may even be
possible to supply a custom FoD interactively.

I'm also thinking of getting it to automatically upload the results by
FTP. That would make it a lot easier to spew out a load of different
results.

> Is the current Figure of Demerit (FoD) the size of smallest MOS (of
> any propriety) containing a complete otonality, divided by the
> probability of misrecognition of the MA error with a standard error of
> 10 cents?

No, but I could do that.

> Could you give the values of the parameters at the top of the output
> file (MA versus RMS, MOS versus any, strictly proper MOS versus any
> MOS, standard error). And could you give the actual FoD for each
> generator so we can see _how_much_ better some generator might be than
> its runner-ups?

I could do that.

> I'm sure you can knock up a simple numerical min RMS finder to give
> you the RMS optimium generator within say 0.01 c. Take an initial
> estimate of the generator, calculate the RMS errors for generators
> 0.01 cents on either side. Figure out which direction reduces the RMS
> error. Head downhill in increments of 0.01 cents until the error
> increases again. Return the generator and RMS error before last.

Yes, but that wouldn't avoid local minima. In the 15-limit I think these
may be a problem. It'd also likely overrun my lunch hour (again) if I did
all these things.

Graham

🔗Paul Erlich <paul@stretch-music.com>

6/1/2001 9:39:43 AM

--- In tuning-math@y..., graham@m... wrote:
> In-Reply-To: <9f6tbt+q4km@e...>
> Dave Keenan wrote:
>
> > So where are the results of the latest runs and what is your
ranking
> > based on now?
>
> They're at <http://x31eq.com/temper.html

So under 7-limit, I presume this refers to my decatonic:

2/11, 111.043 cent generator

basis:
(0.5, 0.092535859554517375)

mapping by period and generator:
([2, 0], ([3, 5, 6], [1, -2, -2]))

mapping by steps:
([12, 10], [(19, 16), (28, 23), (34, 28)])

highest interval width: 3
complexity measure: 6 (8 for smallest MOS)
highest error: 0.014573 (17.488 cents)

Can you explain where you're getting 8 for smallest MOS? There are
MOSs with 2, 4, 6, 8 notes, but 10 is the first proper one . . . how
is complexity measure defined now?

P.S. If you're using propriety for anything, I'd chuck it in favor of
CS.

🔗graham@microtonal.co.uk

6/1/2001 9:56:00 AM

In-Reply-To: <9f8ggf+60hs@eGroups.com>
Paul wrote:

> So under 7-limit, I presume this refers to my decatonic:
>
> 2/11, 111.043 cent generator
>
> basis:
> (0.5, 0.092535859554517375)
>
> mapping by period and generator:
> ([2, 0], ([3, 5, 6], [1, -2, -2]))
>
> mapping by steps:
> ([12, 10], [(19, 16), (28, 23), (34, 28)])
>
> highest interval width: 3
> complexity measure: 6 (8 for smallest MOS)
> highest error: 0.014573 (17.488 cents)

Looks like it.

> Can you explain where you're getting 8 for smallest MOS? There are
> MOSs with 2, 4, 6, 8 notes, but 10 is the first proper one . . . how
> is complexity measure defined now?

Dunno, it's Dave's formula. I'm not sure why you only get one MOS there:
it should have given both proper and improper at the time you wrote.

> P.S. If you're using propriety for anything, I'd chuck it in favor of
> CS.

Do you have the algorithm?

The files are updated now to use only the don't-care-about-propriety
version. It also does the ranking using it. And I've added a
metafunction so that you can easily plug in a new figure of demerit.
Plus the FTP code so I can easily upload the changes.

Graham

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

6/1/2001 4:14:39 PM

--- In tuning-math@y..., "Paul Erlich" <paul@s...> wrote:
> So under 7-limit, I presume this refers to my decatonic:
>
> 2/11, 111.043 cent generator

Yes. So it appears Graham has reverted to including intervals which
are purely a multiple of the period, when calculating the MA optimum
generator. It needs to include these when giving the actual MA error,
but not when finding the optimum generator. Bu this is a minor detail.

> Can you explain where you're getting 8 for smallest MOS? There are
> MOSs with 2, 4, 6, 8 notes, but 10 is the first proper one . . . how
> is complexity measure defined now?

8 is the smallest MOS that contains a complete otonality (or
utonality).

"complexity measure" (perhaps not a good name since it is completely
unrelated to harmonic complexity) is the max number of notes (not necc
MOS) that contain zero complete otonalities. You get an otonality for
every note after that. It's the width of the otonality in generators
times the number of chains in the octave.

> P.S. If you're using propriety for anything, I'd chuck it in favor
of
> CS.

Good idea. We now have a simple algorithm that, given the generator
and period and width of an otonality, will give us the size of either
the smallest MOS containing one, or the smallest strictly-proper MOS
containing one.

Can you write us a CS recogniser that, when given the generator,
period and the number of notes in each chain, will say yea or nay? And
we'll slot it in.

Here's a wild idea that my mathematical intuition just popped up.
Could it be that a MOS is CS if and only if it is either
strictly-proper (denom of convergent) or it is either the first or
last in a series of improper MOS (denoms of semiconvergents) between
two strictly-proper MOS. Is Miracle-11 CS? I guess this idea is wrong
because you implied that 8 of paultone in not CS.

-- Dave Keenan

🔗Paul Erlich <paul@stretch-music.com>

6/1/2001 4:41:00 PM

--- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:

>I guess this idea is wrong
> because you implied that 8 of paultone in not CS.

I think I implied wrong!

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

6/1/2001 6:19:48 PM

--- In tuning-math@y..., "Paul Erlich" <paul@s...> wrote:
> --- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:
>
> >I guess this idea is wrong
> > because you implied that 8 of paultone in not CS.
>
> I think I implied wrong!

You'll let us know when you're sure, won't you?

Here's part of the MOS-cardinality series for the 380 cent generator
approx 6/19 oct (single chain).

3 (4 7 10 13 16) 19

3 and 19 are strictly proper. Can you tell us which of those in
between are CS? I'm not very familiar with CS.

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

6/1/2001 6:47:28 PM

--- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:
> Here's part of the MOS-cardinality series for the 380 cent generator
> approx 6/19 oct (single chain).
>
> 3 (4 7 10 13 16) 19
>
> 3 and 19 are strictly proper. Can you tell us which of those in
> between are CS? I'm not very familiar with CS.

It seems from
http://www.ixpres.com/interval/dict/constant.htm
that Carl Lumma was briefly seduced into thinking that all MOS are CS,
or rather that a CS was a family of MOS scales with a particular
property (which seems to be simply having the same generator) rather
than a single scale with a particular property (i.e. for all intervals
available in a scale, all instances of that interval are subtended by
the same number of scale steps).

Can someone give me an example of a MOS that is not CS?

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

6/1/2001 7:18:19 PM

Ok. Try this:

All MOS whose generator is an irrational fraction of their period, are
CS.

If I take the generator to be say

1 + 6*phi
---------- oct ~= 380.8191213102 cents
3 + 19*phi

Then I find MOS of sizes 3 (4 7 10 13 16) 19, all to be CS.

It's only when we set the generator to precisely 6/19 oct that we find
that 13 and 16 are not CS (but 16 is proper).

Agreed?

That makes Erv's definition of CS (as relayed by Kraig and Monz)
pretty useless. Are CS only defined for scales embedded in EDPs (Equal
Divisions of the Period)? Did they leave that bit out? Or are we
supposed to parameterise the definition of CS with some allowable
error whereby two slightly different intervals are to be considered as
instances of the same interval?

-- Dave Keenan

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

6/1/2001 7:37:25 PM

--- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:
I'm having a great time replying to my own posts. Thank goodness you
guys aren't in the same time zone or I'd never get anything else done.
:-)

Notice that a chain of 21 Miracle generators is CS when embedded in
72-EDO or 41-EDO, but not in 31-EDO, although it becomes proper in
31-EDO.

🔗monz <joemonz@yahoo.com>

6/1/2001 7:50:45 PM

--- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:

/tuning-math/message/106

> That makes Erv's definition of CS (as relayed by Kraig and Monz)
> pretty useless. Are CS only defined for scales embedded in EDPs
> (Equal Divisions of the Period)? Did they leave that bit out?
> Or are we supposed to parameterise the definition of CS with
> some allowable error whereby two slightly different intervals
> are to be considered as instances of the same interval?

Hi Dave,

I'm glad you're asking these questions, because I've long
been unhappy with my definition of CS, along with many of
the other terms that feature prominently in Wilson's theory.

Unfortunately, I understand them less than you do, so I'm
of no help.

Is Daniel Wolf on this list? He might be of some real
help here.

-monz
http://www.monz.org
"All roads lead to n^0"

🔗carl@lumma.org

6/2/2001 12:05:34 AM

>It seems from http://www.ixpres.com/interval/dict/constant.htm
>that Carl Lumma was briefly seduced into thinking that all MOS
>are CS

Nope.

>or rather that a CS was a family of MOS scales with a particular
>property (which seems to be simply having the same generator)

Not a family of scales, but a family of scale cardinalities
common to MOSs with the same ie but different generators.
This was simply my guess at which one of Erv's ideas (that I
knew about) he might call CS, knowing absolutely nothing more
about CS than the name itself.

>rather than a single scale with a particular property
>(i.e. for all intervals available in a scale, all instances of
>that interval are subtended by the same number of scale steps).

The correct definition later furnished by Kraig Grady.

>Can someone give me an example of a MOS that is not CS?

Any MOS with L:s = 2:1 will not be CS. The diatonic scale
in 12-equal comes to mind.

Monz, that was Erlich, not me, who linked PBs and CS in
message 15405.

-Carl

🔗graham@microtonal.co.uk

6/2/2001 12:13:00 AM

Paul wrote:

> The latter. I must have missed the former -- where it it?

<http://x31eq.com/miracle/>. You complained about it ending
with a neutral triad IIRC.

Graham

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

6/2/2001 12:21:59 AM

--- In tuning-math@y..., carl@l... wrote:
> >It seems from http://www.ixpres.com/interval/dict/constant.htm
> >that Carl Lumma was briefly seduced into thinking that all MOS
> >are CS
>
> Nope.
>
> >or rather that a CS was a family of MOS scales with a particular
> >property (which seems to be simply having the same generator)
>
> Not a family of scales, but a family of scale cardinalities
> common to MOSs with the same ie but different generators.
> This was simply my guess at which one of Erv's ideas (that I
> knew about) he might call CS, knowing absolutely nothing more
> about CS than the name itself.

Ok. Monz, you might want to delete that bit from your dictionary.

> >rather than a single scale with a particular property
> >(i.e. for all intervals available in a scale, all instances of
> >that interval are subtended by the same number of scale steps).
>
> The correct definition later furnished by Kraig Grady.
>
> >Can someone give me an example of a MOS that is not CS?
>
> Any MOS with L:s = 2:1 will not be CS. The diatonic scale
> in 12-equal comes to mind.

Thanks Carl. But the above definition means that I can make an
infinitesimal change to the generator (in either direction) and the
scale suddenly becomes CS. Not a very useful scale property. Or not a
very useful definition of it.

Anyone want to propose a better definition? One that doesn't have this
defect.

-- Dave Keenan

🔗Paul Erlich <paul@stretch-music.com>

6/2/2001 1:49:55 PM

--- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:

> That makes Erv's definition of CS (as relayed by Kraig and Monz)
> pretty useless.

It's not useless -- most scales characterized as CS are not MOSs.

> Are CS only defined for scales embedded in EDPs (Equal
> Divisions of the Period)?

Nope!

> Did they leave that bit out?

Nope!

> Or are we
> supposed to parameterise the definition of CS with some allowable
> error whereby two slightly different intervals are to be considered as
> instances of the same interval?

Nope!

🔗Paul Erlich <paul@stretch-music.com>

6/2/2001 1:52:42 PM

--- In tuning-math@y..., graham@m... wrote:
> Paul wrote:
>
> > The latter. I must have missed the former -- where it it?
>
> <http://x31eq.com/miracle/>. You complained about it ending
> with a neutral triad IIRC.

Oops -- I forgot to listen to this on good speakers. On the speakers I
was listening to it on, there was so much distortion that I didn't
even know it was supposed to be a neutral triad.

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

6/2/2001 3:56:15 PM

--- In tuning-math@y..., "Paul Erlich" <paul@s...> wrote:
> --- In tuning-math@y..., "Dave Keenan" <D.KEENAN@U...> wrote:
>
> > That makes Erv's definition of CS (as relayed by Kraig and Monz)
> > pretty useless.
>
> It's not useless -- most scales characterized as CS are not MOSs.
>
> > Are CS only defined for scales embedded in EDPs (Equal
> > Divisions of the Period)?
>
> Nope!
>
> > Did they leave that bit out?
>
> Nope!
>
> > Or are we
> > supposed to parameterise the definition of CS with some allowable
> > error whereby two slightly different intervals are to be

This isn't very helpful Paul. Can you give a definition that we can
turn into a recognition algorithm for the case of MOS, such that, when
considered as a Boolean function of the generator size, it does not
contain spikes of infinitesimal width?

considered as
> > instances of the same interval?
>
> Nope!

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

6/2/2001 3:58:50 PM

From: "Daniel Wolf" <djwolf1@matavnet.hu>
To: "Dave Keenan" <D.KEENAN@UQ.NET.AU>
Subject: Re: Constant Structures?
Date: Sat, 2 Jun 2001 09:55:36 +0200

Hi:

It's sounds to me as if you're trying to define a property other than
Wilson's
CS. As I understand it, Wilson uses CS to describe a pattern shared
by a group
of tunings that can be mapped onto a single scale tree pattern, even
if the
generator size is only a average value. For example, he maps the
3(1,3,7,9,11,15 Eikosany (plus two "pigtails"), a scale based on an
Indian Sruti
model, and 22tet onto a 22-tone keyboard and notation. The subsets
described by
the scale tree then becomes useful paths for orientation in ´the
larger system.

I am not aware if Wilson has formalized this any further. I don't know
if he
works by trial and error or has some formulae to determine if and how
a scale
fits a CS. I do know that it has been an important question for him
(i.e.
fitting Partch onto 41, or figuring out that the 3(1,3,5,7,9,11
Eikosany does
NOT fit into a low number CS.

(Writing the above, I've got the strong suspicion that constructing a
formula
that will predict whether and where in the scale tree a given scale
will find a
CS is probably very hard to construct.)

I know that this isn't much, but I hope it helps.

Deej

🔗Dave Keenan <D.KEENAN@UQ.NET.AU>

6/2/2001 4:02:38 PM

Date: Fri, 01 Jun 2001 21:21:24 -0700
To: David C Keenan <d.keenan@uq.net.au>
From: Carl Lumma <carl@lumma.org>
Subject: Re: Constant Structures?

Howdy Dave!

>We could use some help here. I understand this is ground you've been
over.
>Namely the definition of "Constant Structure".
>
>Start from the "> P.S." about halfway thru
>/tuning-math/message/102
>and follow the thread.

I'll have to ask why you call Paul's suggestion a "good idea" here.

The following excerpt from a paper of mine may prove helpful to you:

>"Constant structures" is a term coined by Erv Wilson. A scale is a
>constant structures scale (is "CS") if each of its acoustic intervals
>appear in exactly one scale degree. This is similar to Rothenberg's
>"strict propriety" (all strictly proper scales are CS), but weaker
(many
>improper scales are also CS). Because of this, CS is not a good
measure
>of modal transposition (as are the various types of propriety), but
CS
>does reduce the complexity of the rank-order matrix. In a CS scale,
as
>soon as one hears a certain acoustic interval, he knows he has heard
a
>certain scale degree (if he can construct the matrix in the first
>place). Further, if he can memorize all the intervals in the matrix,
he
>can track scale degrees even in an improper scale (though it seems
motifs
>will still be, to a large extent, percieved by interval sizes rather
than
>types, thus making modal transposition in an improper CS scale
difficult).
>Paul Erlich has suggested a criterion in which only consonances are
>evaluated for CS. This may be considered a "special set" version of
CS.

Try also this post, from March 9, 2000:

>Some readers may wonder what Constant Structures and Propriety are
good
>for.
>
>They both assume that when we hear music, we attempt to assign scale
degree
>numbers to melodic pitches. I won't argue about that here; if you
don't
>think it happens, then propriety and CS aren't for you. But if
you're
>interested in getting it to happen or not, then they are for you.
>
>Propriety and CS both measure how easy it is for the listener to
>un-ambiguously assign scale degree numbers to pitches as he hears
them. CS
>assumes that a listener can recognize intervals by their _specific_
size --
>a 3:2 is distinct from a 7:5, and so on. So CS asks, once you
recognize
>the interval, will there be any doubt as to what scale degree it is?
If
>you can answer "no", your scale is CS. In the diatonic scale in
12-tet,
>you can answer no for all the intervals but the tritone -- it can be
a
>fourth or a fifth; you need other notes to clarify its position in
the
>scale.
>
>Propriety does the same thing, except it assumes that listeners
recognize
>intervals by their _relative_ size -- that the listener ranks the
intervals
>he hears by how big they are. The actual tuning of the intervals
doesn't
>matter, so long as their ranks are preserved. This means the theory
can be
>tested to see if people percieve a similarity between different
tunings of
>a scale with the same "rank-order", and if they percieve a difference
>between two tunings of a scale with a different rank-order.
Rothenberg has
>actually suggested some very cool experiments to test many aspects of
his
>theory, which are yet to be performed. Unfortunately,
enthno-musicology is
>simply not a source of scientific information here.

[you wrote...]
>Can you write us a CS recogniser that, when given the generator,
period
>and the number of notes in each chain, will say yea or nay? And we'll
>slot it in.

CS means all instances of a pitch in a scale's "diamondic" cross-set
occupy the same scale position. That is, CS iff no ambiguous
intervals.
I don't believe an MOS can have ambiguous intervals if L:s /= 2:1.
I'll leave the algorithm for getting L and s from n, g, and ie up to
you.

-Carl

🔗carl@lumma.org

6/2/2001 9:04:15 PM

> Thanks Carl. But the above definition means that I can make an
> infinitesimal change to the generator (in either direction) and the
> scale suddenly becomes CS. Not a very useful scale property. Or not
> a very useful definition of it.

Hate to say it Dave, but I don't think CS is that useful a property
anyway. Or, maybe I should say, I can almost hear Wilson crying
out, 'Of course! It's only a guide, an idea. Why would you expect
it to be so precise?'.

> Anyone want to propose a better definition? One that doesn't have
> this defect.

A treatment along the lines of what I did for propriety and
stability would be one approach. But by that time, I'd just be
using those measures anyway.

Now, Erlich's consonant constant structures I can live with.
One could imagine...

1. Listing the target consonances. Say, for easy of what follows,
there is only one target consonance.

2. In h.e. fashion, find for each interval in the scale the
probability it will be heard as the target interval.

3. Sum these probabilities for each scale degree.

4. Subtract from the largest sum all the other sums. Or maybe
take the difference between the two largest sums. Or maybe the
difference between the largest sum and the mean sum. Or something
like that.

...hmmm... if one insisted on normal CS and not consonant CS (CCS?),
he might use the statistical approach above, but include all the
intervals in the scale in #1, and use all the intervals instead
of a farey series in #2 (and midpoints between these instead of
mediants).

-Carl

🔗carl@lumma.org

6/2/2001 9:15:38 PM

> It's sounds to me as if you're trying to define a property other
> than Wilson's CS. As I understand it, Wilson uses CS to describe
> a pattern shared by a group of tunings that can be mapped onto a
> single scale tree pattern,even if the generator size is only a
> average value. For example, he maps the 3(1,3,7,9,11,15 Eikosany
> (plus two "pigtails"), a scale based on an Indian Sruti model, and
> 22tet onto a 22-tone keyboard and notation. The subsets described
> by the scale tree then becomes useful paths for orientation in
> ´the larger system.

Amazing, Daniel! This is just what I guessed CS was, before
the correspondence from Kraig. See monz's web site reffed earlier
in this thread.

> (Writing the above, I've got the strong suspicion that
> constructing a formula that will predict whether and where in
> the scale tree a given scale will find a CS is probably very hard
> to construct.)

On the contrary, unless I mis-understood you, the scale tree
shows the generator ranges itself. I know you know this, so
maybe I _did_ mis-read you. Can I get you to check monz's
web page?

http://www.ixpres.com/interval/dict/constant.htm

-Carl

🔗carl@lumma.org

6/2/2001 9:21:21 PM

>Anyone want to propose a better definition? One that doesn't have
>this defect.

Actually, Dave, if you're only interested in CS, I think you can
just use the size of L/s. The stuff I gave in my last message
is good for any scale (not just MOS).

-Carl

🔗jpehrson@rcn.com

6/3/2001 9:14:35 AM

--- In tuning-math@y..., "Paul Erlich" <paul@s...> wrote:

/tuning-math/message/68

> --- In tuning-math@y..., "monz" <joemonz@y...> wrote:
> > --- In tuning-math@y..., "Paul Erlich" <paul@s...> wrote:
> >
> > /tuning-math/message/56
> >
> > > ... By the way, your Blackjack chord progression totally
> > > blew away and inspired Joseph Pehrson.
> >
> >
> > Me too!!!! I could tell by looking at it that I simply
> > *had* to hear it... that's exactly why *I* made the audio file!
>
> You deserve a lot of credit also for the voice-leading (which
Joseph
> and I meticulously reproduced on the keyboard) and for such a good
> choice of timbre.

The first time I heard that progression, I was literally paralyzed
with shock/pleasure/anticipation...etc. The fact that it seemed like
a "mobius" strip and never ended fascinated me, too. It ended up
that it was just confusing me by being 7 chords rather than
the "usual" 8 chords that are used in such exercises (see, there WERE
a couple of numbers in this post!)

___________ ________ _________
Joseph Pehrson

🔗Paul Erlich <paul@stretch-music.com>

6/3/2001 8:35:39 PM

--- In tuning-math@y..., "Dave
Keenan" <D.KEENAN@U...> wrote:

> This isn't very helpful Paul. Can you give a definition that we can
> turn into a recognition algorithm for the case of MOS, such that, when
> considered as a Boolean function of the generator size, it does not
> contain spikes of infinitesimal width?

Why? I think you guys are right
that almost all generators lead to
MOSs that are CS. So the non-MOS
scales for which the term CS is
used, which don't have a single
generator but are rather
periodicity blocks in JI, won't
concern us here.

🔗Paul Erlich <paul@stretch-music.com>

6/3/2001 8:46:22 PM

--- In tuning-math@y..., carl@l...
wrote:
> > It's sounds to me as if you're trying to define a property other
> > than Wilson's CS. As I understand it, Wilson uses CS to describe
> > a pattern shared by a group of tunings that can be mapped onto a
> > single scale tree pattern,even if the generator size is only a
> > average value. For example, he maps the 3(1,3,7,9,11,15 Eikosany
> > (plus two "pigtails"), a scale based on an Indian Sruti model, and
> > 22tet onto a 22-tone keyboard and notation. The subsets described
> > by the scale tree then becomes useful paths for orientation in
> > ´the larger system.
>
> Amazing, Daniel! This is just what I guessed CS was, before
> the correspondence from Kraig. See monz's web site reffed earlier
> in this thread.

Kraig also thought that CS meant
something different before
Wilson gave him the definition on
Monz' web page.
>
> > (Writing the above, I've got the strong suspicion that
> > constructing a formula that will predict whether and where in
> > the scale tree a given scale will find a CS is probably very hard
> > to construct.)
>
> On the contrary, unless I mis-understood you, the scale tree
> shows the generator ranges itself. I know you know this, so
> maybe I _did_ mis-read you. Can I get you to check monz's
> web page?
>
> http://www.ixpres.com/interval/dict/constant.htm
>
> -Carl

Daniel Wolf didn't post directly to
this list. So make sure someone
forwards this to him. Also, maybe
he wrote Dave privately because
the idea was that this list should
cease to exist? Perhaps we
should be posting all this to the
tuning list?

🔗ideaofgod <genewardsmith@juno.com>

12/4/2001 11:41:44 PM

(21) [16,2,5,6,37,-34] <2401/2400, 3136/3125>
68+31=99

(22) [4,-3,2,13,8,-14] <49/48,225/224>
10+9=19

(23) [1,4,10,12,-13,4> <81/80,126/125>
Meantone

(24) [1,-3,-2,4,6,7] <15/14,64/63>

[ 0 1] Generator 2.9969 /7
[-1 2]
[ 3 1]
[ 2 2]

(25) [3,0,6,14,-1,-7] <36/35,128/125>

Generators: 14.03214 / 33; 1/3

(26) [7,-3,8,27,7,-21] <225/224,1728/1715>
Orwell

(27) [6,0,3,7,12,-14] <49/48,128/125>
6+9=15

(28) [22,-5,3,21,57,-59] <2401/2400, 65625/65536>
140+31=171 a = 11.0003 / 171

This one is interesting!

(29) [8,6,6,-3,13,-9] <50/49, 875/864>

(30) [3,0,-6,-14,18,-7] <64/63, 126/125>
a = 10.9962 / 27; b = 1/3 15+12=27
An old favorite of mine.

(29)

🔗paulerlich <paul@stretch-music.com>

12/5/2001 12:00:09 AM

Could you take a look at my questions on the first 20?

🔗ideaofgod <genewardsmith@juno.com>

12/5/2001 1:43:11 AM

--- In tuning-math@y..., "paulerlich" <paul@s...> wrote:

> Could you take a look at my questions on the first 20?

I thought I did--which questions still require an answer?