back to list

pretty picture

🔗Paul H. Erlich <PERLICH@...>

10/4/2000 12:43:40 AM

If you want to see something pretty, go to
http://www.egroups.com/files/tuning/perlich/triads36.jpg.

It's a triangular (like Chalmers' tetrachordal graphs) plot of triads with
integer limit 36. There are six identical sextants, each one the mirror
image of the two next to it (as in a kaleidoscope with the mirrors at 60°).
Each sextant contains a large equilateral triangle, which represents the
triads within one octave (like Chalmers' graph represents the triads within
a fourth). The sextants represent every possible sign assignment to the
three intervals in the chord so that they sum to zero. In other words, there
are six sextants because any chord can be expressed in six ways:

x:y:z
y:x:z
z:x:y
x:z:y
y:z:x
z:y:x

The point in the center is 1:1:1, and the six lines emanating from the
center consist of triads of the form

a:a:b
a:b:b
a:b:a
b:b:a
b:a:a
b:a:b

In three of the sextants, I've marked the three inversions of the JI major
triad in red, and of the JI minor triad in blue. You can see that the major
triads have a lot more "room" around them than the minor triads.

The points get sparser as one moves away from the center because I'm using a
maximum limit (36) rather than a product (i.e. geometric mean) limit.

Further discussion should take place at harmonic_entropy@egroups.com.

🔗graham@...

10/4/2000 4:37:00 AM

In-Reply-To: <CE80F17667E4D211AE530090274662729C54DF@...>
Paul Erlich wrote:

> Each sextant contains a large equilateral triangle, which represents the
> triads within one octave (like Chalmers' graph represents the triads
> within
> a fourth). The sextants represent every possible sign assignment to the
> three intervals in the chord so that they sum to zero. In other words,
> there
> are six sextants because any chord can be expressed in six ways:

That's the stuff. I was only thinking of drawing one diagram. So the
ratio generator only needs to produce x<=y<=z because of the symmetry.

> x:y:z
> y:x:z
> z:x:y
> x:z:y
> y:z:x
> z:y:x

There follows Python code for generating ratios on one sextant of the
graph within a given product limit, in their lowest terms. It should be
possible to convert the algorithms to other languages. You can check the
results by downloading Python and running the functions.

import string

def isWithinProductLimit(ratio, limit):
return reduce(lambda x, y: x*y, ratio, 1L)<=limit

def getNextInSet(ratio, productLimit, intervalRange=2):
"""Return the next ratio in a sequence after
the one supplied, only taking those within
the product limit and interval range

note: we're including unisons now
"""
# find the first number that can be made one bigger
result = ratio[:]
for index in range(len(ratio)-1):
result[index] = result[index]+1
lowerNotes, remainder = divmod(result[-1], intervalRange)
if remainder: lowerNotes = lowerNotes+1
for j in range(index):
result[j]=lowerNotes
if result[index]<=result[index+1]:
if ratioWithinProductLimit(result, productLimit):
return result ###
# to get to here, we must increment the highest number
highestNote = result[-1]+1
lowerNotes, remainder = divmod(highestNote, intervalRange)
if remainder: lowerNotes = lowerNotes+1
result = [lowerNotes]*(len(ratio)-1)+[highestNote]
if ratioWithinProductLimit(result, productLimit):
return result ###
else:
return []##

def isInLowestTerms(ratio):
"""assumes first index is the lowest"""
for number in range(2,ratio[0]+1):
for each in ratio:
if each%number: break
else:
return 0
return 1

def getSet(nNotes, limit, span=2):
"""return a list of lists of numbers.

Each entry in the big list containing nNotes numbers,
all within the limit and range, in order lowest first.

All such ratios in their lowest terms are returned.
"""
result = []
chord = [1]*nNotes
while(chord):
if isInLowestTerms(chord):
result.append(chord)
chord = getNextInSet(chord, limit, span)
return result

def printSet(nNotes, limit, span=2):
for chord in getSet(nNotes, limit, span):
print string.join(map(str, chord),':'),

def countSet(nNotes, limit, span=2):
"""useful function for benchmarking"""
#million-limit octave triads in 37s (69491)
total=0
chord = [1]*nNotes
while(chord):
if isInLowestTerms(chord):
total=total+1
chord = getNextInSet(chord, limit, span)
return(total)

🔗William S. Annis <wsannis@...>

10/4/2000 6:04:12 AM

>There follows Python code for generating ratios on one sextant of the
>graph within a given product limit, in their lowest terms. It should be
>possible to convert the algorithms to other languages. You can check the
>results by downloading Python and running the functions.

Bugged, which I assume came about as you tried to make the
function names more sensible or consistent. I do this all the time.

>def isWithinProductLimit(ratio, limit):
> return reduce(lambda x, y: x*y, ratio, 1L)<=limit

This is called several times as ratioWithinProductLimit...

>def getNextInSet(ratio, productLimit, intervalRange=2):
> result = ratio[:]
> for index in range(len(ratio)-1):
> result[index] = result[index]+1
> lowerNotes, remainder = divmod(result[-1], intervalRange)
> if remainder: lowerNotes = lowerNotes+1
> for j in range(index):
> result[j]=lowerNotes
> if result[index]<=result[index+1]:
> if ratioWithinProductLimit(result, productLimit):
^^^^^^^^^^^^^^^^^^^^^^^

You might find my strange little python JI library
useful... or not :) http://www.execpc.com/~wsannis/ratio.html.
I've recently been making changes to that library to do more analytic
things, partially in response to the H.E. discussions. May I include
this code (probably classed or otherwise shoved into its own
namespace) in future versions? At any rate, the library improves as
my understanding does.

--
William S. Annis wsannis@...
Mi parolas Esperanton - La Internacian Lingvon www.esperanto.org

🔗Joseph Pehrson <pehrson@...>

10/4/2000 10:19:18 AM

--- In harmonic_entropy@egroups.com, "Paul H. Erlich" <PERLICH@A...>
wrote:

http://www.egroups.com/message/harmonic_entropy/43

> If you want to see something pretty, go to
> http://www.egroups.com/files/tuning/perlich/triads36.jpg.
>
> It's a triangular (like Chalmers' tetrachordal graphs) plot of
triads with integer limit 36. There are six identical sextants, each
one the mirror image of the two next to it (as in a kaleidoscope with
the mirrors at 60°).

Wow. This is mighty beautiful! Is John participating with us yet??
I wish he would... [perhaps I will inquire off-list if nobody has
already...]
____________ ___ __ __
Joseph Pehrson

🔗Paul H. Erlich <PERLICH@...>

10/4/2000 4:39:27 PM

This one looks like a map of Paris or something:

http://www.egroups.com/files/harmonic_entropy/triadp80000.jpg

It's a plot of all triads within one octave with a product limit of 80000 (A
few outside the octave snuck in due to the algorithm). Notice that this
time, the density of points does not change as one moves from near the
center toward the outside edge of the hexagon. That's because a product,
rather than largest integer, limit was used.

Can everyone identify the chords at the "major intersections" of "Triad
City"?

🔗Joseph Pehrson <josephpehrson@...>

10/4/2000 9:17:07 PM

--- In harmonic_entropy@egroups.com, "Paul H. Erlich" <PERLICH@A...>
wrote:

http://www.egroups.com/message/harmonic_entropy/65

> This one looks like a map of Paris or something:
>
> http://www.egroups.com/files/harmonic_entropy/triadp80000.jpg
>

That's right! Look at all the "etoiles!"

_____ ___ __
JP

🔗Carl Lumma <CLUMMA@...>

10/4/2000 9:42:33 PM

>If you want to see something pretty, go to:
>http://www.egroups.com/files/tuning/perlich/triads36.jpg.

That's a pretty klutch graphic, Paul!

>It's a triangular (like Chalmers' tetrachordal graphs) plot of triads with
>integer limit 36. There are six identical sextants, each one the mirror
>image of the two next to it (as in a kaleidoscope with the mirrors at 60°).
>Each sextant contains a large equilateral triangle, which represents the
>triads within one octave (like Chalmers' graph represents the triads within
>a fourth). The sextants represent every possible sign assignment to the
>three intervals in the chord so that they sum to zero. In other words, there
>are six sextants because any chord can be expressed in six ways:
>
>x:y:z
>y:x:z
>z:x:y
>x:z:y
>y:z:x
>z:y:x
>
>The point in the center is 1:1:1, and the six lines emanating from the
>center consist of triads of the form
>
>a:a:b
>a:b:b
>a:b:a
>b:b:a
>b:a:a
>b:a:b

Sorry, but could you perhaps give a simple asci example of this kind of
plot? Or at least show the axes on the plot? I'm afraid I don't quite
get it.

-Carl

🔗David Finnamore <daeron@...>

10/4/2000 10:48:58 PM

--- In harmonic_entropy@egroups.com, "Paul H. Erlich" <PERLICH@A...>
wrote:
> Can everyone identify the chords at the "major intersections"
of "Triad
> City"?

No. Is there an algorithmic way to do it? I think I can find the
major and minor Just ones from the yellow version you marked them on.

Great picture, BTW! It's a marvelous design. Another mandala.

David Finnamore

🔗Paul H. Erlich <PERLICH@...>

10/5/2000 10:11:18 AM

I wrote,

>> Can everyone identify the chords at the "major intersections"
of "Triad
>> City"?

David Finnamore wrote,

>No. Is there an algorithmic way to do it? I think I can find the
>major and minor Just ones from the yellow version you marked them on.

Do you understand the positioning of those triads?

🔗Paul H. Erlich <PERLICH@...>

10/5/2000 1:27:13 PM

Carl wrote,

>Sorry, but could you perhaps give a simple asci example of this kind of
>plot? Or at least show the axes on the plot? I'm afraid I don't quite
>get it.

Look at my last post and look at the plot again. The upper-right "sextant"
in my plot is equivalent to the rotation of Chalmers' triangle that I was
showing there, though of course the far side of the triangle is either 1200
or 2400, not 500 cents. Does that clarify it?

🔗unidala <JGill99@...>

12/22/2001 2:21:11 AM

Any chance that this image could be restored to:

http://www.egroups.com/files/tuning/perlich/triads36.jpg

or is it somewhere else these days?

J Gill

--- In harmonic_entropy@y..., "Paul H. Erlich" <PERLICH@A...> wrote:
> If you want to see something pretty, go to
> http://www.egroups.com/files/tuning/perlich/triads36.jpg.
>
> It's a triangular (like Chalmers' tetrachordal graphs) plot of triads wit=
h
> integer limit 36. There are six identical sextants, each one the mirror
> image of the two next to it (as in a kaleidoscope with the mirrors at 60°=
).
> Each sextant contains a large equilateral triangle, which represents the
> triads within one octave (like Chalmers' graph represents the triads with=
in
> a fourth). The sextants represent every possible sign assignment to the
> three intervals in the chord so that they sum to zero. In other words, th=
ere
> are six sextants because any chord can be expressed in six ways:
>
> x:y:z
> y:x:z
> z:x:y
> x:z:y
> y:z:x
> z:y:x
>
> The point in the center is 1:1:1, and the six lines emanating from the
> center consist of triads of the form
>
> a:a:b
> a:b:b
> a:b:a
> b:b:a
> b:a:a
> b:a:b
>
> In three of the sextants, I've marked the three inversions of the JI majo=
r
> triad in red, and of the JI minor triad in blue. You can see that the maj=
or
> triads have a lot more "room" around them than the minor triads.
>
> The points get sparser as one moves away from the center because I'm usin=
g a
> maximum limit (36) rather than a product (i.e. geometric mean) limit.
>
> Further discussion should take place at harmonic_entropy@e...

🔗Paul H. Erlich <PERLICH@...>

12/23/2001 12:55:18 PM

Try /harmonic_entropy/files/perlich/triads36.jpg.

I of course did more sophisticated graphs later on the harmonic entropy
list.

-----Original Message-----
From: unidala [mailto:JGill99@...]
Sent: Saturday, December 22, 2001 5:21 AM
To: harmonic_entropy@yahoogroups.com
Subject: [harmonic_entropy] Re: pretty picture

Any chance that this image could be restored to:

http://www.egroups.com/files/tuning/perlich/triads36.jpg

or is it somewhere else these days?

J Gill

--- In harmonic_entropy@y..., "Paul H. Erlich" <PERLICH@A...> wrote:
> If you want to see something pretty, go to
> http://www.egroups.com/files/tuning/perlich/triads36.jpg.
>
> It's a triangular (like Chalmers' tetrachordal graphs) plot of triads wit=

h
> integer limit 36. There are six identical sextants, each one the mirror
> image of the two next to it (as in a kaleidoscope with the mirrors at 60°=

).
> Each sextant contains a large equilateral triangle, which represents the
> triads within one octave (like Chalmers' graph represents the triads with=

in
> a fourth). The sextants represent every possible sign assignment to the
> three intervals in the chord so that they sum to zero. In other words, th=

ere
> are six sextants because any chord can be expressed in six ways:
>
> x:y:z
> y:x:z
> z:x:y
> x:z:y
> y:z:x
> z:y:x
>
> The point in the center is 1:1:1, and the six lines emanating from the
> center consist of triads of the form
>
> a:a:b
> a:b:b
> a:b:a
> b:b:a
> b:a:a
> b:a:b
>
> In three of the sextants, I've marked the three inversions of the JI majo=

r
> triad in red, and of the JI minor triad in blue. You can see that the maj=

or
> triads have a lot more "room" around them than the minor triads.
>
> The points get sparser as one moves away from the center because I'm usin=

g a
> maximum limit (36) rather than a product (i.e. geometric mean) limit.
>
> Further discussion should take place at harmonic_entropy@e...

To unsubscribe from this group, send an email to:
harmonic_entropy-unsubscribe@egroups.com

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/