Sitemap

Just Intonation

9 min readMay 6, 2026

--

Just Intonation Music System

Press enter or click to view image in full size

Just Intonation in music theory versus equal tempered

What is the difference between just intonation and equal tempered?

Press enter or click to view image in full size
Comparison of Just Intonation and Equal Temperament tuning systems with key ratios and deviations.

The core difference is this: just intonation (JI) uses pure, simple‑number frequency ratios (like 3:2, 5:4, 6:5), while equal temperament (12‑TET) divides the octave into 12 perfectly equal semitones, slightly distorting those pure ratios for flexibility.

You can program a just intonation sequence by storing frequency ratios instead of equal-tempered semitone steps, then multiplying those ratios by a tonic frequency.
A common major-scale set is (1/1, 9/8, 5/4, 4/3, 3/2, 5/3, 15/8, 2/1).

Just intonation uses simple integer ratios derived from the harmonic series, so each scale degree is computed relative to a tonic rather than from fixed 12-TET semitones.
In a C-based just major scale, for example, C is (1/1), E is (5/4), G is (3/2), and the octave is (2/1).

[en.wikipedia](https://en.wikipedia.org/wiki/Just_intonation)

type TJustScale = array[0..7] of Double; const JustMajor: TJustScale = ( 1.0, // tonic 9/8, // major second 5/4, // major third 4/3, // fourth 3/2, // fifth 5/3, // sixth 15/8, // major seventh 2.0 // octave ); function JustFrequency(const TonicFreq: Double; Degree: Integer): Double; begin Result:= TonicFreq * JustMajor[Degree mod 8]; Result:= Result * Power(2, Degree div 8); // for higher octaves end; procedure TestJustScale; var i: Integer; F0, F: Double; begin F0:= 261.626; // C4 for i:= 0 to 7 do begin F:= JustFrequency(F0, i); Writeln(Format('Degree %d = %.3f Hz', [i, F])); end; end;
type
TJustScale = array[0..7] of Double;

const
JustMajor: TJustScale = (
1.0, // tonic
9/8, // major second
5/4, // major third
4/3, // fourth
3/2, // fifth
5/3, // sixth
15/8, // major seventh
2.0 // octave
);

function JustFrequency(const TonicFreq: Double; Degree: Integer): Double;
begin
Result:= TonicFreq * JustMajor[Degree mod 8];
Result:= Result * Power(2, Degree div 8); // for higher octaves
end;

procedure TestJustScale;
var
i: Integer;
F0, F: Double;
begin
F0:= 261.626; // C4
for i:= 0 to 7 do begin
F:= JustFrequency(F0, i);
Writeln(Format('Degree %d = %.3f Hz', [i, F]));
end;
end;

If you want a melody, define the notes as scale degrees and convert each degree to a frequency at runtime.

For example, the sequence C-D-E-G-C becomes degree indices \(0, 1, 2, 4, 0\), which you turn into frequencies using the ratio table.
[tunableapp](https://tunableapp.com/notes/c1/just-intonation-major/)

var Melody: array[0..4] of Integer; //= (0, 1, 2, 4, 0); procedure setMelody; begin melody[0]:= 0; melody[1]:= 1; melody[2]:= 2; melody[3]:= 4; melody[4]:= 0; end; writ('test play tune scale melody:'); for i:= Low(Melody) to High(Melody) do begin Freq:= JustFrequency(261.626, Melody[i]); writ(flots(freq)) tone(round(freq),500) // send Freq to your synth, FM or MIDI engine here end;
var
Melody: array[0..4] of Integer; //= (0, 1, 2, 4, 0);

procedure setMelody;
begin
melody[0]:= 0; melody[1]:= 1; melody[2]:= 2;
melody[3]:= 4; melody[4]:= 0;
end;

writ('test play tune scale melody:');
for i:= Low(Melody) to High(Melody) do begin
Freq:= JustFrequency(261.626, Melody[i]);
writ(flots(freq))
tone(round(freq),500)
// send Freq to your synth, FM or MIDI engine here
end;
Press enter or click to view image in full size
https://sourceforge.net/projects/maxbox5/files/examples/1483_Just_Intonation1_App.txt/download

Just intonation is **key-center- dependent**, meaning the ratios are defined relative to a tonic such as C, and the same pitch class can need different ratios in different harmonic contexts.
That is why a practical implementation often uses a lookup table per key or per chord rather than one universal 12-note mapping. [reddit](https://www.reddit.com/r/microtonal/comments/1aw7j8n/just_intonation/)

Practical pattern

A useful structure is:
- Store tonic frequency, for example 261.626 for C4.
- Store ratios for the scale or chord.
- Convert note events to `freq := tonic * ratio`.
- If you need octave shifts, multiply or divide by powers of 2.

If you are driving MIDI, send the frequency to a synth that supports retuning, because plain MIDI note numbers do not carry just intonation by themselves.

[reddit]https://www.reddit.com/r/microtonal/comments/1aw7j8n/just_intonation/)

Just intonation ratios for minor scale in Delphi

For a just minor scale in Delphi, the common 5-limit ratios are:

C: 1/1
D: 9/8
E♭: 6/5
F: 4/3
G: 3/2
A♭: 8/5
B♭: 9/5
C: 2/1

Example in C minor
If you set the tonic to C4 = 261.626 Hz, then:

E♭4 = 261.626 * 6/5 = 313.951 Hz.

A♭4 = 261.626 * 8/5 = 418.602 Hz.

B♭4 = 261.626 * 9/5 = 470.927 Hz.

Practical use

If you want a melody, store scale degrees as integers and convert them to frequencies with the ratio table.
That works well for synthesis or any Delphi audio engine that accepts raw frequency values, because just intonation is tonic-based rather than fixed to equal -tempered semitone positions.

var JustMinor: TJustMinor; // = ( procedure setJustscaleMinor; begin JustMinor[0]:= 1.0; // tonic JustMinor[1]:= 9/8; // 2nd JustMinor[2]:= 6/5; // minor 3rd JustMinor[3]:= 4/3; // 4th JustMinor[4]:= 3/2; // 5th JustMinor[5]:= 8/5; // minor 6th JustMinor[6]:= 9/5; // minor 7th JustMinor[7]:= 2.0; // octave end; // ); function JustMinorFrequency(const TonicFreq:Double; Degree:Integer): Double; begin Result:= TonicFreq * JustMinor[Degree mod 8] * Power(2, Degree div 8); end; procedure TestJustScaleMinor; var i: Integer; F0, F: Double; begin F0:= 261.626; // C4 for i:= 0 to 7 do begin F:= JustMinorFrequency(F0, i); Writeln(Format('Degree %d = %.3f Hz', [i, F])); end; end;
var
JustMinor: TJustMinor; // = (

procedure setJustscaleMinor;
begin
JustMinor[0]:= 1.0; // tonic
JustMinor[1]:= 9/8; // 2nd
JustMinor[2]:= 6/5; // minor 3rd
JustMinor[3]:= 4/3; // 4th
JustMinor[4]:= 3/2; // 5th
JustMinor[5]:= 8/5; // minor 6th
JustMinor[6]:= 9/5; // minor 7th
JustMinor[7]:= 2.0; // octave
end; // );

function JustMinorFrequency(const TonicFreq:Double; Degree:Integer): Double;
begin
Result:= TonicFreq * JustMinor[Degree mod 8] * Power(2, Degree div 8);
end;

procedure TestJustScaleMinor;
var i: Integer;
F0, F: Double;
begin
F0:= 261.626; // C4
for i:= 0 to 7 do begin
F:= JustMinorFrequency(F0, i);
Writeln(Format('Degree %d = %.3f Hz', [i, F]));
end;
end;

What it does?
This code takes a root frequency, here C4 at 261.626 Hz, and multiplies it by the just intonation ratio for each scale degree.
The octave is handled by Power(2, OctaveShift), which is standard Delphi math support for exponentiation.

Get Max Kleiner’s stories in your inbox

Join Medium for free to get updates from this writer.

Important Note:
For melodic minor or other variants, the ratios change; a fully flexible implementation usually keeps separate ratio arrays for major, natural minor, harmonic minor, and modal contexts like phregian or mixolydisch.

Common cents deviations for just minor scale notes

For a **just‑intonation natural minor scale** (5‑limit, relative to equal temperament), the common **cent deviations** are roughly as follows relative to 12‑TET notes of the same letter name: [hpschd](https://www.hpschd.nu/tech/tun/cents.html)

Press enter or click to view image in full size

| Scale degree | Note (C minor) | Just ratio (C tonic) | Approx. cents vs 12‑TET* |
| — — -| — — — | — — — — | — — — — -|
| 1 | C | 1/1 | 0.0 ct |
| 2 | D | 9/8 | about +4 ct |
| 3 | E♭ | 6/5 | about +16 ct |
| 4 | F | 4/3 | about −2 ct |
| 5 | G | 3/2 | about +2 ct |
| 6 | A♭ | 8/5 | about +14 ct |
| 7 | B♭ | 9/5 | about +18 ct |
| 8 | C | 2/1 | 0.0 ct |

\* These are rounded from concrete measurements such as C minor‑just‑intonation tables (e.g., E3 at −13.7 ct, A♭3 at +13.7 ct, B♭3 at +17.6 ct vs 12‑TET) and generic just‑minor deviation data. The minor third at 6:5 is 315.64 cents above the tonic, about 15.6 cents flatter than the 300‑cent 12‑TET semitone.
[tunableapp](https://tunableapp.com/notes/e3/just-intonation-minor/)

Rule of thumb

-**Minor‑third (E♭) and minor‑sixth (A♭)** are noticeably **sharper** than 12‑TET.
**Major‑third (E)** when tuned by 5:4 would be **sharper**, but in just minor on C you use E♭ not E, so E is typically absent in the pure C‑minor scale.
- Many sources list just‑minor “deviation from 12‑TET” around **+10…+20 ct** for E♭, A♭, B♭, and small deviations (± a few cents) for D, F, G. [hpschd](https://www.hpschd.nu/tech/tun/cents.html)

For just‑intonation major vs natural‑minor scales, the main differences in cents deviations from 12‑TET show up in the third, sixth, and seventh degrees, because those define major vs minor quality.

Typical cents vs 12‑TET
Using C as tonic (C major vs C minor), the important degrees are:

Press enter or click to view image in full size

Historical context of major vs minor just intonation

Historically, “major” and “minor” just intonation are not modern inventions but evolved from the same Renaissance‑era desire to tune chords with pure thirds, while preserving the emotional difference between major and minor affect.
[tunableapp](https://tunableapp.com/temperaments/just-intonation-major-vs-just-intonation-minor/)

Roots in Renaissance theory

Starting in the late 15th century, theorists such as **Ramos de Pareja** and
**Gioseffo Zarlino** promoted just‑intonation models that used simple ratios (4:5, 5:6, 3:4, 2:3, etc.) to tune triads and scales so that major and minor thirds sounded acoustically pure. Zarlino’s major‑mode system (often called *syntonic 5‑limit* tuning) became the template for “major just intonation,” while parallel minor‑mode constructions were worked out for Dorian, Phrygian, and Aeolian structures, giving the “minor just intonation” scale.
[tunableapp](https://tunableapp.com/notes/g-sharp-1/just-intonation-minor/)

Major vs minor affect
**Major just intonation** emphasizes the **5:4 major third** as a bright, stable consonance, making major triads and cadences feel luminous and resolved.
[soundamerican](https://www.soundamerican.org/issues/just-intonation/just-intonation-issue)

Theorists like **Zarlino** and **Francisco de Salinas** already treated these as distinct tonal systems, each optimized for its own modal or tonal orientation.
[tunableapp](https://tunableapp.com/notes/g-sharp-1/just-intonation-minor/)

Why it did not last?

Just‑intonation major and minor both worked well in **fixed‑key vocal or string ensembles**, but they clashed when composers tried to modulate freely or when fixed‑pitch keyboards were used.
The “comma drift” and key‑locking properties of pure ratios led to the rise of **meantone** and later **equal temperament**, which sacrificed purity
o r smooth modulation, so “major vs minor” became more about 12‑TET harmonic function than just‑intonation ratios.

[en.wikipedia](https://en.wikipedia.org/wiki/Just_intonation)

Note: A “pure” minor third (6/5) may sound right in a static chord, but in a melodic line it can drift because just intonation is ** not transposable**. If your software does not re‑tune each chord or phrase in context, you hear “comma drift” or sour intervals.
[en.wikipedia](https://en.wikipedia.org/wiki/Just_intonation)-Automatic just‑intonation systems that retune “ on‑the‑fly” often over‑simplify and use the same minor‑third adjustment for all harmonic situations, which can make some chords strike early or sound mistuned.

Later revival

In the 20th and 21st centuries, composers and theorists rediscovered both major and minor just intonation as tools for **historically informed performance and ** microtonal music**, often contrasting them explicitly to show how pure major‑third‑based and pure minor‑third‑based sonorities differ from tempered sound.
[pianogallery](https://pianogallery.ae/blogs/post/equal-temperament-vs-historical-tunings)

Conclusion

**Just intonation**
Each interval (third, fifth, sixth) is tuned to an exact small‑integer ratio (3/2, 5/4, 6/5, etc.), so chords in the right key sound very smooth and “beating‑free” but intervals change when you modulate to a new key.
[infogalactic](https://infogalactic.com/info/Just_intonation)

**Equal temperament (12‑TET)**
Every semitone has the same ratio: \ (2^{1/12}\). The octave is still exact (2:1), but **no other interval is a pure small‑integer ratio**, so chords are slightly impure but sound the same in every key.
[muted](https://muted.io/12-tet-vs-just/)

What you hear

In just intonation, major‑third‑based triads can sound remarkably pure
and “glowing,” whereas in **12‑TET** the same triads have a faint beating or roughness because the major third is about 13–14 cents sharper than pure 5:4.
[homo-deus](https://homo-deus.com/lab/music-theory/tuning-systems/)

Just intonation excels at **one key or one chord**, while equal temperament enables **free modulation and standardized piano‑like instruments** by trading some purity for consistency. [tunedstrings](https://www.tunedstrings.com/tutorials/equal-temperament-vs-just-intonation)

Practical consequence

If you stay in one key and can retune dynamically, **JI gives more consonant harmonies**. If you want to play in all 12 keys without retuning (piano, MIDI, most modern instruments), **12‑TET is the default, even though intervals are approximate.
[muted](https://muted.io/12-tet-vs-just/)https://www.coderstool.com/unicode-text-converter

Press enter or click to view image in full size
30 Years

Originally published at http://teeclassics1.wordpress.com on May 6, 2026.

--

--

Written by Max Kleiner⁠

Max Kleiner's professional environment is in the areas of OOP, UML and coding - among other things as a trainer, developer and consultant.