Skip to content

Equal Temperament

Equal temperament divides an interval (usually the octave) into equal parts. This contrasts with pure ratios, which use exact fractions from the harmonic series.

What Is Equal Temperament?

In equal temperament:

  • An interval is divided into N equal steps
  • Each step has the same frequency ratio
  • The ratio is the Nth root of the interval

For 12-TET (standard Western tuning):

  • Octave (2:1) divided into 12 equal semitones
  • Each semitone = 2^(1/12) ≈ 1.05946

Why Equal Temperament?

The Problem with Pure Ratios

Pure ratios sound beautiful, but they have a limitation: the circle of fifths doesn't close.

Starting from C and going up by pure fifths (3/2):

C → G → D → A → E → B → F# → C# → G# → D# → A# → E# → B#

After 12 fifths: (3/2)^12 = 129.746

After 7 octaves: 2^7 = 128

The difference (the "Pythagorean comma") means you can't return to the same pitch!

The Equal Temperament Solution

Equal temperament compromises each interval slightly so that:

  • 12 semitones exactly equal one octave
  • All keys sound equally good (or equally compromised)
  • Music can modulate freely between keys

TET Systems in RMT Compose

RMT Compose supports any equal temperament system using integer bases with fractional exponents (e.g., N^(a/b)). Some common examples:

SystemSteps per OctaveStep Ratio
12-TET122^(1/12)
19-TET192^(1/19)
31-TET312^(1/31)
BP-1313 (per tritave)3^(1/13)

Expression Syntax

Basic TET Step

// One 12-TET semitone
2 ^ (1/12)

// One 19-TET step
2 ^ (1/19)

// Multiple steps (e.g., 7 semitones = perfect fifth in 12-TET)
2 ^ (7/12)
Legacy JavaScript syntax
javascript
new Fraction(2).pow(new Fraction(1, 12))
new Fraction(2).pow(new Fraction(1, 19))
new Fraction(2).pow(new Fraction(7, 12))

Applying to a Note

// Frequency: 4 semitones above BaseNote (major third in 12-TET)
base.f * 2 ^ (4/12)
Legacy JavaScript syntax
javascript
module.baseNote.getVariable('frequency').mul(new Fraction(2).pow(new Fraction(4, 12)))

Building a Scale

// Each note is one semitone above the previous
note1.frequency = base.f
note2.frequency = [1].f * 2 ^ (1/12)
note3.frequency = [2].f * 2 ^ (1/12)
// ... etc
Legacy JavaScript syntax
javascript
note1.frequency = baseNote.frequency
note2.frequency = note1.frequency.mul(new Fraction(2).pow(new Fraction(1, 12)))
note3.frequency = note2.frequency.mul(new Fraction(2).pow(new Fraction(1, 12)))

The ≈ Symbol

Notes with TET frequencies display before a fractional approximation of the value:

≈ 6236/981

This indicates:

  • The value is irrational (cannot be expressed as an exact fraction)
  • The displayed fraction is an approximation of the true value
  • Internally, the value is stored as a SymbolicPower (exact algebraic form)

SymbolicPower Algebra

RMT Compose doesn't collapse TET values to floats. Instead, it preserves the algebraic structure:

// Two semitones:
2 ^ (1/12) * 2 ^ (1/12) = 2 ^ (2/12) = 2 ^ (1/6)

// Not:
1.05946... × 1.05946... = 1.12246...

This means:

  • Computations stay exact algebraically
  • 12 semitones exactly equals 2 (the octave)
  • No floating-point drift

Comparison: Just vs Equal

IntervalJust RatioJust Decimal12-TETDifference
Minor second16/151.06671.0595-0.7%
Major second9/81.12501.1225-0.2%
Minor third6/51.20001.1892-0.9%
Major third5/41.25001.2599+0.8%
Perfect fourth4/31.33331.3348+0.1%
Tritone45/321.40631.4142+0.6%
Perfect fifth3/21.50001.4983-0.1%
Minor sixth8/51.60001.5874-0.8%
Major sixth5/31.66671.6818+0.9%
Minor seventh7/41.75001.7818+1.8%
Major seventh15/81.87501.8877+0.7%

Notice that fifths are very close, but thirds are noticeably different.

When to Use Equal Temperament

Use TET when:

  • You need to modulate between keys
  • You want compatibility with standard instruments
  • You're exploring microtonal music (19-TET, 31-TET)
  • You want predictable, symmetric scales

Use pure ratios when:

  • You want maximum consonance
  • You're staying in one key
  • You're exploring historical tunings
  • You want mathematical elegance

Included TET Modules

RMT Compose includes pre-built modules:

Find them in the Module Bar under Melodies.

Next Steps

Released under the RMT Personal Non-Commercial License