back to list

Re: representation, fuzzy logic, etc.

🔗Michael Saunders <michaelsaunders7@hotmail.com>

5/20/2001 1:47:09 AM

>> >>Maybe, let me see, maybe the parameters would look like this:.
>> >>n=number of "fifths" to transpose upward,
>> >>f=the interval we call a "fifth" (it could be anything),
>> >>t=the target interval we're trying to approximate.
>>
>> >t is redundant, isn't it?
>>
>>Oh, no, without t it's just plain Pythagorean.

>I thought it wouldn't be Pythagorean, since f would be, say, (3/2)*
>(80/81)^(7/26).

As Monz pointed out, I should have said "generator" rather than "`fifth'".

>>You have to know the
>>interval you're trying to approximate in order to know how much
>>you have to temper, right?

>That's already built into the definition of meantone, and the construction >of the fifths.

And a class for generating meantone intervals is one that emulates
that definition. You give it your parameters and it generates an interval.

>>Another example, with a different "fifth":
>>n=6
>>f=9/8=204c
>>t=2/1=1200c
>>so, y=204+(1200-(204*6))/6=200c.

>Well that's not meantone. Yes, there are many scales that are analogous to >meantone...

I was just concerned with representing the generative procedures in
the most general way possible. You see, this is where the section
you're reading fits into the big picture: this is the description of
an object-oriented class library. My tuning class uses interval
objects. Interval objects are represented as a fuzzy amount of
pitch distance (which, of course, can also return a crisp value).
The intervallic tunings are just handy ways of generating interval
objects by parameter, according to a few well-known paradigms.
E.g., like the generalization of the Pythagorean paradigm above.
When these interval objects get put into a tuning object later,
and the tuning algorithm is run on them, they'll probably get
tempered then, which is why I neglected to write down a meantone
interval-generating formula (why temper beforehand, I thought).
After having talked to you about it though, I think it's an interesting
resource, and I should include it. I was trying to think of a general
form of the procedure to generate meantone intervals. Is the following
inadequate?:
y=g+(t-(g*n))/n
where g is the generating interval, t is the target interval and n is
the number of transpositions. I suppose there are other ways of
doing it---e.g., giving a maximum n and letting the computer figure
out the n that best approximates t.

>>So that formula determines the tempered interval described
>>by the parameters.

>Well, often there are more than two intervals involved in the compromise . >. .

You've lost me then---so what would the parameters be?

>perhaps it would be more interesting if you could explain your generalized >JI paradigm the way you've explained your generalized Pythagorean paradigm.

I think generating them by giving lattice coordinates would be better
than what I described in the thesis, but then I was steeped in Partch
and maybe it's a decent alternative. The idea was that JI intervals are
all representable as O/U, so that there are an infinite number of them.
So, the trick was to have just enough parameters to limit them to a
finite set and then refer to them in ascending order or by approximation
to a given interval. Keeping track of the different combinations of
parameters necessary to do that gets a bit confusing, and so I think
a lattice-based interface would be better in most cases.

_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com

🔗paul@stretch-music.com

5/20/2001 11:21:48 AM

--- In tuning@y..., "Michael Saunders" <michaelsaunders7@h...> wrote:

>
> >Well, often there are more than two intervals involved in the compromise .
> >. .
>
> You've lost me then---so what would the parameters be?

In meantone tuning, there are only three interval classes involved in the compromise.

One fifth approximates a 3/2.
Three fifths minus an octave approximates a 5/3.
Four fifths minus two octaves approximates a 5/4.

In the MIRACLE tuning (as just one of many "species" analogous to meantone we've come up
with), there's a generator, and the following (very close) approximations obtain:

Two generators approximate an 8/7.
Five generators appoximate a 7/5.
Six generators approximate a 3/2.
Seven generators approximate an 8/5.
Eight generators minus an octave approximate a 6/7.
Thirteen generators minus an octave approximate a 6/5.
Fifteen generators approximate an 11/4
(there are also approximations to 11/5, 11/6, 11/7, and 11/9 . . . you can work out what they
would be from the above).

There can also be paradigms defined by multiple chains of a generator. For example, my
favorite paradigm, the decatonic one (since there are usually 10 notes in the scale), is based on
two chains of a small fourth (c. 491 cents) generator, a half-octave apart, with the following
approximations:

One generator approximates a 4/3.
Two generators approximate a 7/4.
Three generators approximate a 7/3.
A half-octave approximates a 7/5.
Two generators minus a half-octave approximate a 5/4.
Three generators minus a half-octave approximate a 5/3.

If you could get Rusty to compose music using both these paradigms, lots of us will be
overjoyed!

🔗Michael Saunders <michaelsaunders7@hotmail.com>

5/22/2001 7:54:47 AM

>>A. Specifying the criteria first and letting Rusty do the math.
>>
>>(from my thesis, section 5.5 "Pitch and Pitch Organization" p 70.)
>>
>>1. Define your intervals fuzzily. E.g.,
>>
>> >One generator approximates a 4/3.
>> >Two generators approximate a 7/4.
>> >Three generators approximate a 7/3.
>> >A half-octave approximates a 7/5.
>> >Two generators minus a half-octave approximate a 5/4.
>> >Three generators minus a half-octave approximate a 5/3.

>Well, that's not a complete list of intervals. The complete list of >intervals would be obtained by using the formula
>a generators + b/2 octaves
>where a and b run through all possible integers.

No, no---the point is that you define only the intervals you're concerned
about---those you want your scale to approximate.

>>It's easier to visualize, however, if we imagine defining our personal
>>opinion of an interval simply as a Gaussian bell-shaped curve peaking
>>(=1) at 4/3, having a width (full width at half maximum) corresponing
>>to how much deviation from a pure interval is acceptable, and approaching
>>zero for intervals far from 4/3.

>Yes, that's good enough, as long as you know which fuzzy interval is >approximating which ratio.

I don't see any possibility for being confused about it. In the code,
you would say something like:
Interval perfectFifth=new JIIntervalicTuning({-1,1})
(assuming the JIIntervalicTuning constructor took lattice notation).
You just name the instance of the object appropriately.

>>I expect we would agree that more
>>complex intervals can bear less tempering than simpler ones, so that
>>4/3 would be a bit wider than 5/4, and so on.

>A bit wider, but a bit deeper, too.

Here there's a trivial transform, since, though these are optimization
problems, fuzzy logic is phrased in terms of 1=absolutely desireable
and 0=absolutely forbidden. I doubt you would want to represent,
say, 7/6 as less than absolutely desirable as a pure septimal minor third,
though.

>>2. Define a network of these intervals between the scalar degrees.
>>(Assuming you've defined the structure of the scale, its spelling,
>>that is, to suit yourself.)

>This and the following can all be seen as "optional". What I've given above >is sufficient to calculate one sort of optimal temperament for the paradigm >in question.

Optional if you want exactly and only your form of optimal meantones
without considering a more general optimization! Maybe a different
example is in order. Try to forget your meantone procedure for a moment
and consider this:

Define a scale with three degrees and three intervals:
C--F = ~4/3
F--Bb = ~4/3
C--Bb = ~7/4
where the tilde signifies fuzziness---represented as funtions of preferability
or "goodness" vs. pitch distance, peaking (=1) at the above intervals and
dropping off to 0. Let's say they're Gaussian curves with a width that
depends on your personal preference. Also, C=256Hz.
My algorithm does this: for F, it finds all the pathways back to C:
F-->C, F-->Bb-->C.
Similarly for Bb: Bb-->C, Bb-->F-->C
The one-interval pathways already have a fuzzy interval definition, but
the two-interval pathways don't. So, for F-->Bb-->C we have to add the
abscissae of the two fuzzy functions together. This is done by convolving
them, an operation which produces one fuzzy interval peaking at 21/16---
the curve incorporates all the information of the two convolved curves,
in this trivial example, resulting in a broader curve of similar character.
Now, there are two fuzzy intervals (one for each pathway) claiming to
define the ideal position of F. They are resolved together (combining
all the available information) by multiplication---f(x)=f_1(x)f_2(x).
this yeilds a curve peaking somewhere between 4/3 and 21/16---an
optimally tempered F, based on the criteria of how important we think
the intervals are (in this case, how narrow the bell is).

I purposely chose Gaussian curves for this example because they're
equivalent to your least-squares regression. But look at all the possibilities
in this system:
--You needn't use such simple curves---e.g., they can have multiple peaks
(e.g., for various pure thirds) or they can be based on dissonance models.
--You needn't define intervals of the scale that aren't important to you.
--You needn't weight all the intervals from one interval class equally (and
you can allow them to be slightly unequal).
--You needn't depend on the generator to decide what interval classes are
going to appear in your scale.
It's all more flexible, more general. It's like an optimization with many
independent variables (all the degrees to be tuned) rather than one
independent variable (the size of the generator). With Gaussian curves
for the fuzzy intervals, all equally weighted, this method should produce
the same results as your procedure---it's a subset of the behaviors of
Rusty tuning (which was the goal of Rusty tuning).

-m
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com

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

5/22/2001 12:28:39 PM

--- In tuning@y..., "Michael Saunders" <michaelsaunders7@h...> wrote:
>
> >>A. Specifying the criteria first and letting Rusty do the math.
> >>
> >>(from my thesis, section 5.5 "Pitch and Pitch Organization" p 70.)
> >>
> >>1. Define your intervals fuzzily. E.g.,
> >>
> >> >One generator approximates a 4/3.
> >> >Two generators approximate a 7/4.
> >> >Three generators approximate a 7/3.
> >> >A half-octave approximates a 7/5.
> >> >Two generators minus a half-octave approximate a 5/4.
> >> >Three generators minus a half-octave approximate a 5/3.
>
> >Well, that's not a complete list of intervals. The complete list
of
> >intervals would be obtained by using the formula
> >a generators + b/2 octaves
> >where a and b run through all possible integers.
>
> No, no---the point is that you define only the intervals you're
concerned
> about---those you want your scale to approximate.

And the others fall out as they may. I think we're in complete
agreement, don't you?
>
> >Yes, that's good enough, as long as you know which fuzzy interval
is
> >approximating which ratio.
>
> I don't see any possibility for being confused about it.

Neither do I . . . even cases like the half-octave, which must
approximate both 7:5 and 10:7, should be handled without difficulty.

> Here there's a trivial transform, since, though these are
optimization
> problems, fuzzy logic is phrased in terms of 1=absolutely desireable
> and 0=absolutely forbidden. I doubt you would want to represent,
> say, 7/6 as less than absolutely desirable as a pure septimal minor
third,
> though.

Only if you wanted to put less "weight" on it, I guess.

> It's all more flexible, more general.

Agreed.

> It's like an optimization with many
> independent variables (all the degrees to be tuned) rather than one
> independent variable (the size of the generator).

Well like I said, I've done optimizations like that, too. For
example, I mentioned to you that I found that a diatonic scale
(weighting all 42 intervals equally) is best tuned with the central
fifths (G-D, D-A) tempered most, say about 696 cents, and the outer
fifths (F-C, E-B) tempered least, say about 697.5 cents (if I recall
correctly).

> With Gaussian curves
> for the fuzzy intervals, all equally weighted, this method should
produce
> the same results as your procedure---it's a subset of the behaviors
of
> Rusty tuning (which was the goal of Rusty tuning).

Cool. Now I guess we can move on to adaptive tuning (which John
deLaubenfels has done wonderful work in).