Private tuner, built solo
Centerline
A private chromatic tuner for musicians on Android and iPhone that shows which way to tune at a glance and never sends audio anywhere.
- Year
- 2026
- Role
- Solo product owner & engineer
- Status
- Live

At a glance
- Android + iPhoneplatformThe current public releases are available on Android and iPhone.
- 62–800 Hzpitch analysisChromatic pitch analysis follows one note at a time.
- Noneads, accounts, or network callsAudio stays on the phone, and the core task works offline.
Problem
Most tuner apps bury a simple job under ads, sign-ins, and subscriptions. Centerline had to open quickly, stay readable in a dim room, work offline with no ads or account, and follow one note at a time across a 62–800 Hz range.
Result
Centerline is live on Android and iPhone, with private offline chromatic single-note pitch analysis from 62–800 Hz, no ads or accounts, and a one-time Complete purchase.
- Android + iPhone
public releases
The product is available now on Android and iPhone.
- 62–800 Hz
single-note analysis
Chromatic pitch analysis follows one note at a time.
- One-time
upgrade, no subscription
Free covers everyday tuning. Complete is a single purchase.
- Focused
product scope
The app stays centered on fast, legible tuning.
Role
I took the product from the first interaction through its public Android and iPhone releases:
- Product designDefined the tuning flow, visual hierarchy, display modes, and paid boundary around how a guitarist actually uses the app.
- Native Android buildBuilt the Android app in Kotlin and Jetpack Compose, including microphone capture, pitch detection, state handling, and Play Billing.
- Native iPhone buildBuilt the iPhone app in Swift and SwiftUI, with the same tuning behavior and StoreKit purchases.
- Release workPrepared the store listings, privacy material, purchase flow, and production releases.
- Ongoing ownershipMaintain the product, respond to platform changes, and keep the public claims aligned with what the current release does.
Constraints & Decisions
A few decisions kept the tuning flow simple and the pitch feedback clear:
- Keep audio localMicrophone input goes through the pitch detector on the phone. The core task works offline with no ads, account, or internet connection.
- Show direction before detailThe interface makes flat, sharp, and in-tune states legible at a glance, with cents and frequency available as supporting information.
- Make the free mode usefulFree includes Chromatic and all display modes, and a single purchase unlocks the rest. Complete adds alternate and custom six-string tunings, capo, A4 432–446 Hz calibration, and reference tones.
- Build natively on each platformKotlin and Jetpack Compose on Android, Swift and SwiftUI on iPhone, so microphone access, lifecycle, accessibility, and billing follow each platform directly.
Lessons
- The main interaction should need no explanationA utility earns trust when its primary state is obvious before someone reads a label or opens settings.
- Privacy can simplify the architectureKeeping audio on-device removes an entire class of server, account, consent, and reliability concerns.
- A release includes more than the main featureBilling, privacy disclosures, store assets, release checks, and updates are part of maintaining the app.
- Two native apps, one productKeeping the Kotlin and Swift builds in step took shared specs and a device test matrix, not shared code.
More work
Let's talk.
Planning an interactive or cross-platform product? I bring product planning and hands-on engineering together, from the core mechanic through release and ongoing maintenance.


