Hands-Free Ear Trainer — Development & Learning Plan

Development & Learning Plan · v0.1

Hands‑Free Ear Trainer

For an experienced developer new to Kotlin and Android, on Arch Linux, using Android Studio + Claude Code, testing on a daily-driver phone. The app is the training ground — learning Android development properly is a co-equal goal.

Companion to hands-free-ear-trainer-spec-v0.4.md and hands-free-ear-trainer-architecture-v0.4.mermaid.

Decisions locked in (2026‑07‑05)

  • Pure Kotlin core module now, KMP conversion later (mechanical when the time comes).
  • Android Studio for emulator/debugger/profiler; Gradle + adb CLI for Claude Code sessions.
  • Real-device testing from day one (emulator audio is unrepresentative for pitch work).
  • Kotlin-level AudioRecord for mic input in v1; Oboe/AAudio (C++/NDK) only if latency measurably hurts. TarsosDSP is JVM-only anyway, so it pairs with AudioRecord.

How to use this plan

  • Phases are ordered risk-first: the two things that could sink the project — real-time pitch detection of your voice on your phone, and the half-duplex play→listen loop — are proven in Phases 2–4, before any investment in the data model.
  • Each phase lists increments — small changes you build, run on the phone, and commit. Roughly one commit per checkbox.
  • Each phase has a Learn section. Read just-in-time, not all up front — but do read it.
  • Exit test = how you know the phase is done. Don't move on without it.
  • Working rhythm per increment: skim the Learn link → implement the smallest version → adb install and try it on the phone → commit → ask Claude to explain anything that felt like magic.