back to list

Explaining Generators for a Scale

🔗ritchie.brent@gmail.com

10/17/2013 10:58:06 AM

Hello all,

My name is Brent and I am pretty new to music theory. Currently I am working on a programming library to try and better represent musical theory. The goal is to represent the theory as best as I can through the application of mathematics. With that said, I wanted to ask about generators for musical scales. So far, I have identified three classes of generators and wanted to ask for critique and correction. So without further ado:

Linear Generator: A generator that simply stacks an interval or pattern of intervals to define the scale. An example is the stacking of a 2^(1/12) for 12-EDO or the stacking of Long and Short intervals like lucy tuning. This generator would either move up or down from the unison but not both at the same time.

Parallel Generator: This is a generator that would stack an interval or groups of intervals moving away from the unison in both directions at once. I believe this is how Miracle tuning works (If I didn't read it wrong).

Arbitrary Generator: This would be a generator that simply defines all of the intervals for the scale and is done. There are no calculations or any other magic. It simply has a list of ratios and spits them out. This is primarily for importing Scala files to make my testing go easier.

So now that the types are out of the way, there is a certain subset of information that would be given to each generator every time it is asked for a new interval.

1) The number of pitches expected for the tuning
2) The base frequency of the unison
3) The current interval from the unison
4) the last two intervals received (if available)

So, after about three days of reading this is what I have come up with. I am sure there are other scenarios that I have missed, so a link or quick explanation would be appreciated so that I can continue researching.

Thanks for reading!

🔗baros_ilogic@yahoo.com

10/18/2013 12:47:25 AM

Hi Brent,

Thanks for your endeavor! So far the only way I managed to represent musical theory was in vector-drawing software, using logarithmic relations drawn with the help of Mathematica code which I didn't write myself.

I recently came in contact with "generators for musical scales" and the best explanation I found on the topic was Erv Wilson's Moments of Symmetry (MOS), beautifully depicted on the first webpage linked below, and thoroughly explained in the second:

http://www.thesonicsky.com/uncategorized/moments-of-symmetry-user-interactive-circle/
http://www.elvenminstrel.com/music/tuning/horagrams/horagram_intro.htm

Don't know if this is what you're looking for; maybe you've been there already. Keep us posted with your progress!

Bogdan

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

Hello all,

My name is Brent and I am pretty new to music theory. Currently I am working on a programming library to try and better represent musical theory. The goal is to represent the theory as best as I can through the application of mathematics. With that said, I wanted to ask about generators for musical scales. So far, I have identified three classes of generators and wanted to ask for critique and correction. So without further ado:

Linear Generator: A generator that simply stacks an interval or pattern of intervals to define the scale. An example is the stacking of a 2^(1/12) for 12-EDO or the stacking of Long and Short intervals like lucy tuning. This generator would either move up or down from the unison but not both at the same time.

Parallel Generator: This is a generator that would stack an interval or groups of intervals moving away from the unison in both directions at once. I believe this is how Miracle tuning works (If I didn't read it wrong).

Arbitrary Generator: This would be a generator that simply defines all of the intervals for the scale and is done. There are no calculations or any other magic. It simply has a list of ratios and spits them out. This is primarily for importing Scala files to make my testing go easier.

So now that the types are out of the way, there is a certain subset of information that would be given to each generator every time it is asked for a new interval.

1) The number of pitches expected for the tuning
2) The base frequency of the unison
3) The current interval from the unison
4) the last two intervals received (if available)

So, after about three days of reading this is what I have come up with. I am sure there are other scenarios that I have missed, so a link or quick explanation would be appreciated so that I can continue researching.

Thanks for reading!

🔗ritchie.brent@gmail.com

10/18/2013 8:27:56 AM

Thanks Bogdan, I did see the first link but missed the second. The second link definitely explains a lot and has given me some ideas on how to represent generators and use them to define certain properties of a scale. Brent.

🔗ritchie.brent@gmail.com

10/18/2013 10:32:07 PM

Time for an update. After reading a bit more about MOS (Moments of Symmetry) it seems that all MOS generators as well as most others I have seen can be defined as a simple Geometric Sequence. The sequence I used for the following output was simply An = 2^(1/12). This gives me an interval size of 100 cents for a linear progression of the 12-EDO Scale:

Base Freq: 440

No Ratio Cents Frequency Approximate Fraction
0 1 0 440 1/1
Pitches Produced: 1
Octaves Crossed: 0

1 1.0594631 100 466.163764 89/84
Pitches Produced: 12
Octaves Crossed: 1

2 1.122462 200 493.88328 55/49
Pitches Produced: 6
Octaves Crossed: 1

3 1.1892071 300 523.251124 44/37
Pitches Produced: 4
Octaves Crossed: 1

4 1.259921 400 554.36524 63/50
Pitches Produced: 3
Octaves Crossed: 1

5 1.3348399 500 587.329556 295/221
Pitches Produced: 12
Octaves Crossed: 5

6 1.4142136 600 622.253984 99/70
Pitches Produced: 2
Octaves Crossed: 1

7 1.4983071 700 659.255124 442/295
Pitches Produced: 12
Octaves Crossed: 7

8 1.5874011 800 698.456484 100/63
Pitches Produced: 3
Octaves Crossed: 2

9 1.6817928 900 739.988832 37/22
Pitches Produced: 4
Octaves Crossed: 3

10 1.7817974 1000 783.990856 98/55
Pitches Produced: 6
Octaves Crossed: 5

11 1.8877486 1100 830.609384 185/98
Pitches Produced: 12
Octaves Crossed: 11

12 2 1200 880 2/1
Pitches Produced: 1
Octaves Crossed: 1

Comma: 0

As you can see I also calculate when and where a scale was to converge if based on that interval instead. Next I generated a scale using natural pythagorean fifths (3/2) and the results were pretty good. As you can see though that I am not normalizing the pitches within the octaves yet (This means that the comma calculation is wrong for now). This next sequence is interesting, the pythagorean fifth seems that it will eventually converge to a closed system, it will just take several thousand interval steps.

Base Freq: 440

No Ratio Cents Frequency Approximate Fraction
0 1 0 440 1/1
Pitches Produced: 1
Octaves Crossed: 0

1 1.5 701.96 660 3/2
Pitches Produced: 439804651110400
Octaves Crossed: 257271060744547

2 3 1901.96 1320 3/1
Pitches Produced: 439804651110400
Octaves Crossed: 697075711854947

3 4.5 2603.91 1980 9/2
Pitches Produced: 329853488332800
Octaves Crossed: 715757330670551

4 6 3101.96 2640 6/1
Pitches Produced: 439804651110400
Octaves Crossed: 1.13688036296535E+15

5 7.5 3488.27 3300 15/2
Pitches Produced: 35184372088832
Octaves Crossed: 102277158021925

6 9 3803.91 3960 9/1
Pitches Produced: 329853488332800
Octaves Crossed: 1.04561081900335E+15

7 10.5 4070.78 4620 21/2
Pitches Produced: 879609302220800
Octaves Crossed: 2.98391329607866E+15

8 12 4301.96 5280 12/1
Pitches Produced: 439804651110400
Octaves Crossed: 1.57668501407575E+15

9 13.5 4505.87 5940 27/2
Pitches Produced: 263882790666240
Octaves Crossed: 990851291649409

10 15 4688.27 6600 15/1
Pitches Produced: 329853488332800
Octaves Crossed: 1.28870184478835E+15

11 16.5 4853.27 7260 33/2
Pitches Produced: 329853488332800
Octaves Crossed: 1.33405669943411E+15

12 18 5003.91 7920 18/1
Pitches Produced: 329853488332800
Octaves Crossed: 1.37546430733615E+15

Comma: 3803.91

Things that I learned so far about music theory:

1) Generators are commonly formed from simple geometric sequences. This allows for very efficient storage, retrieval and calculations of most properties.

2) A scale is a circle (and by extension a wave) in all respects. The octave is the point of 0°. This allows for the calculation of several key properties of a scale and interval without actually generating them. (Steps to convergence, steps per octave, # of octaves to cross for convergence)

3) Intervals are Euclidean-Angles. They represent the splitting of an octave and the intersection of the radius of a circle. By extension 1 cent is equal to exactly 0.3 degrees, making the conversion extremely easy.

Just a word of note, I am still working on the mathematical proofs now, but will share when I get them further along. Thanks again to Bogdan for giving me the idea of mapping the scales and intervals to circles, it helped more then I can describe.

---In tuning-math@yahoogroups.com, <ritchie.brent@...> wrote:

Thanks Bogdan, I did see the first link but missed the second. The second link definitely explains a lot and has given me some ideas on how to represent generators and use them to define certain properties of a scale. Brent.

🔗baros_ilogic@yahoo.com

10/19/2013 3:25:36 AM
Attachments
lucy_logarithmic.png
lucy_linear.png

It's been quite an adventure for me trying to figure all these out, from the perspective of someone with no math skills nor serious technical inclinations. That's why my approach is quite innocent: it keeps things as simple as possible and tries to speak an universal language.

The most important thing I came to understand, is that the circle and generator are LINEAR: all values are between 0 and 1. All calculations pertain to choosing a generator (between 0 and 1) and spinning it around the circle. The first time you do that, it creates 2 intervals: one Large, and one small. Next time the generator passes origin, s will become the new L (or viceversa), and the previous L will split into the new L+s: there are now 3 intervals. The original 2 are a subset of these 3. And it goes on like that, hypothetically to infinity, always keeping all the previous sets as subsets of the last generation.

But the intervals used in music are not linear, they are LOGARITHMIC. This means that the information between 0 and 1 would have to be translated as information between 1 and X. In most cases, X will be 2: the common octave. This value represents the "interval of equivalence", and it means that you can create a set and then fit all the interval in an octave (between 1 and 2) or inside any other interval (between 1 and 3 for example, or between 1 and Φ).

This is done simply by raising the interval of equivalence (İoE) to the power of the Horogram Ratios (or steps). Very important for me was to avoid arbitrary measuring units, like cents. I am aware that my view may not be endorsed by many, but for me cents complicate things and keep the real math behind music hidden.

A real achievement of programming a better representation of musical theory would be to accurately define every step as a linear RATIO, which could then be easily translated into its logarithmic equivalent. I did this for Wilson's horogram #22 (Finnamore's #1):

L1 is always 1.
s2 = (1Φ+0)/(2Φ+1) = L3 (by looking at the horogram) = the generator (convergence point, or the first interval size)
L2 = Φ*(1Φ+0)/(2Φ+1), because L/s=Φ
s3 = ((1Φ+0)/(2Φ+1))/Φ = L5 (by looking at the horogram)

and so on, keeping in mind that the ring number (which defines Lx and sx) is not counting the circles, but represents the number of steps in that ring (generation).

So to translate this inside an octave, you simply have to raise 2 to the power of s2, L2, then 2^s3, 2^L3 and so on.

This means, that in order to use MoS for generating a scale using 3/2's ("natural pythagorean fifths") you first have to reverse this logarithmic 3/2 to its linear counterpart, taking also into consideration the Interval of Equivalence. Thus log base 2 of 3/2 equals 0.5849625007211561814537389439... This is your generator and first interval for the Pythagorean MoS: L2, which in the next generation becomes s3+L3.

What I haven't figured out yet is how to transcribe that big decimal number into a fraction. In my horogram #22 example I only used ratios, even though they contained the transcendental number Φ. This is because we've reversed-engineered the Pythagorean scale to find its MoS generator, instead of generating a MoS turning out to be Pythagorean.

A very useful tool - actually groundbreaking computational and representational powerhouse - in making all these calculations is Wolfram Mathematica. There is also an online version that doesn't do coding, but is useful for calculating ratios in their original fraction form: http://www.wolframalpha.com/input/?i=log+base+2+of+3%2F2

Attached to this message are 2 pictures with the intervals of Lucy Tuning: first one linear, second logarithmic having 2 (the standard octave) as İoE. Both images are generated in Mathematica.

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

Time for an update. After reading a bit more about MOS (Moments of Symmetry) it seems that all MOS generators as well as most others I have seen can be defined as a simple Geometric Sequence. The sequence I used for the following output was simply An = 2^(1/12). This gives me an interval size of 100 cents for a linear progression of the 12-EDO Scale:

Base Freq: 440

No Ratio Cents Frequency Approximate Fraction
0 1 0 440 1/1
Pitches Produced: 1
Octaves Crossed: 0

1 1.0594631 100 466.163764 89/84
Pitches Produced: 12
Octaves Crossed: 1

2 1.122462 200 493.88328 55/49
Pitches Produced: 6
Octaves Crossed: 1

3 1.1892071 300 523.251124 44/37
Pitches Produced: 4
Octaves Crossed: 1

4 1.259921 400 554.36524 63/50
Pitches Produced: 3
Octaves Crossed: 1

5 1.3348399 500 587.329556 295/221
Pitches Produced: 12
Octaves Crossed: 5

6 1.4142136 600 622.253984 99/70
Pitches Produced: 2
Octaves Crossed: 1

7 1.4983071 700 659.255124 442/295
Pitches Produced: 12
Octaves Crossed: 7

8 1.5874011 800 698.456484 100/63
Pitches Produced: 3
Octaves Crossed: 2

9 1.6817928 900 739.988832 37/22
Pitches Produced: 4
Octaves Crossed: 3

10 1.7817974 1000 783.990856 98/55
Pitches Produced: 6
Octaves Crossed: 5

11 1.8877486 1100 830.609384 185/98
Pitches Produced: 12
Octaves Crossed: 11

12 2 1200 880 2/1
Pitches Produced: 1
Octaves Crossed: 1

Comma: 0

As you can see I also calculate when and where a scale was to converge if based on that interval instead. Next I generated a scale using natural pythagorean fifths (3/2) and the results were pretty good. As you can see though that I am not normalizing the pitches within the octaves yet (This means that the comma calculation is wrong for now). This next sequence is interesting, the pythagorean fifth seems that it will eventually converge to a closed system, it will just take several thousand interval steps.

Base Freq: 440

No Ratio Cents Frequency Approximate Fraction
0 1 0 440 1/1
Pitches Produced: 1
Octaves Crossed: 0

1 1.5 701.96 660 3/2
Pitches Produced: 439804651110400
Octaves Crossed: 257271060744547

2 3 1901.96 1320 3/1
Pitches Produced: 439804651110400
Octaves Crossed: 697075711854947

3 4.5 2603.91 1980 9/2
Pitches Produced: 329853488332800
Octaves Crossed: 715757330670551

4 6 3101.96 2640 6/1
Pitches Produced: 439804651110400
Octaves Crossed: 1.13688036296535E+15

5 7.5 3488.27 3300 15/2
Pitches Produced: 35184372088832
Octaves Crossed: 102277158021925

6 9 3803.91 3960 9/1
Pitches Produced: 329853488332800
Octaves Crossed: 1.04561081900335E+15

7 10.5 4070.78 4620 21/2
Pitches Produced: 879609302220800
Octaves Crossed: 2.98391329607866E+15

8 12 4301.96 5280 12/1
Pitches Produced: 439804651110400
Octaves Crossed: 1.57668501407575E+15

9 13.5 4505.87 5940 27/2
Pitches Produced: 263882790666240
Octaves Crossed: 990851291649409

10 15 4688.27 6600 15/1
Pitches Produced: 329853488332800
Octaves Crossed: 1.28870184478835E+15

11 16.5 4853.27 7260 33/2
Pitches Produced: 329853488332800
Octaves Crossed: 1.33405669943411E+15

12 18 5003.91 7920 18/1
Pitches Produced: 329853488332800
Octaves Crossed: 1.37546430733615E+15

Comma: 3803.91

Things that I learned so far about music theory:

1) Generators are commonly formed from simple geometric sequences. This allows for very efficient storage, retrieval and calculations of most properties.

2) A scale is a circle (and by extension a wave) in all respects. The octave is the point of 0°. This allows for the calculation of several key properties of a scale and interval without actually generating them. (Steps to convergence, steps per octave, # of octaves to cross for convergence)

3) Intervals are Euclidean-Angles. They represent the splitting of an octave and the intersection of the radius of a circle. By extension 1 cent is equal to exactly 0.3 degrees, making the conversion extremely easy.

Just a word of note, I am still working on the mathematical proofs now, but will share when I get them further along. Thanks again to Bogdan for giving me the idea of mapping the scales and intervals to circles, it helped more then I can describe.

---In tuning-math@yahoogroups.com, <ritchie.brent@...> wrote:

Thanks Bogdan, I did see the first link but missed the second. The second link definitely explains a lot and has given me some ideas on how to represent generators and use them to define certain properties of a scale. Brent.

🔗gedankenwelt94@yahoo.com

10/23/2013 11:45:27 AM

Hi Brent,

are you familiar with the regular mapping paradigm, or with regular temperaments?

http://x31eq.com/paradigm.html
http://xenharmonic.wikispaces.com/Mike's+Lectures+On+Regular+Temperament+Theory

A rank-n temperament has n generators, which can be stacked upwards and/or downwards
from the unison (there is no restriction).

An example for a rank-1 temperament is any equal temperament.

Examples for rank-2 temperaments (or linear temperaments) are meantone and miracle.
The choice of generators isn't unique, i.e. the generators for meantone could be the fifth
and the octave, or any pair of large and small step from any meantone MOS.

Note that temperaments imply that the intervals represent just ratios, but it's possible to
look at a specific regular temperament without considering just ratios. In this case, I called
them "regular tunings" (or "linear tunings" in the specific case of two generators), but I don't
know if this is an official term. An example would be Lucy tuning, which can be considered
as a special meantone tuning without a mapping to JI intervals.
Mike started an article where he called them "regular tuning systems", but it's unfinished,
and I think none of the terms are official:

http://xenharmonic.wikispaces.com/Generated+Tone+Systems

For the distinction between temperaments and tunings, also see:
http://xenharmonic.wikispaces.com/EDO+vs+ET

- Geddy

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

Hello all,

My name is Brent and I am pretty new to music theory. Currently I am working on a programming library to try and better represent musical theory. The goal is to represent the theory as best as I can through the application of mathematics. With that said, I wanted to ask about generators for musical scales. So far, I have identified three classes of generators and wanted to ask for critique and correction. So without further ado:

Linear Generator: A generator that simply stacks an interval or pattern of intervals to define the scale. An example is the stacking of a 2^(1/12) for 12-EDO or the stacking of Long and Short intervals like lucy tuning. This generator would either move up or down from the unison but not both at the same time.

Parallel Generator: This is a generator that would stack an interval or groups of intervals moving away from the unison in both directions at once. I believe this is how Miracle tuning works (If I didn't read it wrong).

Arbitrary Generator: This would be a generator that simply defines all of the intervals for the scale and is done. There are no calculations or any other magic. It simply has a list of ratios and spits them out. This is primarily for importing Scala files to make my testing go easier.

So now that the types are out of the way, there is a certain subset of information that would be given to each generator every time it is asked for a new interval.

1) The number of pitches expected for the tuning
2) The base frequency of the unison
3) The current interval from the unison
4) the last two intervals received (if available)

So, after about three days of reading this is what I have come up with. I am sure there are other scenarios that I have missed, so a link or quick explanation would be appreciated so that I can continue researching.

Thanks for reading!