The Formula
Tension is computed with the standard string-tension formula used throughout lutherie and
string manufacturing:
T = UW × (2 × L × F)² / 386.4
Where T is tension in pounds, UW is the string's unit weight
in pounds per linear inch, L is scale length in inches, F is
the target pitch in Hz, and 386.4 is standard gravitational acceleration
(in/s²), which converts the string's unit weight (a force) into the mass term the
underlying physics needs.
This isn't an arbitrary industry formula. It falls directly out of the standard physics of a
vibrating string. The fundamental frequency of a string under tension is
f = 1/(2L) × √(T/μ), where
μ is mass per unit length (the basis of Mersenne's laws).
Solving that for T, with μ = UW/g, reproduces the
formula above exactly. We confirmed it two ways before writing any code: against D'Addario's
own published technical documentation, and independently from this first-principles
derivation. (A small number of references round the gravitational constant to 386.09 instead
of 386.4; the difference is under 0.1% and immaterial at string-gauge precision.)
Unit Weight: Where the Data Comes From
Unit weight is the part most likely to be wrong if guessed, and it depends on both gauge and
construction: it isn't a simple function of diameter alone for wound strings. We used three
different approaches depending on what's actually knowable, and we're explicit about which is
which:
Plain steel, nylon, and fluorocarbon strings: exact physics.
A plain string is a solid cylinder, so its unit weight is just
density × π/4 × diameter². We use published
material densities (music-wire steel ≈ 0.2836 lb/in³, confirmed against two
independent steel-density references; nylon ≈ 1.15 g/cm³ and fluorocarbon (PVDF)
≈ 1.78 g/cm³, both standard materials-reference values). This is exactly how
manufacturers derive plain-string unit weight themselves, and it's fully reproducible.
Phosphor bronze wound strings: a real published table.
For phosphor bronze, we have an actual manufacturer data table: 28 gauges (0.020"–0.070")
republished by a third-party lutherie technical reference, which states its figures were
converted from D'Addario's own catalog unit-weight specifications. We use this table directly
with linear interpolation between published gauges, not a model.
Nickel wound, pure nickel wound, 80/20 bronze wound, and stainless steel wound:
a calibrated physical model. We could not retrieve a direct manufacturer table for
these constructions (the manufacturer PDF we found is no longer reachable, and mirrors were
blocked). Instead we model a wound string as a steel core plus a helically-wrapped layer,
where the wrap's effective density includes a geometric packing factor
(π/4, the standard estimate for a single contact-wound layer of round wire). The
core-to-total proportion at each gauge isn't assumed. It's back-calculated from a real,
published D'Addario per-string tension chart (the EXL110 10-46 nickel wound electric set),
which is solvable directly because nickel-wound wrap wire is nickel-plated steel
(the plating is microns thick, negligible mass), making its density essentially equal to the
core's. That curve is then reused for the other three wrap materials, scaled by each
material's own bulk density. This is a disclosed estimate, not tabulated data. See the
validation numbers below for how well it holds up, including well outside its calibration
range (bass gauges).
Validation
Before writing any UI, we validated the calculation module against real, published D'Addario
per-string tension charts, run as an automated test suite that re-runs on every change to the
formula, the unit-weight data, or the calculation logic:
- EXL110, 10-46 Nickel Wound electric set, standard tuning, 25.5" scale:
every string within 2% of the published chart.
- EJ16, 12-53 Phosphor Bronze acoustic set, standard tuning, 25.5" scale:
every string within 1%.
- EXL170, 45-65-80-100 Nickel Wound bass set, standard tuning, 34" scale:
within 8%, extrapolated well beyond the model's 0.026"–0.046" calibration range.
The plain-string predictions above have zero free parameters (pure physics, no calibration),
and still landed within 1% of D'Addario's published numbers, which also cross-confirms the
25.5"/34" scale-length assumptions baked into their generic tension charts.
The “Unbalanced” Flag
Each string's tension is compared against the median tension of the whole set, and
flagged if it deviates by more than 35%. We deliberately don't compare a string to its
physical neighbors: re-entrant tunings (a standard ukulele's G-C-E-A, where the G string is
tuned above the C string) aren't pitch-monotonic across string order, so a
neighbor-smoothness check would flag every string in a perfectly normal set. The median-based
check is order-independent and only flags genuine outliers, like a gauge that doesn't suit its
tuning.