From 4b5a53662ba3c65fba0a9fdbd56c5ff20f953203 Mon Sep 17 00:00:00 2001 From: Sterling Archer Date: Sat, 13 Jun 2026 20:36:50 -0700 Subject: [PATCH] Add visual guitar string diagram to tuner --- index.html | 73 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 25 deletions(-) diff --git a/index.html b/index.html index b871010..e587f17 100644 --- a/index.html +++ b/index.html @@ -1038,36 +1038,59 @@ function GuitarTuner({ onBack, onMenu }) { )} - {/* Closest string */} - {closestString && ( -
-
-
Closest string
-
- String {closestString.string} - {closestString.name} -
-
Target: {closestString.freq} Hz
-
-
{inTune ? "✓" : cents < 0 ? "↑" : "↓"}
+ {/* Guitar string visual */} +
+
+ {closestString ? ( + Pluck the + {closestString.name} string + {inTune ? "- In tune!" : (cents<0?"- Tune up (too flat)":"- Tune down (too sharp)")} + ) : "Pluck any string to tune"}
- )} - - {/* String reference */} -
-
Standard Tuning
-
- {OPEN_STRINGS.map(s=>{ + + {OPEN_STRINGS.map((s,i)=>{ const isActive = closestString && closestString.note===s.note; + const x1 = 20, x2 = 320; + const y = 18 + i*19; + const thickness = i===0?2.5:i===1?2.2:i===2?1.8:i===3?1.4:i===4?1.1:0.9; + const stringCol = isActive?(inTune?C.sage:C.amber):"#5A5A6A"; + const glowOpacity = isActive ? 1 : 0; return ( -
-
{s.name}
-
{s.note}
-
+ + {isActive && ( + + )} + + + {s.name==="Low E"?"E":s.name==="High e"?"e":s.name} + + + {s.note} + + {isActive && ( + <> + + + {inTune?"✓":cents<0?"↑":"↓"} + + + )} + ); })} -
+ + +
{/* Mic button */}