SessionConfig

data class SessionConfig(val autoAdvance: Boolean = true, val scoreThreshold: Float = 0.0f, val maxAttempts: Int = 0, val resultAggregation: ResultAggregation = ResultAggregation.LATEST, val hopSize: Int = 160, val autoPhaseTransition: Boolean = true, val autoSegmentDetection: Boolean = true)

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

Link copied to clipboard
constructor(autoAdvance: Boolean = true, scoreThreshold: Float = 0.0f, maxAttempts: Int = 0, resultAggregation: ResultAggregation = ResultAggregation.LATEST, hopSize: Int = 160, autoPhaseTransition: Boolean = true, autoSegmentDetection: Boolean = true)

Types

Link copied to clipboard
class Builder

Builder for SessionConfig.

Link copied to clipboard
object Companion

Properties

Link copied to clipboard

Automatically advance to next segment when current ends (default true)

Link copied to clipboard

Automatically transition LISTENING → SINGING in singafter mode (default true)

Link copied to clipboard

Automatically detect segment end from player time (default true)

Link copied to clipboard

Hop size between frames in samples (default 160 = 10ms at 16kHz)

Link copied to clipboard

Max attempts before forced advance (0 = unlimited)

Link copied to clipboard

How to aggregate multiple attempts into final score (default LATEST)

Link copied to clipboard

Min score to auto-advance (0 = disabled, advances regardless of score)