A minimal, elegant instrument tuner for macOS. Real-time pitch detection with a high-resolution arc meter, instant Hz readout, and a clean tone generator.
- Real-time pitch detection — YIN algorithm with FFT acceleration and parabolic interpolation for sub-cent accuracy
- High-resolution arc meter — 220° sweep with tick marks every 1 cent, major marks every 10 cents
- Dual frequency display — target note Hz (e.g. A4 = 440.00 Hz) and live detected Hz simultaneously
- Cent deviation readout — color-coded: green ±3¢ (in tune), amber ±15¢, red beyond
- IN TUNE indicator — glowing dot and badge that lights up when within ±3 cents
- Tone generator — play any note C2–B6 by name (with Hz shown) or enter a custom Hz value
- Minimal dark UI — no title bar, draggable, fixed 420×620 window
- macOS 13 Ventura or later
- Xcode 15+ (or Swift 5.9 toolchain)
# Clone
git clone https://github.com/overbeck/Overtune.git
cd Overtune
# Build release .app, sign ad-hoc, and launch
make run
# Or just build
make build
# → Overtune.app in the project rootOn first launch, macOS will ask for microphone permission. Grant it and the tuner starts immediately.
| File | Role |
|---|---|
Audio/PitchDetector.swift |
YIN algorithm with FFT-accelerated autocorrelation |
Audio/ToneGenerator.swift |
Real-time sine-wave synthesis via AVAudioSourceNode |
Audio/AudioEngine.swift |
ObservableObject orchestrating mic input and tone output |
Models/NoteInfo.swift |
Frequency ↔ note conversion, cent calculation |
Views/CentMeterView.swift |
SwiftUI Canvas arc meter with animated needle |
Views/TunerView.swift |
Main tuner layout |
Views/ToneGeneratorView.swift |
Note grid + custom Hz generator |
| Note | Hz |
|---|---|
| C4 | 261.63 |
| D4 | 293.66 |
| E4 | 329.63 |
| F4 | 349.23 |
| G4 | 392.00 |
| A4 | 440.00 |
| B4 | 493.88 |