Piano Suite

Professional piano tuning, inharmonicity analysis, and string scale design β€” all in one place.

🎡
Piano Tuner
Live pitch detection, inharmonicity profiling, stretch tuning, and tuning fork generator.
YIN pitch Β· ETD Β· Railsback
πŸ“Š
Partial Analyzer
FFT-based partial structure analysis with PFD B-coefficient solver and SNR diagnostics.
65536-pt FFT Β· TF Reassignment
βš™οΈ
Scale Designer
String scaling, tension modelling, Tholey analysis, RΓΆslau gauge snapping, and inharmonicity-guided layout.
Tholey Β· Engelbrecht Β· MΓ€gi Β· Stulov
Estonia Parlour Β· RΓΆslau Blue Label wire standard
Inharmonicity Measurement

Record notes to build a full inharmonicity profile. The app auto-advances through selected notes using onset detection.

Recording mode
440.0 Hz
Controls
Select a mode and press Record to begin.
re-record to apply
0 notes measured
Note selection β€” click to jump
FFT spectrum β€” selected note
Select a note and record to see spectrum.
B coefficient β€” log scale
f₁ deviation from ET (cents)
Inharmonicity Analysis Dashboard
B coefficient β€” all samples (log)
ETD stretch β€” P2 cents above ET per note
f₁ cent deviation from equal temperament
Max partial deviation from inharmonic model (cents)
Detected partial count per note
B-fit RMS residual (Β’) β€” lower = better
Regional summary
RegionAvg BNotesQuality
Bass A0–C3β€”0no data
Tenor C3–C5β€”0no data
Treble C5–C8β€”0no data
Tuning

Live pitch detection with stretch tuning. Pitch detection is always active on this tab.

Method
440.0 Hz
Refines EPT curve via Monte Carlo
Live β€” current note
β€”
β€” Hz
β€” Β’
β€”
Pitch detection active.
listening
Tuning schedule β€” all 88 notes
#NoteET (Hz)Target (Hz)Offset Β’
Tuning Fork

Reference tone generator with waveform selection and fine-tuning.

A4
440.00Hz
Octave 4 Β· key 49
Waveform
Controls
50%
0 Β’
Waveform preview
Partial Analyzer

Strike a key to record and analyze its harmonic series. The PARSHL+TFR engine estimates the inharmonicity coefficient B using time-frequency reassignment.

Key selection
Display mode
Import Scale Designer reference
Select a key and press Record. Strike the key after the prompt.
Partial spectrum with amplitude markers
β€”
Partial amplitude bars
Inharmonicity summary
β€”
B coefficient
β€”
Fundamental f₁
β€”
Partials found
Run a recording to see PFD solver output.
Scale comparison
No scale-designer reference imported.
Import Main scale, B-mode, or Smooth-Οƒ data to compare theoretical B and partial placements against the recorded note.
Partial table β€” inharmonic series
#Measured (Hz)Ξ” model (Β’)Ξ” scale (Β’)AmplitudeSNR
Piano Setup

Define speaking lengths, string counts, and striking point ratios β€” or import an existing scale as CSV/JSON.

Instrument profile
Import scale data
Drop CSV or JSON
or click to browse
Fields: key, L_mm, l_mm, N
String layout β€” choir counts & speaking lengths
Load demo data or import a file, then edit individual cells.
KeyNoteFreq HzL (mm)l (mm)L/lN strings
Tension Model

Define ideal string tensions using the Engelbrecht-MΓ€gi method: linear regions with continuity conditions at choir-count transitions.

Bass anchor (key 1)
1320 N
1188 N
Transition tensions
840 N
620 N
Transition analysis
Distribution law
Ideal tension distribution
String Scaling

Compute core diameters from ideal tensions, snap to RΓΆslau gauge steps, then solve for winding wire diameters.

Constraints
0.00
0.50
1.150 mm
Wire standard
RΓΆslau Blue Label: core snapped to 0.025 mm steps (≀1.2 mm) or 0.05 mm steps (>1.2 mm). Winding rounded to 0.05 mm.
Core & outer diameter progression
Scale & Analysis β€” Unified View

Editable scale table with inline Tholey analysis. Click any row to select. Edit L / l / N directly in table cells. All Tholey-derived parameters update live after "Apply changes".

# Note Hz L mm l mm L/l N T N Οƒ d₁ dβ‚‚ d₃ Type BΓ—10⁻⁡ RTF Harm% HarmL% Elong Atk Imp
Click row to select Β· Edit L/l/N inline Β· Run scaling first to populate d₁/dβ‚‚/d₃/T/Οƒ Β· Tholey columns (RTF, Harm%, HarmL%, Elong, Atk, Imp) auto-compute
String Editor
β€”
β€” Hz
T β€” Οƒ β€” ΞΌ g/m β€” B Γ—10⁻⁡— Loudness fβ€” Elongationβ€” Atk timeβ€” Impedanceβ€”
β€”
Analysis Charts β€” Tholey Formulas & Physical Parameters
String tension β€” per string (blue), per choir (teal), target (amber dashed)
Relative tensile force (Tholey) β€” balance across scale
Harmonicity % β€” tonal transparency vs reference (Tholey)
Harmonicity of length % β€” geometric inharmonicity ratio
String elongation (mm, log) β€” tuning stability indicator
Attack time (relative) β€” l / (T / loudness factor)
Mechanical impedance (mcΞ©) β€” LN(f / elongation)
Relative stress Οƒ β€” target ≀ 0.50
Inharmonicity B (log scale)
Core diameter d₁ (mm) β€” RΓΆslau gauge steps
Linear mass density Β΅ (g/m)
Speaking length L (mm)
Inharmonicity stretch Β’ β€” ideal harmonic vs inharmonic model (B-derived)
Inharmonicity-guided Scaling

Builds the scale by targeting a smooth B curve across all 88 keys β€” minimising jumps at section breaks β€” then back-solves tensions and wire gauges.

1 Β· Target B curve
2 Β· Run solver
3 Β· Compare
4 Β· B-mode table
B-curve shape & anchors
B = π³Ed₁⁴ / (64TLΒ²). Typical: bass β‰ˆ 1–4Γ—10⁻³, treble β‰ˆ 2–8Γ—10⁻⁡. The solver fits a smooth power-law spine then chooses gauges to track it.
40
30
2.20
1.25Γ—
β€”
Target B spine (log scale)
Section break continuity targets
Smooth-Οƒ Scaling

Based on Quality Strings / Paulello methodology. Targets a user-defined stress-rate curve Οƒ(k) and selects gauges to match β€” producing a homogeneous tonal progression.

Background: Οƒ = T / (Ο€/4Β·d₁²·UTS). For a plain string, Οƒ β‰ˆ (2fL)²·ρ/UTS β€” nearly independent of diameter. A smooth Οƒ curve primarily comes from the tension model. This solver optimises gauge selection for each note to track the target curve as closely as possible within available RΓΆslau gauges.
Target Οƒ curve β€” BΓ©zier (bass β†’ mid β†’ treble)
0.42
0.48
0.55
0.62
1.150 mm
to
to
to
Οƒ achieved (teal) vs target (dashed blue)
Core d₁ β€” Smooth-Οƒ (teal) vs Tension-first (amber)
Smooth-Οƒ scale table
nNotef HzL mmNT NΟƒ actualΟƒ targetΞΌ g/md₁ mmdβ‚‚ mmd₃ mmType