r = relative harmonic
d = destination harmonic
r1:d1 | r2:d2 | r3:d3 | r4:d4 | ... | rn:dnFigure 1 - Harmonic Tree Diagram
1:2
|
2:3
|
3:4
|
4:5
|
5:6
|
6:7
|
7:8
Figure 2 - Harmonic Tree of the Harmonic Series up to the 8th Harmonic
Mathematically, each new value is derived by multiplying the previous value with an integer 1 or greater (destination) divided by an integer 1 or greater (relative).
x = valueIf you wanted to use the "Harmonic Tree" for getting pitches, assign x a starting value. In this next example, x is assigned 100. The relative and destination harmonics are assigned random harmonic integers between 1 and 5.
d = destination harmonic
r = relative harmonic
f(xn+1) = f(xn) * d / rFigure 3 - Basic Harmonic Tree Equation
f(xn+1) = f(xn) * int(rand(5) + 1) / int(rand(5) + 1)
1:5
|
3:2
|
4:2
|
3:4
|
1:3
f1 = 100
f2 = 100 * 5 / 1 = 500
f3 = 500 * 2 / 3 = 333.333
f4 = 333.333 * 2 / 4 = 166.666
f5 = 166.666 * 4 / 3 = 222.222
f6 = 222.222 * 3 / 1 = 666.666
Figure 4 - Giving x a Starting Value
Musical Properties
41:51
|
42:52
|
...
|
4n:5n
Figure 5 - Constant Harmonic Tree of 4:5
Random
1:2
|
2:2
|
2:1
|
2:1
|
1:1
|
1:2
|
2:1
Figure 6 - Ranges of 1 to 2 for relative and destination
To yield smaller intervals, you can bias the range to only include upper harmonics. For example, by setting the range of the relative between 3 and 7 and the destination between 3 and 6, you get the following possible intervals: 1/1, 3/4, 3/5, 4/5, 4/3, 5/4, 5/3Perl And Csoundf(xn+1) = f(xn) * int(rand(2)+3) / int(rand(3)+3)Figure 7 - Biasing the Range of Intervals
b = bendThis concept is similar to using non-integer ratios in FM synthesis to produce inharmonic frequencies. The bend in the "Harmonic Tree" is nothing more than a real number multiplier. When bend is set to 1, the resulting frequencies are unaffected. Any other number changes the evolution of the values in the branch. Integers will continue to produce harmonic tones, while non-integers will produce more clangorous sounds and inharmonic pitches.f(xn+1) = f(xn) * d / r * bFigure 8 - "Harmonic Tree" equation with the Bend argument