Piano Tuning Assistant: Measuring Inharmonicity & Building Stretch Curves

Piano tuning assistant - inharmonicity and stretch curves

Most tuner apps treat a piano like a giant guitar: one note, one target frequency, tune to zero cents.

More important, they “mush” all of the harmonics of each note into an “in-tune” or “out of tune” signal on a needle. Even “single strobe” tuners do this!

This fails spectacularly for pianos. A real piano has 230 strings, each with unique physical properties that cause its overtones to ring sharper than theory predicts. Tune every note to its “correct” frequency and the piano sounds wrong: treble notes clash with bass harmonics, octaves beat against each other, and the whole instrument feels sour.

StroboPro’s Piano Tuning Assistant (PTA) (in Beta in the apps AND at strobopro.se)takes a different approach: it measures the actual inharmonicity of each string on your piano, calculates a custom stretch curve for your instrument, and guides you through tuning to that curve using StroboPro’s 0.1-cent strobe display. There are no generic lookup tables and no one-size-fits-all stretch presets, just real measurement of the instrument sitting in front of you.

Better still – Strobopro can uniquely set a reference for each and every partial for each note of your piano, so when your unique piano’s string is “perfectly out of tune with itself” StroboPro will stay dead steady.

In the first part of the video, StroboPro expects a Studio Grand Piano, but the simulated piano is actually an Upright. Even though both “tunings” are “equal temperament,” only with the correct internal model for the Piano does StroboPro show that it is in tune.

This article explains what inharmonicity is, why it matters for piano tuning, how the PTA measures it, and how the results compare to professional tools that cost hundreds of dollars.

What Is Inharmonicity?

Inharmonicity is the tendency of real piano strings to produce overtones that are sharper than the theoretical harmonic series. In an ideal string (perfectly flexible, infinitely thin), the overtones would be exact integer multiples of the fundamental: 2x, 3x, 4x, and so on. (A string vibrating at 100 Hz would produce overtones at exactly 200 Hz, 300 Hz, 400 Hz…)

Real piano strings are not ideal. They are thick steel wires under high tension, and they have stiffness. That stiffness acts like an additional restoring force, especially at higher vibration modes where the string bends more sharply at its nodes. As a result, the 2nd partial rings a little above 2x the fundamental, the 3rd partial rings a little above 3x, and so on. The higher the partial number, the sharper the deviation.

This is not a subtle effect. On a small spinet piano, the 4th partial of a low bass note can be 20+ cents sharper than the theoretical 4th harmonic. Even on a concert grand, where the long strings minimize stiffness, the treble partials still deviate by several cents.

Why this matters for tuning: when you tune by ear, you listen to how partials of different notes interact. You tune an octave so that the 2nd partial of the lower note aligns with the fundamental of the higher note. But if the 2nd partial is sharp from inharmonicity, you have to tune the higher note sharp to match it. That deliberate sharpness is called stretch, and it accumulates across the entire keyboard.

The amount of inharmonicity depends on the string’s physical properties:

Factor Effect on Inharmonicity Example
String length Shorter = higher B Spinet vs. Concert Grand
String diameter Thicker = higher B Bass strings (wrapped) vs. treble
String stiffness Stiffer = higher B High-tension steel vs. softer wire
String tension Higher tension = lower B Properly strung vs. worn out

The net effect is captured by a single number: the B coefficient. Every string has one. It quantifies exactly how sharp the overtones go. And every piano has a unique set of B values across its 88 keys, because no two pianos have identical string scaling.

Why Generic Stretch Tables Don’t Work

If inharmonicity were the same for every piano, you could look it up in a table and be done. That is exactly what most piano tuning modes in generic tuner apps do: they apply a generic stretch curve (often based on the Railsback curve) that adds a fixed amount of sharpness in the treble and flatness in the bass.

The Railsback curve is an empirical average of how well-tuned pianos deviate from equal temperament (see Wikipedia’s summary for the history). It shows the characteristic S-shape: bass notes tuned flat, treble notes tuned progressively sharper, with the deviation increasing toward the extremes of the keyboard.

Railsback’s curve is valuable as a reference, because it tells you what “generally sounds right” across many pianos. But here is the problem: your piano is not an average. A 45-inch console upright has significantly different inharmonicity than a 9-foot concert grand. The bass strings on a spinet are so short and thick that their B values are dramatically higher than the same notes on a grand. A generic curve that sounds fine on a Steinway D will sound thin and sharp on a Kimball spinet, and flat and muddy on a Yamaha C7.

Piano Type Typical B Range (bass) Typical B Range (treble) Generic Curve Match
Spinet Very high High Poor
Console High Moderate Fair
Upright (full) Moderate Moderate Good
Baby Grand Moderate Low Good
Studio Grand Low Low Very Good
Concert Grand Very low Very low Excellent

Notice the pattern: generic curves work best for concert grands, where B values are low and predictable. The pianos that most need custom measurement, the small uprights and spinets that sit in living rooms and practice rooms, are the ones where generic curves fail worst.

This is the problem StroboPro’s Piano Tuning Assistant solves: instead of assuming your piano matches an average, it measures the actual B coefficient of each string and generates a stretch curve tailored to your specific instrument.

How StroboPro Measures Your Piano

The Piano Tuning Assistant uses a 5-step wizard that walks you through the entire process: Setup, Bridge Break, Measure, Review, and Apply.

Step 1: Setup

You tell StroboPro what kind of piano you are working on. The PTA supports six piano types (Spinet, Console, Upright, Baby Grand, Studio Grand, and Concert Grand), each with different expected B ranges. This selection gives the measurement algorithm a starting framework: it tells StroboPro roughly where to expect the B values to land, which helps reject noise and false readings.

You also choose your preferred octave style, the basis for how the stretch curve is calculated:

Octave Style Description Best For
4:2 Tunes so the 4th partial of the lower note matches the 2nd partial of the upper Standard tuning, most pianos
6:3 Tunes so the 6th partial of the lower matches the 3rd of the upper Wider stretch, brighter sound
Pure 12ths Tunes 12ths beatless rather than octaves Contemporary classical, some technicians
Concert Grand Aggressive stretch optimized for large instruments Performance venues, recording

Step 2: Bridge Break

The PTA identifies the bridge break point, the transition from the bass bridge to the treble bridge. This is where the string scaling changes dramatically, and it is a critical reference point for the stretch curve. On most pianos, this falls somewhere between notes A25 and E32. StroboPro helps you locate it precisely.

Step 3: Measure

This is where the science happens. You play each note (or a range of notes) and StroboPro captures the sound. Using a long analysis window, it isolates the individual partials of each string with high precision. From the spacing between partials, it calculates the inharmonicity coefficient (B) using the standard physical relationship between string stiffness and partial frequencies.

The frequency of the n-th partial is:

f(n) = n × f(1) × sqrt((1 + B×n²) / (1 + B))

Where:

  • f(n): Frequency of partial n
  • f(0): Theoretical fundamental frequency
  • f(1)​: Measured fundamental frequency (the 1st theoretical partial)
  • B: Inharmonicity coefficient
  • n: Partial number (1, 2, 3, …)

The formula above anchors on f(1) – the measured fundamental of the real string – rather than the theoretical ideal f(0), which assumes a string with zero stiffness and cannot be heard or measured on real piano wire. That is the whole reason StroboPro measures the actual struck pitch instead of assuming an ideal one. See the full formula and variable list above.

f(n)=n*f(0)*sqrt(1+B⋅n²)

Here, the variable f(0) represents the theoretical fundamental frequency of an ideal string – a string that is perfectly flexible and has absolutely zero stiffness (B=0). However, this zero-stiffness scenario does not exist in real piano wire, meaning f(0) is a mathematical baseline, not a frequency you can actually hear or measure.

StroboPro’s Calculation (Real-World)

Because real piano strings are made of stiff steel wire, their actual, measurable fundamental frequency (the 1st partial, f(1)) is naturally sharper than the theoretical ideal f(0). This relationship is defined physically as f(1)=f(0)*sqrt(1+B).

Because an electronic tuning device like StroboPro measures the actual frequency of the struck string f(1), it cannot accurately use the ideal f(0)​ formula without adjusting for the string’s baseline stiffness.

To compute each partial, StroboPro first derives B from a linear regression of (f(n)/n)² against n² across the detected partials (B comes from the slope-to-intercept ratio), then plugs B and the measured f(1) directly into f(n)=n*f(1)*sqrt((1+B*n²)/(1+B)).

By using this adjusted formula, StroboPro accurately anchors its entire stretch curve to the real, acoustic pitch of the struck string f(1)​ rather than an impossible theoretical ideal f(0).​

You will need to sample at least 3 notes, and the measurement is not instantaneous. StroboPro uses a longer analysis window than its real-time strobe display to capture the partials precisely, especially in the bass where partials are closely spaced and decay slowly. This is the tradeoff: you sacrifice real-time feedback during measurement to get accurate B values that feed the stretch curve.

B is the inharmonicity coefficient: a single number that characterizes how much a piano’s strings deviate from perfect harmonics.
What it measures:

  • B = 0.0: Perfectly harmonic (theoretical ideal, no real piano)
  • B = 0.0004: Typical grand piano midrange
  • B = 0.0015: Small upright bass (high inharmonicity)
  • B = 0.0001: Grand piano treble (low inharmonicity)
    Why it happens: Real piano strings aren’t perfectly flexible. Stiffness causes higher partials to sharpen progressively more than the simple harmonic series (where partial n = n × fundamental).
    The physics equation is shown above (see the formula in the Measure step).
    Why it matters for tuning:
  • Pianos must be “stretched”: octaves tuned wider than perfect 2:1 ratios
  • Bass notes need more stretch than treble notes
  • The B coefficient varies across the keyboard (higher at extremes, lower in middle)
  • Piano Tuning Assistant measures B at sample notes, interpolates across all keys, then generates the stretch curve

R² (R-squared) is the coefficient of determination: a confidence score indicating how well the detected harmonic partials fit the theoretical piano inharmonicity model.
In the Piano Tuning Assistant:

  • Range: 0.0 to 1.0
  • R² = 1.0: Perfect fit – harmonics follow the inharmonicity model exactly
  • R² close to 1.0: Good fit – reliable B coefficient measurement
  • R² close to 0.0: Poor fit – harmonics are noisy or don’t follow piano patterns
    What it measures: The quality of the linear regression fit when calculating the B coefficient from detected partials using the inharmonicity equation shown above.
    Why it matters: Low R² signals an unreliable B value; PTA shows it to you so you can re-sample or judge that note yourself (there is no automatic discard).

Step 4: Review

After measurement, StroboPro displays the calculated stretch curve, a visual representation of how many cents each note should deviate from theoretical equal temperament. You can see the characteristic Railsback S-shape, but now it is your piano’s curve, not a generic template. You can verify that the curve looks reasonable for your piano type and adjust if needed.

Step 5: Apply

With the custom stretch curve loaded, you tune each note using StroboPro’s strobe display. The display shows you the target frequency for each note, already adjusted by the stretch curve. You tune to zero on the strobe, and the note is correctly stretched for your piano. The strobe display’s 0.1-cent resolution gives you the precision needed to hit the curve accurately.

Your new tuning will be applied, so just press [OK]:

The Stretch Curve Explained

When you finish measuring and review the stretch curve, here is what you are looking at:

Bass section (A0 to roughly E3): the curve dips below zero, so notes are tuned flat. This compensates for the fact that the high partials of these low strings are very sharp, and the human ear perceives the fundamental as flat relative to those sharp partials. On a spinet, this dip can be 10 to 15 cents. On a concert grand, maybe 3 to 5 cents.

Mid section (roughly F3 to F5): the curve passes through or near zero. These strings have moderate inharmonicity and the stretch is minimal. This is where the generic equal-temperament frequencies are actually close to correct.

Treble section (roughly F#5 to C8): the curve rises progressively sharp, so notes are tuned increasingly above their theoretical frequencies. This is the cumulative effect of matching each octave to the sharp partials of the note below. By C8, the stretch can exceed 20 cents on a spinet, or 8 to 10 cents on a concert grand.

The shape of your curve tells a story about your piano. A steep treble rise indicates short, stiff treble strings, common in small uprights. A gentle slope indicates long, well-scaled strings, the hallmark of a quality grand. Technicians learn to read these curves the way a doctor reads an X-ray.

PTA vs Professional Piano Tuning Software

Let us be direct: StroboPro’s Piano Tuning Assistant is not designed to replace the tools that full-time concert technicians use every day. Tools like Reyburn CyberTuner, Verituner, and Pianoscope have decades of development behind them, with features like overpull calculation (predicting how much a string will settle after tightening), pitch raise mode, and extensive historical tuning records.

Where StroboPro PTA fits is as an accessible entry point for piano inharmonicity measurement and stretch tuning, and as a capable tool for technicians-in-training, hobbyists, and anyone who wants to understand their piano better.

What StroboPro PTA uniquely offers: the combination of real inharmonicity measurement with a true strobe display. Professional ETDs use needle or waveform displays. StroboPro uses a real rotating-disc strobe pattern at 0.1-cent resolution. For technicians accustomed to hardware strobe tuners (Peterson, Conn StroboTuner), this is a familiar and trusted display paradigm across mobile and web.

What professionals get from dedicated tools: overpull calculation is the big one. When doing a pitch raise on a piano that has drifted significantly, the first strings you tune will shift as neighboring strings are tightened. CyberTuner and TuneLab predict and compensate for this automatically. StroboPro PTA does not, which means it is best suited for pianos that are reasonably close to pitch, or for technicians who understand how to manage overpull manually.

As Tony Z, a professional piano tuner, put it: “I am pro piano tuner and had many tuner softwares. This is so far the most clean and neat interface I have ever seen. Some software cost almost one thousand dollars but ugly old interface.”

That interface clarity matters. Piano tuning is cognitively demanding, because you manage physical effort, listen critically, and read a display at the same time. A clean, distraction-free display reduces cognitive load and lets you focus on the sound.

Getting Started with Piano Tuning

If you are new to piano tuning and want to use StroboPro’s Piano Tuning Assistant, here are practical tips:

1. Start with a piano that is reasonably close to pitch. The PTA works best when the piano is within 10 to 20 cents of where it should be. If the piano has drifted a quarter-tone or more, you will need to do a rough pitch raise first (tune by ear or with a basic tuner), then measure and apply the stretch curve.

2. Measure in a quiet environment. StroboPro’s long analysis window is sensitive to background noise. HVAC systems, traffic, and other instruments in the room will contaminate the partial readings. Close the lid, shut the windows, and let the room be silent.

3. Play each note cleanly and let it ring. A firm, clean strike produces the clearest partials. Do not damp the string prematurely; let the note sustain through the entire measurement window. Bass notes especially need time for their partials to stabilize.

4. Trust the curve, but use your ears. The stretch curve is a guide, not a mandate. After tuning to the curve, play octaves, 12ths, and double octaves across the keyboard and listen for beating. If something sounds wrong, it probably is, even if the strobe says you are spot on. The curve is mathematically correct for your measured B values, but piano tuning is ultimately about what sounds right in the room.

5. Learn about octave types. The 4:2 octave is the most common starting point, but different pianos and different musical contexts benefit from different octave styles. For example, if you are tuning a bright spinet for a beginner, 6:3 might give a more pleasing result. If you are tuning a concert grand for a classical pianist, Pure 12ths might be preferred. Experiment and listen.

6. Understand the limits. StroboPro PTA does not replace ear training. The Piano Technicians Guild (PTG) requires associates to pass aural tuning exams, not ETD exams, for good reason. The tool helps you get accurate results faster, but understanding why the curve looks the way it does, and being able to verify it by ear, is what makes you a tuner rather than a meter reader.

For a deeper dive into the underlying science, see our article on inharmonicity in stringed instruments (coming soon) and our guide to cent accuracy in tuners.

FAQ

Can I use StroboPro’s Piano Tuning Assistant as my only piano tuning tool?

For hobbyists tuning their own piano, yes (eventually!) – but it is currently in Beta for a reason, the PTA measures real inharmonicity and generates an accurate stretch curve, which covers the core capability of professional piano tuning software. For professional technicians, StroboPro PTA lacks overpull calculation, historical tuning records, and pitch raise mode that tools like CyberTuner and TuneLab provide. It is best used as a primary tool by hobbyists and students, or as a supplementary tool by professionals who want a strobe display for fine-tuning.

What phones and devices does StroboPro PTA work on?

StroboPro, available on iOS and Android at strobopro.se, works on iPhone, iPad, Android phones, Android tablets, laptops, and desktops. A free web tuner runs at strobopro.se, with fully-featured mobile apps on iOS and Android.

How accurate is the inharmonicity measurement compared to professional tools?

StroboPro PTA measures the B coefficient for each string by analyzing multiple partials using the inharmonicity relationship described above. The accuracy depends on the measurement environment, so background noise and mic quality matter. With a quiet room and a decent microphone (including the built-in mic on modern phones), the B values are accurate enough to generate a stretch curve that produces musically correct results. Professional tools like Verituner measure more partials simultaneously in real time, which provides additional data for edge cases, but the core measurement principle is the same.

What is the difference between 4:2 and 6:3 octave tuning?

A 4:2 octave is tuned so that the 4th partial of the lower note matches the 2nd partial of the upper note. A 6:3 octave matches the 6th partial of the lower to the 3rd partial of the upper. Because higher partials are sharper (due to inharmonicity), a 6:3 octave produces a wider stretch: the upper note ends up slightly sharper than with a 4:2 octave. 4:2 is the most common choice for general tuning. 6:3 is preferred when a brighter, more “open” sound is desired.

Why does my stretch curve look different from the Railsback curve?

The Railsback curve is an average of many well-tuned pianos. Your piano’s curve is based on measurements of your specific strings. For example, if you have a small upright, your curve will show more deviation than Railsback, because your strings have higher inharmonicity than the average. If you have a large grand, your curve may show less deviation. That your curve differs from Railsback is not a problem; it is the whole point. A curve matched to your piano will always sound better than a generic average.

Does StroboPro PTA work on grand pianos and uprights equally well?

Yes. The PTA supports Spinet, Console, Upright, Baby Grand, Studio Grand, and Concert Grand piano types. Each type has different expected B ranges, and the measurement algorithm adapts accordingly. The biggest practical difference is that small pianos (spinets, consoles) tend to produce more dramatic stretch curves because their shorter, thicker strings have higher inharmonicity. The measurement process is the same regardless of piano type.

References

The inharmonicity math in this article is standard acoustic theory, not invented here:

  • Fletcher, H., Blackham, E.D. & Stratton, R. (1962). “Quality of Piano Tones.” Journal of the Acoustical Society of America, 34(6) – the stiff-string partial formula f(n) = n*f(0)*sqrt(1+B*n^2) that the stretch curve is built on.
  • Giordano, N. (2010). Physics of the Piano – published B-coefficient measurements across piano types (grand, upright, etc.).
  • O.L. Railsback (1930s-40s) – the empirical average of how well-tuned pianos deviate from equal temperament, a.k.a. the Railsback curve (overview: Wikipedia – Piano tuning: stretch).
  • Wikipedia – Inharmonicity – overview of the stiff-string partial model.

StroboPro, available on iOS and Android at strobopro.se, is free, works offline, and delivers 0.1-cent strobe accuracy on any device. The Piano Tuning Assistant is released as a Beta feature – please try it!

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *