User Shruti Derivation
Result of com.musicmuni.voxatrace.common.MusicTheory.deriveUserShruti.
Computed from the user's natural speaking pitch (NSP) and most-recent vocal range. The policy: when the measured vocal-range span is wide enough for traditional Sa placement (≥ rangeThresholdSemitones, default 18), the derivation uses the continuous formula from Musicmuni research synthesis (§B7) — Sa = max(rangeLow + 7, nspMidi − 2) clipped to rangeHigh − 17, rangeHigh − 12. Below threshold (or when no vocal range is available), the formula degrades and the derivation falls back to NSP.