Loading [MathJax]/jax/output/HTML-CSS/jax.js

Math Equations

Friday, December 27, 2013

Frequency multiples

Many people know that an octave is a combination of two frequencies 2f1=f2. For example, the tones A3 and A4 combined will yield an octave because f(A3) = 220 Hz and f(A4) = 440 Hz and so f(A4) = f(A3) * 2.

An octave. Original image taken from http://www.psrtutorial.com/music/articles/cp33.html.

Given a tone X, this post will show you how to approximate another tone Y such that f(Y) = f(X) * n for positive integers n other than 2.

For some integer k, Y is k half steps to the right of X on a piano. This means roughly f(Y) = f(X) * 2 ^ (k / 12) because of how pianos are tuned. We now have two expressions for f(Y), which we may equate:
f(X)n=f(X)2k/12n=2k/12lnn=ln2k/12=kln212k=12lnnln2

Let's try it! If n = 2 then the combination of the tones will be an octave, so we expect k to be the distance in half tones between for example A3 and A4, which is 12. As it turns out, the expression above does predict that k = 12.

We may delve further into the problem by letting n = 3. This gives us the somewhat unexpected result k = 19.02. We want k to be an integer so we have to round it. Our new general approximation is:
k=round(12lnnln2)

I think we are ready to let the computer handle the rest. Python code:
    from math import log
    for i in xrange(1, 20):
        print int(round(12 * log(i) / log(2))),

Output: 0 12 19 24 28 31 34 36 38 40 42 43 44 46 47 48 49 50 51

I have marked these tones in the picture below. The funny thing is, the first six tones are the chord A major.

No comments:

Post a Comment