VocalRangeState

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
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