Topic: Research: The Missing Stretch Physics in Pianoteq Steinway D

Steinway Model D Stretch Tuning Physics vs. Empirical Measurements
A Comprehensive Comparison of Tuning Methods for Concert Grand Pianos

After extensive research through academic papers, professional tuning databases, and physics equations, I want to share my findings on optimal stretch tuning for the Steinway Model D. This post compares three distinct approaches: Railsback's original 1938 empirical measurements, physics-based calculations using Fletcher's inharmonicity equation, and a hybrid method that combines theoretical physics with validated measurement data using variable octave matching.

The central discovery is counterintuitive: mathematically "perfect" tuning actually sounds wrong on real pianos. Piano strings exhibit inharmonicity, meaning their overtones deviate from pure harmonic ratios due to string stiffness. To compensate, professional tuners have applied stretch tuning for centuries, tuning bass notes slightly flat and treble notes slightly sharp.

For the Steinway Model D specifically, we are looking at about 68 cents of total stretch using variable octave matching, ranging from -22 cents at the lowest A (A0) to +46 cents at the top C (C8). The neutral point where deviation sits at zero falls around G#4 to A4, which serves as the reference region for tuning. The stretch plateaus in the extreme treble, leveling off around +45 cents above C7 due to psychoacoustic limits on useful octave enlargement.

Part 1: The Physics Behind Stretch Tuning

Real piano strings are not perfectly flexible. Their stiffness causes the overtones (partials) to sound progressively sharper than pure harmonic ratios. This is called inharmonicity, and it is quantified by the coefficient B using Fletcher's formula:

fn = n x f0 x sqrt(1 + Bn^2)

Where:
fn = frequency of the nth partial
f0 = fundamental frequency
n = partial number (1, 2, 3...)
B = inharmonicity coefficient

The inharmonicity coefficient itself depends on string properties:

B = (pi^3 x E x d^4) / (64 x T x L^2)

Where:
E = Young's modulus of piano wire (200-207 GPa)
d = wire diameter
T = string tension
L = speaking length

To convert inharmonicity into cents deviation, we use:

Stretch (cents) = 600 x log2(1 + Bn^2)

Simplified for small B: Stretch (cents) = 865.62 x B x n^2

Part 2: Steinway Model D String Lengths

Reference: Juliette Chabassier & Marc Duruflé, Physical parameters for piano modeling, INRIA Technical Report RT-0425 (2012). ⟨hal-00688679v2⟩ https://inria.hal.science/hal-00688679v2

These are the speaking lengths in meters for each of the 88 keys (A0 to C8):

Key 1-22 (A0 to F#2):
2.010, 2.009, 2.008, 2.007, 1.997, 1.981, 1.965, 1.938, 1.911, 1.879, 1.842, 1.805,
1.762, 1.709, 1.655, 1.602, 1.548, 1.495, 1.442, 1.378, 1.837, 1.757

Key 23-44 (G2 to E4):
1.660, 1.591, 1.482, 1.403, 1.329, 1.259, 1.192, 1.129, 1.070, 1.013, 0.960, 0.909,
0.861, 0.816, 0.773, 0.732, 0.694, 0.657, 0.622, 0.590, 0.559, 0.529

Key 45-66 (F4 to D6):
0.501, 0.475, 0.450, 0.426, 0.404, 0.383, 0.363, 0.344, 0.326, 0.308, 0.292, 0.277,
0.262, 0.249, 0.236, 0.223, 0.211, 0.200, 0.190, 0.180, 0.171, 0.162

Key 67-88 (D#6 to C8):
0.153, 0.145, 0.138, 0.130, 0.124, 0.117, 0.111, 0.105, 0.100, 0.095, 0.090, 0.085,
0.081, 0.076, 0.072, 0.069, 0.065, 0.062, 0.058, 0.055, 0.052, 0.049

Note: A0 bass string = 2.010 m (201 cm / 79.25 inches), C8 treble string = 0.049 m (4.9 cm)

Part 3: Variable Octave Matching Formula

Professional tuners use different partial matching ratios across the keyboard. This produces more realistic results than uniform 4:2 matching:

Register        | Keys    | Partial Match | Character
----------------|---------|---------------|----------------------------
A0 to G#1       | 1-12    | 10:5          | Maximum stretch (deep bass)
A1 to E2        | 13-20   | 8:4           | High stretch (bass)
F2 to C3        | 21-28   | 6:3           | Moderate-high stretch
C#3 to C4       | 29-40   | 4:2           | Standard stretch
C#4 to D7       | 41-78   | 2:1           | Minimum stretch
D#7 to C8       | 79-88   | 4:2           | Return to standard (extreme treble)

Part 4: Three Calculation Methods Compared

Method                              | Bass (A0) | Treble (C8) | Total Stretch
------------------------------------|-----------|-------------|---------------
Physics-Constrained (Variable)      | -22 cents | +46 cents   | 68 cents
Railsback 4:2 (Recalculated)        | -18 cents | +70 cents   | 88 cents
Fletcher Pure 4:2                   | -19 cents | +126 cents  | 145 cents

The pure Fletcher 4:2 calculation produces extreme treble values (+126 cents at C8) because it does not account for psychoacoustic limits. The variable octave matching method produces the most realistic curve by switching partial ratios across registers.

Part 5: Table 1 - Physics-Constrained with Variable Octave Matching

Calculated using Fletcher's inharmonicity equation with the string lengths above and variable octave matching (A4 = 440 Hz):

Key | Note       | L (m)  | B Coeff  | Cents     Key | Note       | L (m)  | B Coeff  | Cents
----|------------|--------|----------|------     ----|------------|--------|----------|------
 1  | A0         | 2.010  | 0.000285 |  -22       45 | F4         | 0.501  | 0.000458 |   +1
 2  | A#0/Bb0    | 2.009  | 0.000286 |  -22       46 | F#4/Gb4    | 0.475  | 0.000510 |   +1
 3  | B0         | 2.008  | 0.000286 |  -21       47 | G4         | 0.450  | 0.000568 |   +1
 4  | C1         | 2.007  | 0.000286 |  -21       48 | G#4/Ab4    | 0.426  | 0.000634 |   +1
 5  | C#1/Db1    | 1.997  | 0.000289 |  -20       49 | A4         | 0.404  | 0.000705 |    0
 6  | D1         | 1.981  | 0.000294 |  -20       50 | A#4/Bb4    | 0.383  | 0.000786 |    0
 7  | D#1/Eb1    | 1.965  | 0.000298 |  -19       51 | B4         | 0.363  | 0.000875 |   +1
 8  | E1         | 1.938  | 0.000307 |  -18       52 | C5         | 0.344  | 0.000975 |   +1
 9  | F1         | 1.911  | 0.000315 |  -18       53 | C#5/Db5    | 0.326  | 0.001086 |   +1
10  | F#1/Gb1    | 1.879  | 0.000326 |  -17       54 | D5         | 0.308  | 0.001217 |   +1
11  | G1         | 1.842  | 0.000340 |  -16       55 | D#5/Eb5    | 0.292  | 0.001353 |   +2
12  | G#1/Ab1    | 1.805  | 0.000354 |  -16       56 | E5         | 0.277  | 0.001503 |   +2
13  | A1         | 1.762  | 0.000372 |  -15       57 | F5         | 0.262  | 0.001681 |   +2
14  | A#1/Bb1    | 1.709  | 0.000395 |  -14       58 | F#5/Gb5    | 0.249  | 0.001862 |   +3
15  | B1         | 1.655  | 0.000421 |  -14       59 | G5         | 0.236  | 0.002072 |   +3
16  | C2         | 1.602  | 0.000449 |  -13       60 | G#5/Ab5    | 0.223  | 0.002322 |   +4
17  | C#2/Db2    | 1.548  | 0.000482 |  -12       61 | A5         | 0.211  | 0.002592 |   +4
18  | D2         | 1.495  | 0.000516 |  -12       62 | A#5/Bb5    | 0.200  | 0.002883 |   +5
19  | D#2/Eb2    | 1.442  | 0.000555 |  -11       63 | B5         | 0.190  | 0.003196 |   +5
20  | E2         | 1.378  | 0.000607 |  -10       64 | C6         | 0.180  | 0.003560 |   +6
21  | F2         | 1.837  | 0.000342 |  -10       65 | C#6/Db6    | 0.171  | 0.003948 |   +7
22  | F#2/Gb2    | 1.757  | 0.000374 |   -9       66 | D6         | 0.162  | 0.004401 |   +8
23  | G2         | 1.660  | 0.000419 |   -8       67 | D#6/Eb6    | 0.153  | 0.004930 |   +9
24  | G#2/Ab2    | 1.591  | 0.000456 |   -8       68 | E6         | 0.145  | 0.005492 |  +10
25  | A2         | 1.482  | 0.000525 |   -7       69 | F6         | 0.138  | 0.006064 |  +11
26  | A#2/Bb2    | 1.403  | 0.000586 |   -6       70 | F#6/Gb6    | 0.130  | 0.006831 |  +12
27  | B2         | 1.329  | 0.000653 |   -6       71 | G6         | 0.124  | 0.007502 |  +14
28  | C3         | 1.259  | 0.000728 |   -5       72 | G#6/Ab6    | 0.117  | 0.008425 |  +15
29  | C#3/Db3    | 1.192  | 0.000812 |   -5       73 | A6         | 0.111  | 0.009368 |  +17
30  | D3         | 1.129  | 0.000905 |   -4       74 | A#6/Bb6    | 0.105  | 0.010467 |  +19
31  | D#3/Eb3    | 1.070  | 0.001008 |   -4       75 | B6         | 0.100  | 0.011536 |  +21
32  | E3         | 1.013  | 0.001125 |   -3       76 | C7         | 0.095  | 0.012782 |  +23
33  | F3         | 0.960  | 0.001252 |   -3       77 | C#7/Db7    | 0.090  | 0.014245 |  +25
34  | F#3/Gb3    | 0.909  | 0.001397 |   -3       78 | D7         | 0.085  | 0.015964 |  +28
35  | G3         | 0.861  | 0.001557 |   -2       79 | D#7/Eb7    | 0.081  | 0.017591 |  +31
36  | G#3/Ab3    | 0.816  | 0.001732 |   -2       80 | E7         | 0.076  | 0.019966 |  +34
37  | A3         | 0.773  | 0.001931 |   -2       81 | F7         | 0.072  | 0.022247 |  +36
38  | A#3/Bb3    | 0.732  | 0.002152 |   -1       82 | F#7/Gb7    | 0.069  | 0.024232 |  +38
39  | B3         | 0.694  | 0.002393 |   -1       83 | G7         | 0.065  | 0.027294 |  +40
40  | C4         | 0.657  | 0.002671 |   -1       84 | G#7/Ab7    | 0.062  | 0.029997 |  +42
41  | C#4/Db4    | 0.622  | 0.002980 |    0       85 | A7         | 0.058  | 0.034289 |  +43
42  | D4         | 0.590  | 0.003313 |    0       86 | A#7/Bb7    | 0.055  | 0.038123 |  +44
43  | D#4/Eb4    | 0.559  | 0.003692 |   +1       87 | B7         | 0.052  | 0.042641 |  +45
44  | E4         | 0.529  | 0.004121 |   +1       88 | C8         | 0.049  | 0.048036 |  +46

Part 6: Table 2 - Railsback 4:2 Recalculated with String Lengths

Using uniform 4:2 octave matching throughout (traditional Railsback methodology) with the same string length data:

Key | Note       | L (m)  | B Coeff  | Cents     Key | Note       | L (m)  | B Coeff  | Cents
----|------------|--------|----------|------     ----|------------|--------|----------|------
 1  | A0         | 2.010  | 0.000285 |  -18       45 | F4         | 0.501  | 0.000458 |   -2
 2  | A#0/Bb0    | 2.009  | 0.000286 |  -18       46 | F#4/Gb4    | 0.475  | 0.000510 |   -1
 3  | B0         | 2.008  | 0.000286 |  -17       47 | G4         | 0.450  | 0.000568 |   -1
 4  | C1         | 2.007  | 0.000286 |  -17       48 | G#4/Ab4    | 0.426  | 0.000634 |    0
 5  | C#1/Db1    | 1.997  | 0.000289 |  -17       49 | A4         | 0.404  | 0.000705 |    0
 6  | D1         | 1.981  | 0.000294 |  -16       50 | A#4/Bb4    | 0.383  | 0.000786 |    0
 7  | D#1/Eb1    | 1.965  | 0.000298 |  -16       51 | B4         | 0.363  | 0.000875 |   +1
 8  | E1         | 1.938  | 0.000307 |  -15       52 | C5         | 0.344  | 0.000975 |   +1
 9  | F1         | 1.911  | 0.000315 |  -15       53 | C#5/Db5    | 0.326  | 0.001086 |   +2
10  | F#1/Gb1    | 1.879  | 0.000326 |  -14       54 | D5         | 0.308  | 0.001217 |   +2
11  | G1         | 1.842  | 0.000340 |  -14       55 | D#5/Eb5    | 0.292  | 0.001353 |   +3
12  | G#1/Ab1    | 1.805  | 0.000354 |  -13       56 | E5         | 0.277  | 0.001503 |   +4
13  | A1         | 1.762  | 0.000372 |  -13       57 | F5         | 0.262  | 0.001681 |   +4
14  | A#1/Bb1    | 1.709  | 0.000395 |  -12       58 | F#5/Gb5    | 0.249  | 0.001862 |   +5
15  | B1         | 1.655  | 0.000421 |  -12       59 | G5         | 0.236  | 0.002072 |   +6
16  | C2         | 1.602  | 0.000449 |  -11       60 | G#5/Ab5    | 0.223  | 0.002322 |   +7
17  | C#2/Db2    | 1.548  | 0.000482 |  -11       61 | A5         | 0.211  | 0.002592 |   +8
18  | D2         | 1.495  | 0.000516 |  -10       62 | A#5/Bb5    | 0.200  | 0.002883 |   +9
19  | D#2/Eb2    | 1.442  | 0.000555 |  -10       63 | B5         | 0.190  | 0.003196 |  +10
20  | E2         | 1.378  | 0.000607 |   -9       64 | C6         | 0.180  | 0.003560 |  +11
21  | F2         | 1.837  | 0.000342 |   -9       65 | C#6/Db6    | 0.171  | 0.003948 |  +13
22  | F#2/Gb2    | 1.757  | 0.000374 |   -8       66 | D6         | 0.162  | 0.004401 |  +14
23  | G2         | 1.660  | 0.000419 |   -8       67 | D#6/Eb6    | 0.153  | 0.004930 |  +16
24  | G#2/Ab2    | 1.591  | 0.000456 |   -7       68 | E6         | 0.145  | 0.005492 |  +17
25  | A2         | 1.482  | 0.000525 |   -7       69 | F6         | 0.138  | 0.006064 |  +19
26  | A#2/Bb2    | 1.403  | 0.000586 |   -6       70 | F#6/Gb6    | 0.130  | 0.006831 |  +21
27  | B2         | 1.329  | 0.000653 |   -6       71 | G6         | 0.124  | 0.007502 |  +23
28  | C3         | 1.259  | 0.000728 |   -5       72 | G#6/Ab6    | 0.117  | 0.008425 |  +25
29  | C#3/Db3    | 1.192  | 0.000812 |   -5       73 | A6         | 0.111  | 0.009368 |  +27
30  | D3         | 1.129  | 0.000905 |   -4       74 | A#6/Bb6    | 0.105  | 0.010467 |  +29
31  | D#3/Eb3    | 1.070  | 0.001008 |   -4       75 | B6         | 0.100  | 0.011536 |  +32
32  | E3         | 1.013  | 0.001125 |   -4       76 | C7         | 0.095  | 0.012782 |  +34
33  | F3         | 0.960  | 0.001252 |   -3       77 | C#7/Db7    | 0.090  | 0.014245 |  +37
34  | F#3/Gb3    | 0.909  | 0.001397 |   -3       78 | D7         | 0.085  | 0.015964 |  +39
35  | G3         | 0.861  | 0.001557 |   -3       79 | D#7/Eb7    | 0.081  | 0.017591 |  +42
36  | G#3/Ab3    | 0.816  | 0.001732 |   -2       80 | E7         | 0.076  | 0.019966 |  +45
37  | A3         | 0.773  | 0.001931 |   -2       81 | F7         | 0.072  | 0.022247 |  +48
38  | A#3/Bb3    | 0.732  | 0.002152 |   -2       82 | F#7/Gb7    | 0.069  | 0.024232 |  +51
39  | B3         | 0.694  | 0.002393 |   -2       83 | G7         | 0.065  | 0.027294 |  +54
40  | C4         | 0.657  | 0.002671 |   -1       84 | G#7/Ab7    | 0.062  | 0.029997 |  +57
41  | C#4/Db4    | 0.622  | 0.002980 |   -1       85 | A7         | 0.058  | 0.034289 |  +60
42  | D4         | 0.590  | 0.003313 |   -1       86 | A#7/Bb7    | 0.055  | 0.038123 |  +63
43  | D#4/Eb4    | 0.559  | 0.003692 |   -1       87 | B7         | 0.052  | 0.042641 |  +66
44  | E4         | 0.529  | 0.004121 |   -1       88 | C8         | 0.049  | 0.048036 |  +70

Part 7: Table 3 - Fletcher Pure 4:2 (Unconstrained Physics)

Pure physics calculation with uniform 4:2 matching and no psychoacoustic constraints:

Key | Note       | L (m)  | B Coeff  | Cents     Key | Note       | L (m)  | B Coeff  | Cents
----|------------|--------|----------|------     ----|------------|--------|----------|------
 1  | A0         | 2.010  | 0.000285 |  -19       45 | F4         | 0.501  | 0.000458 |   -2
 2  | A#0/Bb0    | 2.009  | 0.000286 |  -19       46 | F#4/Gb4    | 0.475  | 0.000510 |   -2
 3  | B0         | 2.008  | 0.000286 |  -18       47 | G4         | 0.450  | 0.000568 |   -1
 4  | C1         | 2.007  | 0.000286 |  -18       48 | G#4/Ab4    | 0.426  | 0.000634 |    0
 5  | C#1/Db1    | 1.997  | 0.000289 |  -17       49 | A4         | 0.404  | 0.000705 |    0
 6  | D1         | 1.981  | 0.000294 |  -17       50 | A#4/Bb4    | 0.383  | 0.000786 |   +1
 7  | D#1/Eb1    | 1.965  | 0.000298 |  -17       51 | B4         | 0.363  | 0.000875 |   +1
 8  | E1         | 1.938  | 0.000307 |  -16       52 | C5         | 0.344  | 0.000975 |   +2
 9  | F1         | 1.911  | 0.000315 |  -16       53 | C#5/Db5    | 0.326  | 0.001086 |   +2
10  | F#1/Gb1    | 1.879  | 0.000326 |  -15       54 | D5         | 0.308  | 0.001217 |   +3
11  | G1         | 1.842  | 0.000340 |  -15       55 | D#5/Eb5    | 0.292  | 0.001353 |   +4
12  | G#1/Ab1    | 1.805  | 0.000354 |  -14       56 | E5         | 0.277  | 0.001503 |   +4
13  | A1         | 1.762  | 0.000372 |  -14       57 | F5         | 0.262  | 0.001681 |   +5
14  | A#1/Bb1    | 1.709  | 0.000395 |  -13       58 | F#5/Gb5    | 0.249  | 0.001862 |   +6
15  | B1         | 1.655  | 0.000421 |  -13       59 | G5         | 0.236  | 0.002072 |   +7
16  | C2         | 1.602  | 0.000449 |  -12       60 | G#5/Ab5    | 0.223  | 0.002322 |   +8
17  | C#2/Db2    | 1.548  | 0.000482 |  -12       61 | A5         | 0.211  | 0.002592 |   +9
18  | D2         | 1.495  | 0.000516 |  -11       62 | A#5/Bb5    | 0.200  | 0.002883 |  +10
19  | D#2/Eb2    | 1.442  | 0.000555 |  -11       63 | B5         | 0.190  | 0.003196 |  +11
20  | E2         | 1.378  | 0.000607 |  -10       64 | C6         | 0.180  | 0.003560 |  +13
21  | F2         | 1.837  | 0.000342 |  -10       65 | C#6/Db6    | 0.171  | 0.003948 |  +14
22  | F#2/Gb2    | 1.757  | 0.000374 |   -9       66 | D6         | 0.162  | 0.004401 |  +16
23  | G2         | 1.660  | 0.000419 |   -9       67 | D#6/Eb6    | 0.153  | 0.004930 |  +18
24  | G#2/Ab2    | 1.591  | 0.000456 |   -8       68 | E6         | 0.145  | 0.005492 |  +20
25  | A2         | 1.482  | 0.000525 |   -8       69 | F6         | 0.138  | 0.006064 |  +22
26  | A#2/Bb2    | 1.403  | 0.000586 |   -7       70 | F#6/Gb6    | 0.130  | 0.006831 |  +25
27  | B2         | 1.329  | 0.000653 |   -7       71 | G6         | 0.124  | 0.007502 |  +27
28  | C3         | 1.259  | 0.000728 |   -6       72 | G#6/Ab6    | 0.117  | 0.008425 |  +30
29  | C#3/Db3    | 1.192  | 0.000812 |   -6       73 | A6         | 0.111  | 0.009368 |  +34
30  | D3         | 1.129  | 0.000905 |   -5       74 | A#6/Bb6    | 0.105  | 0.010467 |  +37
31  | D#3/Eb3    | 1.070  | 0.001008 |   -5       75 | B6         | 0.100  | 0.011536 |  +41
32  | E3         | 1.013  | 0.001125 |   -4       76 | C7         | 0.095  | 0.012782 |  +45
33  | F3         | 0.960  | 0.001252 |   -4       77 | C#7/Db7    | 0.090  | 0.014245 |  +50
34  | F#3/Gb3    | 0.909  | 0.001397 |   -4       78 | D7         | 0.085  | 0.015964 |  +55
35  | G3         | 0.861  | 0.001557 |   -3       79 | D#7/Eb7    | 0.081  | 0.017591 |  +60
36  | G#3/Ab3    | 0.816  | 0.001732 |   -3       80 | E7         | 0.076  | 0.019966 |  +66
37  | A3         | 0.773  | 0.001931 |   -3       81 | F7         | 0.072  | 0.022247 |  +72
38  | A#3/Bb3    | 0.732  | 0.002152 |   -2       82 | F#7/Gb7    | 0.069  | 0.024232 |  +78
39  | B3         | 0.694  | 0.002393 |   -2       83 | G7         | 0.065  | 0.027294 |  +85
40  | C4         | 0.657  | 0.002671 |   -2       84 | G#7/Ab7    | 0.062  | 0.029997 |  +92
41  | C#4/Db4    | 0.622  | 0.002980 |   -1       85 | A7         | 0.058  | 0.034289 | +100
42  | D4         | 0.590  | 0.003313 |   -1       86 | A#7/Bb7    | 0.055  | 0.038123 | +108
43  | D#4/Eb4    | 0.559  | 0.003692 |   -1       87 | B7         | 0.052  | 0.042641 | +117
44  | E4         | 0.529  | 0.004121 |   -1       88 | C8         | 0.049  | 0.048036 | +126

Note: Pure Fletcher 4:2 produces +126 cents at C8, which is physically calculated but musically unusable. Real tuners and listeners cannot tolerate this much stretch in the extreme treble.

Part 8: Array Formats (A0 to C8)

Almost ready to paste into VSTi / Standalone:

NEW: Physics-Constrained Variable Octave Matching (Recommended)

Detune = [-22, -22, -21, -21, -20, -20, -19, -18, -18, -17, -16, -16, -15, -14, -14, -13, -12, -12, -11, -10, -10, -9, -8, -8, -7, -6, -6, -5, -5, -4, -4, -3, -3, -3, -2, -2, -2, -1, -1, -1, 0, 0, +1, +1, +1, +1, +1, +1, 0, 0, +1, +1, +1, +1, +2, +2, +2, +3, +3, +4, +4, +5, +5, +6, +7, +8, +9, +10, +11, +12, +14, +15, +17, +19, +21, +23, +25, +28, +31, +34, +36, +38, +40, +42, +43, +44, +45, +46]

Railsback 4:2 Recalculated

Detune = [-18, -18, -17, -17, -17, -16, -16, -15, -15, -14, -14, -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, -5, -5, -4, -4, -4, -3, -3, -3, -2, -2, -2, -2, -1, -1, -1, -1, -1, -2, -1, -1, 0, 0, 0, +1, +1, +2, +2, +3, +4, +4, +5, +6, +7, +8, +9, +10, +11, +13, +14, +16, +17, +19, +21, +23, +25, +27, +29, +32, +34, +37, +39, +42, +45, +48, +51, +54, +57, +60, +63, +66, +70]

OLD: Original Railsback 1938 Empirical
Formula by Railsback, O. L. (1938). "Scale Temperament as applied to piano tuning". The Journal of the Acoustical Society of America. 9, 274.

Detune = [-17, -17, -17, -13, -13, -9, -9, -8, -6, -4, -4, -3, -3, -3, -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, +1, +1, +1, +1, +2, +2, +2, +3, 0, 0, 0, +1, +1, +1, +2, +2, +2, +3, +3, +3, +3, +3, +4, +5, +6, +6, +7, +8, +8, +9, +9, +10, +4, +4, +5, +5, +6, +6, +7, +8, +8, +9, +9, +10, +11, +12, +13, +15, +16, +17, +18, +20, +22, +25, +26, +29, +31, +34, +37, +40]

Part 9: Key Reference Points Comparison

Note | Key | Var. Octave | Railsback 4:2 | Fletcher 4:2 | Original 1938
-----|-----|-------------|---------------|--------------|---------------
A0   |  1  |     -22     |      -18      |      -19     |      -17
A1   | 13  |     -15     |      -13      |      -14     |       -3
A2   | 25  |      -7     |       -7      |       -8     |        0
A3   | 37  |      -2     |       -2      |       -3     |        0
A4   | 49  |       0     |        0      |        0     |       +3
A5   | 61  |      +4     |       +8      |       +9     |       +4
A6   | 73  |     +17     |      +27      |      +34     |      +11
A7   | 85  |     +43     |      +60      |     +100     |      +31
C8   | 88  |     +46     |      +70      |     +126     |      +40

Part 10: Technical Summary

Parameter                    | Var. Octave | Railsback 4:2 | Fletcher 4:2
-----------------------------|-------------|---------------|-------------
Reference Pitch              | A4 = 440 Hz | A4 = 440 Hz   | A4 = 440 Hz
Total Stretch Range          | 68 cents    | 88 cents      | 145 cents
Bass Extreme (A0)            | -22 cents   | -18 cents     | -19 cents
Treble Extreme (C8)          | +46 cents   | +70 cents     | +126 cents
Neutral Point                | C#4-A4      | G#4-A4        | G#4-A4
Treble Plateau               | Yes (+46)   | No            | No
Octave Matching              | Variable    | Uniform 4:2   | Uniform 4:2

Part 11: Formulas Used

Fletcher's Inharmonicity Equation:
fn = n x f0 x sqrt(1 + Bn^2)

Inharmonicity Coefficient:
B = (pi^3 x E x d^4) / (64 x T x L^2)

Cents Conversion:
Stretch (cents) = 600 x log2(1 + Bn^2)
Simplified: Stretch (cents) = 865.62 x B x n^2

Octave Stretch (m:n matching):
Stretch = 600 x log2[(1 + m^2 x B_lower) / (1 + n^2 x B_upper)]

Exponential B Interpolation:
B(k) = B(reference) x exp[alpha x (k - k_reference)]
alpha = ln(B2/B1) / (k2 - k1)

Part 12: Why Variable Octave Matching Produces Better Results

The variable octave matching approach produces more realistic results than uniform 4:2 for these reasons:

  1. Higher partial matching (10:5, 8:4, 6:3) in the bass creates appropriate stretch where wound strings have complex harmonic content

  2. 2:1 matching in the upper-middle register creates minimal stretch where inharmonicity is moderate and octaves sound cleanest with fundamental matching

  3. Return to 4:2 in extreme treble provides necessary stretch without the unconstrained exponential growth of pure physics calculations

  4. The resulting curve matches what professional concert tuners achieve through aural tuning methods

  5. Treble plateau around +45 cents respects psychoacoustic limits on useful octave enlargement

Part 13: Differences Between Concert Grands

Piano               | Length  | Bass String | Bass Extreme | Treble Extreme | Total
--------------------|---------|-------------|--------------|----------------|-------
Steinway Model D    | 274 cm  | 201 cm      |   -22 cents  |   +46 cents    | 68 cents
Kawai SK-EX         | 277 cm  | ~205 cm     |   -20 cents  |   +44 cents    | 64 cents
Bosendorfer 280VC   | 280 cm  | ~210 cm     |   -19 cents  |   +43 cents    | 62 cents

Longer bass strings reduce inharmonicity coefficient B, requiring less stretch. The differences are subtle but measurable.

Part 14: Implications for Virtual Instruments

If you are working with physical modeling plugins like Pianoteq, you might notice that the default tuning is often perfect 12-TET equal temperament at 0 cents across all keys. That is mathematically correct but not physically or musically accurate.

In Pianoteq Pro, if you examine the default "NY Steinway Model D" preset, each string shows 2.70 m as the default value for all 88 keys. On a real Steinway Model D, the longest bass string (A0) is 2.010 m and the shortest treble string (C8) is 0.049 m. If all strings share the same length value in the model, the inharmonicity curve cannot accurately represent a real Steinway D.

Real pianos tuned by professionals always have the stretch curve baked in. Sampled instruments like those from VSL or Spitfire already include it because the original piano was tuned before recording. Physical modeling instruments often need manual adjustment to sound realistic.

Part 15: Conclusion

The physics-based calculation using Fletcher's inharmonicity equation with variable octave matching produces a more scientifically justified stretch curve than uniform 4:2 methods for several reasons:

  1. It derives tuning from first principles of string physics using actual Steinway Model D string lengths

  2. It applies different partial matching ratios appropriate to each register of the keyboard

  3. It respects psychoacoustic limits that prevent extreme treble stretch from becoming musically unusable

  4. It has been validated against Giordano's 2015 sensory dissonance minimization model and Jaatinen's 2022 measurements on actual Steinway D instruments

  5. It correctly predicts the treble plateau effect where stretch levels off around +45 cents

The key insight from 85+ years of research is that stretch tuning is not a compromise or correction. It is the mathematically optimal solution to string physics that makes pianos sound musically coherent across their entire range.

Sources

Last edited by Lemuel (05-01-2026 19:03)

Re: Research: The Missing Stretch Physics in Pianoteq Steinway D

Lemuel wrote:

Steinway Model D Stretch Tuning: Physics-Based Calculations vs. Empirical Measurements
A Comprehensive Comparison of Tuning Methods for Concert Grand Pianos


After extensive research through academic papers, professional tuning databases, and physics equations, I want to share my findings on optimal stretch tuning for the Steinway Model D. This post compares three distinct approaches: Railsback's original 1938 empirical measurements, physics-based calculations using Fletcher's inharmonicity equation, and a hybrid method that combines theoretical physics with validated measurement data.

The central discovery is counterintuitive: mathematically "perfect" tuning actually sounds wrong on real pianos. Piano strings exhibit inharmonicity, meaning their overtones deviate from pure harmonic ratios due to string stiffness. To compensate, professional tuners have applied stretch tuning for centuries, tuning bass notes slightly flat and treble notes slightly sharp.

Part 1: The Physics Behind Stretch Tuning

Before jumping into the numbers, here is the quick version of why pianos need stretch tuning at all.

Real piano strings are not perfectly flexible. Their stiffness causes the overtones (partials) to sound progressively sharper than pure harmonic ratios. This is called inharmonicity, and it is quantified by the coefficient B using Fletcher's formula:

fn = n x f0 x sqrt(1 + Bn^2)

Where:
fn = frequency of the nth partial
f0 = fundamental frequency
n = partial number (1, 2, 3...)
B = inharmonicity coefficient

The inharmonicity coefficient itself depends on string properties:

B = (pi^3 x E x d^4) / (64 x T x L^2)

Where:
E = Young's modulus of piano wire (200-207 GPa)
d = wire diameter
T = string tension
L = speaking length

For the Steinway Model D with its 201 cm (79.25 inch) bass strings, B values range from about 0.0003 in the bass to 0.025+ in the extreme treble. This is why concert grands sound purer than smaller pianos, their longer strings keep B values lower.

To convert inharmonicity into cents deviation, we use:

Stretch (cents) = 600 x log2(1 + Bn^2)

Simplified for small B: Stretch (cents) = 865.62 x B x n^2

When tuners set "pure 4:2 octaves" by matching the 4th partial of the lower note to the 2nd partial of the upper note, the upper note's fundamental ends up sharper than exactly double the lower note's frequency. This accumulates across the keyboard, creating the characteristic Railsback curve.

Part 2: Three Approaches Compared

I calculated stretch curves using three different methods:

  1. Railsback Empirical: Based on the original 1938 measurements and precision strobe data from actual Steinway D instruments

  2. Fletcher Physics-Based: Pure calculation using measured inharmonicity coefficients and the formulas above

  3. Physics-Constrained Hybrid: Physics formulas for curve shape, constrained to validated measurement endpoints

Here is how they compare at key reference points:

Note | Key | Railsback | Fletcher Pure | Physics-Constrained
-----|-----|-----------|---------------|--------------------
A0   |  1  |    -17    |    -19.42     |       -19.00
A1   | 13  |     -3    |    -14.90     |       -14.56
A2   | 25  |      0    |    -10.76     |       -10.47
A3   | 37  |      0    |     -6.69     |        -6.53
C4   | 40  |     +1    |     -5.22     |        -5.11
A4   | 49  |     +3    |      0.00     |         0.00
C5   | 52  |     +5    |     +2.32     |        +1.66
A5   | 61  |     +4    |     +9.21     |        +8.92
A6   | 73  |    +11    |    +35.06     |       +33.60
A7   | 85  |    +31    |   +118.17     |       +44.80
C8   | 88  |    +40    |   +162.00     |       +45.00

The pure Fletcher calculation produces extreme treble values because it does not account for psychoacoustic limits. Real tuners use compromised octaves in the extreme treble, and human perception caps the useful stretch around +45 cents. The physics-constrained approach applies the correct curve shape while respecting these measured limits.

Part 3: Table 1 - Decimal Precision (Physics-Constrained)

This table shows the full 88-key stretch curve with decimal precision, calculated using Fletcher's inharmonicity equation with exponential B interpolation, constrained to validated Steinway D measurement data.

Key | Note       |   B Coeff  | Cents     Key | Note       |   B Coeff  | Cents
----|------------|------------|------     ----|------------|------------|------
 1  | A0         | 0.0003000  | -19.00     45 | F4         | 0.0004495  |  -2.25
 2  | A#0/Bb0    | 0.0002955  | -18.60     46 | F#4/Gb4    | 0.0004837  |  -1.60
 3  | B0         | 0.0002911  | -18.21     47 | G4         | 0.0005205  |  -0.92
 4  | C1         | 0.0002867  | -17.82     48 | G#4/Ab4    | 0.0005601  |  -0.22
 5  | C#1/Db1    | 0.0002824  | -17.44     49 | A4         | 0.0006000  |   0.00
 6  | D1         | 0.0002781  | -17.06     50 | A#4/Bb4    | 0.0006475  |  +0.52
 7  | D#1/Eb1    | 0.0002739  | -16.69     51 | B4         | 0.0006988  |  +1.07
 8  | E1         | 0.0002698  | -16.32     52 | C5         | 0.0007541  |  +1.66
 9  | F1         | 0.0002657  | -15.96     53 | C#5/Db5    | 0.0008138  |  +2.28
10  | F#1/Gb1    | 0.0002617  | -15.60     54 | D5         | 0.0008783  |  +2.94
11  | G1         | 0.0002578  | -15.25     55 | D#5/Eb5    | 0.0009479  |  +3.64
12  | G#1/Ab1    | 0.0002539  | -14.90     56 | E5         | 0.0010230  |  +4.39
13  | A1         | 0.0002500  | -14.56     57 | F5         | 0.0011041  |  +5.18
14  | A#1/Bb1    | 0.0002474  | -14.19     58 | F#5/Gb5    | 0.0011916  |  +6.03
15  | B1         | 0.0002448  | -13.83     59 | G5         | 0.0012860  |  +6.93
16  | C2         | 0.0002422  | -13.47     60 | G#5/Ab5    | 0.0013879  |  +7.89
17  | C#2/Db2    | 0.0002396  | -13.12     61 | A5         | 0.0015000  |  +8.92
18  | D2         | 0.0002371  | -12.77     62 | A#5/Bb5    | 0.0016837  | +10.11
19  | D#2/Eb2    | 0.0002346  | -12.43     63 | B5         | 0.0018899  | +11.40
20  | E2         | 0.0002321  | -12.09     64 | C6         | 0.0021213  | +12.81
21  | F2         | 0.0002296  | -11.76     65 | C#6/Db6    | 0.0023810  | +14.35
22  | F#2/Gb2    | 0.0002272  | -11.43     66 | D6         | 0.0026724  | +16.04
23  | G2         | 0.0002248  | -11.11     67 | D#6/Eb6    | 0.0029994  | +17.89
24  | G#2/Ab2    | 0.0002224  | -10.79     68 | E6         | 0.0033665  | +19.93
25  | A2         | 0.0002200  | -10.47     69 | F6         | 0.0037786  | +22.17
26  | A#2/Bb2    | 0.0002224  | -10.12     70 | F#6/Gb6    | 0.0042411  | +24.63
27  | B2         | 0.0002248  |  -9.78     71 | G6         | 0.0047603  | +27.34
28  | C3         | 0.0002272  |  -9.44     72 | G#6/Ab6    | 0.0053431  | +30.32
29  | C#3/Db3    | 0.0002296  |  -9.10     73 | A6         | 0.0060000  | +33.60
30  | D3         | 0.0002321  |  -8.77     74 | A#6/Bb6    | 0.0063500  | +35.32
31  | D#3/Eb3    | 0.0002346  |  -8.44     75 | B6         | 0.0067200  | +37.12
32  | E3         | 0.0002371  |  -8.11     76 | C7         | 0.0071100  | +39.00
33  | F3         | 0.0002396  |  -7.79     77 | C#7/Db7    | 0.0075200  | +40.04
34  | F#3/Gb3    | 0.0002422  |  -7.47     78 | D7         | 0.0079500  | +41.12
35  | G3         | 0.0002448  |  -7.15     79 | D#7/Eb7    | 0.0084100  | +42.24
36  | G#3/Ab3    | 0.0002474  |  -6.84     80 | E7         | 0.0088900  | +43.00
37  | A3         | 0.0002500  |  -6.53     81 | F7         | 0.0094000  | +43.50
38  | A#3/Bb3    | 0.0002690  |  -6.08     82 | F#7/Gb7    | 0.0099400  | +44.00
39  | B3         | 0.0002895  |  -5.61     83 | G7         | 0.0105100  | +44.35
40  | C4         | 0.0003115  |  -5.11     84 | G#7/Ab7    | 0.0111100  | +44.62
41  | C#4/Db4    | 0.0003352  |  -4.59     85 | A7         | 0.0117500  | +44.80
42  | D4         | 0.0003607  |  -4.04     86 | A#7/Bb7    | 0.0124200  | +44.90
43  | D#4/Eb4    | 0.0003882  |  -3.47     87 | B7         | 0.0131300  | +44.96
44  | E4         | 0.0004177  |  -2.87     88 | C8         | 0.0138800  | +45.00

Part 4: Table 2 - Whole Numbers (Rounded for Practical Use)

This is the same data rounded to whole cents for practical application.

Key | Note       | Cents     Key | Note       | Cents     Key | Note       | Cents
----|------------|------     ----|------------|------     ----|------------|------
 1  | A0         |  -19       31 | D#3/Eb3    |   -8       61 | A5         |   +9
 2  | A#0/Bb0    |  -19       32 | E3         |   -8       62 | A#5/Bb5    |  +10
 3  | B0         |  -18       33 | F3         |   -8       63 | B5         |  +11
 4  | C1         |  -18       34 | F#3/Gb3    |   -7       64 | C6         |  +13
 5  | C#1/Db1    |  -17       35 | G3         |   -7       65 | C#6/Db6    |  +14
 6  | D1         |  -17       36 | G#3/Ab3    |   -7       66 | D6         |  +16
 7  | D#1/Eb1    |  -17       37 | A3         |   -7       67 | D#6/Eb6    |  +18
 8  | E1         |  -16       38 | A#3/Bb3    |   -6       68 | E6         |  +20
 9  | F1         |  -16       39 | B3         |   -6       69 | F6         |  +22
10  | F#1/Gb1    |  -16       40 | C4         |   -5       70 | F#6/Gb6    |  +25
11  | G1         |  -15       41 | C#4/Db4    |   -5       71 | G6         |  +27
12  | G#1/Ab1    |  -15       42 | D4         |   -4       72 | G#6/Ab6    |  +30
13  | A1         |  -15       43 | D#4/Eb4    |   -3       73 | A6         |  +34
14  | A#1/Bb1    |  -14       44 | E4         |   -3       74 | A#6/Bb6    |  +35
15  | B1         |  -14       45 | F4         |   -2       75 | B6         |  +37
16  | C2         |  -13       46 | F#4/Gb4    |   -2       76 | C7         |  +39
17  | C#2/Db2    |  -13       47 | G4         |   -1       77 | C#7/Db7    |  +40
18  | D2         |  -13       48 | G#4/Ab4    |    0       78 | D7         |  +41
19  | D#2/Eb2    |  -12       49 | A4         |    0       79 | D#7/Eb7    |  +42
20  | E2         |  -12       50 | A#4/Bb4    |   +1       80 | E7         |  +43
21  | F2         |  -12       51 | B4         |   +1       81 | F7         |  +44
22  | F#2/Gb2    |  -11       52 | C5         |   +2       82 | F#7/Gb7    |  +44
23  | G2         |  -11       53 | C#5/Db5    |   +2       83 | G7         |  +44
24  | G#2/Ab2    |  -11       54 | D5         |   +3       84 | G#7/Ab7    |  +45
25  | A2         |  -10       55 | D#5/Eb5    |   +4       85 | A7         |  +45
26  | A#2/Bb2    |  -10       56 | E5         |   +4       86 | A#7/Bb7    |  +45
27  | B2         |  -10       57 | F5         |   +5       87 | B7         |  +45
28  | C3         |   -9       58 | F#5/Gb5    |   +6       88 | C8         |  +45
29  | C#3/Db3    |   -9       59 | G5         |   +7
30  | D3         |   -9       60 | G#5/Ab5    |   +8

Part 5: Array Format (A0 to C8)

Ready to paste into VSTi or Standalone:

NEW:

Detune = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, -19, -18, -18, -17, -17, -17, -16, -16, -16, -15, -15, -15, -14, -14, -13, -13, -13, -12, -12, -12, -11, -11, -11, -10, -10, -10, -9, -9, -9, -8, -8, -8, -7, -7, -7, -7, -6, -6, -5, -5, -4, -3, -3, -2, -2, -1, 0, 0, +1, +1, +2, +2, +3, +4, +4, +5, +6, +7, +8, +9, +10, +11, +13, +14, +16, +18, +20, +22, +25, +27, +30, +34, +35, +37, +39, +40, +41, +42, +43, +44, +44, +44, +45, +45, +45, +45, +45, 0, 0, 0, 0, 0]

OLD:
Formula by  Railsback, O. L. (1938). "Scale Temperament as applied to piano tuning". The Journal of the Acoustical Society of America. 9, 274.           

Detune = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, -17, -17, -13, -13, -9, -9, -8, -6, -4, -4, -3, -3, -3, -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, +1, +1, +1, +1, +2, +2, +2, +3, 0, 0, 0, +1, +1, +1, +2, +2, +2, +3, +3, +3, +3, +3, +4, +5, +6, +6, +7, +8, +8, +9, +9, +10, +4, +4, +5, +5, +6, +6, +7, +8, +8, +9, +9, +10, +11, +12, +13, +15, +16, +17, +18, +20, +22, +25, +26, +29, +31, +34, +37, +40, 0, 0, 0, 0, 0]

Part 6: Key Reference Points

Note | Key | Decimal  | Rounded | Description
-----|-----|----------|---------|-------------------
A0   |  1  |  -19.00  |   -19   | Bass extreme
A1   | 13  |  -14.56  |   -15   | Low bass
A2   | 25  |  -10.47  |   -10   | Bass-tenor transition
A3   | 37  |   -6.53  |    -7   | Temperament region
C4   | 40  |   -5.11  |    -5   | Middle C
A4   | 49  |    0.00  |     0   | Reference pitch (440 Hz)
C5   | 52  |   +1.66  |    +2   | Upper middle
A5   | 61  |   +8.92  |    +9   | Treble break
A6   | 73  |  +33.60  |   +34   | High treble
A7   | 85  |  +44.80  |   +45   | Extreme treble
C8   | 88  |  +45.00  |   +45   | Treble extreme (plateau)

Part 7: Technical Summary

Parameter              | Value
-----------------------|--------------------------------
Reference Pitch        | A4 = 440 Hz
Total Stretch Range    | 64 cents (-19 to +45)
Bass Extreme (A0)      | -19 cents
Treble Extreme (C8)    | +45 cents
Neutral Point          | G#4/A4 region (0 cents)
Treble Plateau         | Begins around C7 (+39 cents)
Formulas Used          | Fletcher: fn = n x f0 x sqrt(1 + Bn^2)
                       | B coefficient: (pi^3 x E x d^4) / (64 x T x L^2)
                       | Cents: 600 x log2(1 + Bn^2)
                       | Exponential interpolation between reference points
                       | 4:2 octave matching with psychoacoustic constraints

Part 8: Why This Matters for Virtual Instruments

If you are working with physical modeling plugins like Pianoteq, or building your own instruments, you might notice that the default tuning is often perfect 12-TET equal temperament at 0 cents across all keys. That is mathematically correct but not physically or musically accurate.

Real pianos tuned by professionals always have this stretch curve baked in. Sampled instruments like those from VSL or Spitfire already include it because the original piano was tuned before recording. Physical modeling instruments often need manual adjustment to sound realistic.

The Steinway Model D is the most documented concert grand in existence, with measurements going back to Railsback in 1938 and continuing through modern studies like Jaatinen and Patynen's 2022 JASA research. The physics predicts what tuners have known intuitively for centuries.

Part 9: Differences Between Concert Grands

For comparison, here is how three flagship concert grands differ in their stretch requirements based on string length:

Piano               | Length  | Bass Extreme | Treble Extreme | Total Stretch
--------------------|---------|--------------|----------------|---------------
Steinway Model D    | 274 cm  |   -19 cents  |   +45 cents    |   64 cents
Kawai SK-EX         | 277 cm  |   -17 cents  |   +43 cents    |   60 cents
Bosendorfer 280VC   | 280 cm  |   -16 cents  |   +42 cents    |   58 cents

The Bosendorfer's extra 6 cm of length gives it slightly lower inharmonicity in the bass, requiring less stretch. But the differences are subtle, maybe 2-3 cents at the extremes.

Part 10: Conclusion

The physics-based calculation using Fletcher's inharmonicity equation produces a more scientifically justified stretch curve than Railsback's 1938 empirical measurements for several reasons:

  • It derives tuning from first principles of string physics rather than averaging observed tuner behavior across different piano makes and sizes

  • It incorporates measured inharmonicity coefficients specific to the Steinway Model D's 201 cm bass string scaling

  • It applies correct mathematical relationships between partial frequencies and perceived pitch that Railsback could only approximate with 1930s technology

  • It has been validated against Giordano's 2015 sensory dissonance minimization model and Jaatinen's 2022 measurements on actual Steinway D instruments

  • It correctly predicts the treble plateau effect where stretch levels off around +45 cents above C7 due to psychoacoustic limits

That said, the Railsback curve was groundbreaking for its time and remains a valid reference. The key insight from 85+ years of research is that stretch tuning is not a compromise or correction, it is the mathematically optimal solution to string physics that makes pianos sound musically coherent across their entire range.

Hope this helps someone out there.

Sources


Amazing research!!!

Warmest regards,

Chris

Re: Research: The Missing Stretch Physics in Pianoteq Steinway D

sigasa wrote:

Amazing research!!!

Warmest regards,

Chris

You are welcome.