Follow-ups to #829 (CodeRabbit's review nit + the consumer adoption the PR
body promised):
- freqs_to_midis: reject non-finite frequencies (NaN/Infinity) — a provider
handing one through would otherwise raise inside int(round(...)) and 500
GET /api/tunings. Tests cover nan/inf/-inf alongside the existing garbage
cases.
- v3 instrument badge: TUNING_NOTE now prefers the exact integer midis the
server serves (tuningMidis) over reconstructing the note from the lowest
string's frequency via log2 against a hardcoded 440 — which can land a
semitone off at non-440 reference pitches. Frequency path kept as the
fallback for older cached responses.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MS2YFb6UUSwJVV6CmEa25i
Signed-off-by: ChrisBeWithYou <christian.a.cowan@gmail.com>