A native iPadOS app (Swift/SwiftUI, with UIKit-backed views where gesture and render control matter) for dancers learning choreography from video. No backend, no external dependencies.
- On-device tempo detection — import a video from Photos, Files, or a pasted link; the app extracts the audio and detects tempo entirely on-device with a custom vDSP pipeline — spectral-flux onset detection plus autocorrelation — then lays a 1–8 beat-count grid over the timeline once you set the “1”.
- One master clock — every practice tool runs off a single clock owned by the playback engine.
- Scrub wheel — CADisplayLink-rendered with inertia and DJ-scratch audio (a custom AVAudioSourceNode graph so scrubbing backwards is audible).
- Practice controls — a right-edge speed gesture (25–100%, pitch-preserved), a beat-aligned “5, 6, 7, 8” count-off, and markers and A/B loops that persist per video.
- Smoother slow motion — Metal frame interpolation.
- Latency calibration — tap-to-beat calibration stored per Bluetooth audio route, so the beat grid still reads on-beat over wireless headphones.