Vocal Range State
data class VocalRangeState(val phase: VocalRangePhase = VocalRangePhase.IDLE, val countdownSeconds: Int = 0, val phaseMessage: String = "Ready to detect your vocal range", val currentPitch: VocalPitch? = null, val currentAmplitude: Float = 0.0f, val stabilityProgress: Float = 0.0f, val bestLowNote: DetectedNote? = null, val bestHighNote: DetectedNote? = null, val lowNote: DetectedNote? = null, val highNote: DetectedNote? = null, val result: VocalRangeResult? = null, val error: String? = null)
Observable state emitted during vocal range detection.
This state object contains everything needed to build the UI:
Current phase and progress
Real-time pitch for display
Stability progress toward detection
Best detected notes so far (updates as user finds lower/higher notes)
Final locked notes and results
Constructors
Link copied to clipboard
constructor(phase: VocalRangePhase = VocalRangePhase.IDLE, countdownSeconds: Int = 0, phaseMessage: String = "Ready to detect your vocal range", currentPitch: VocalPitch? = null, currentAmplitude: Float = 0.0f, stabilityProgress: Float = 0.0f, bestLowNote: DetectedNote? = null, bestHighNote: DetectedNote? = null, lowNote: DetectedNote? = null, highNote: DetectedNote? = null, result: VocalRangeResult? = null, error: String? = null)
Properties
Link copied to clipboard
Best high note detected so far (highest stable note found) - updates as user explores
Link copied to clipboard
Best low note detected so far (lowest stable note found) - updates as user explores
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Locked high note (confirmed by user)
Link copied to clipboard
Locked low note (confirmed by user)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard