Session Config
Configuration for a CalibraLiveEval session.
Note: Pitch detection is configured separately via PitchDetectorConfig and the detector is injected into CalibraLiveEval.create.
For student key transposition, use com.musicmuni.voxatrace.calibra.CalibraLiveEval.setStudentKeyHz at runtime - this allows key adjustment mid-lesson.
Usage
// Tier 1: Use presets
val session = CalibraLiveEval.create(reference, SessionConfig.PRACTICE, detector)
// Tier 2: Use Builder
val config = SessionConfig.Builder()
.preset(SessionConfig.PRACTICE)
.scoreThreshold(0.6f)
.build()
// Tier 3: Use .copy()
val config = SessionConfig.PRACTICE.copy(maxAttempts = 5)Constructors
Types
Properties
Automatically advance to next segment when current ends (default true)
Automatically transition LISTENING → SINGING in singafter mode (default true)
Automatically detect segment end from player time (default true)
Max attempts before forced advance (0 = unlimited)
Play authored reference audio that sits between the playhead and a starting segment (a lesson intro at session start, a rest / count-in / interlude between segments) instead of seeking over it. Capture and scoring of the segment begin when playback reaches its start. Applies to auto-advance and to startPracticingSegment; explicit navigation (seekToSegment, retry) still jumps straight to the segment. Default false (all such audio is skipped, the historical behavior).
How to aggregate multiple attempts into final score (default LATEST)
Curve applied (exactly once, at the scoring seam) to every raw score the session produces — segment results, the session score, and the scoreThreshold comparison. Default ScoreCalibration.IDENTITY (raw scores pass through, the historical behavior). See ScoreCalibration for presets and the custom-curve contract.
Min score to auto-advance (0 = disabled, advances regardless of score). Compared against the CALIBRATED score (after scoreCalibration), the same number surfaced in results — so the threshold lives in the units the user sees.