OffScaleNote

data class OffScaleNote(val label: String, val detectedPeakCents: Float, val detectedPeakHz: Float, val offsetFromDegreeCents: Float, val nearestInScaleLabel: String, val centsFromNearestInScale: Float, val amplitude: Float)

A prominent peak the singer dwelled on that landed on a chromatic degree outside the requested scale: a note sung "by mistake", not a mis-intoned scale note.

Unlike NoteAnalysis there is no target and no grading. An off-scale note has nothing in the requested scale to deviate from, so it carries no deviationPercent / score / tier — it is reported for awareness, not scored, and never affects the overall PitchingScore. Whether such mistakes should ever be penalized is an open product question, deliberately out of scope here.

Only ever populated when an explicit scale was supplied to com.musicmuni.voxatrace.accura.Accura.analyzePitching — see IntonationAnalysisResult.offScaleNotes for how a peak is classified as off-scale.

See also

Constructors

Link copied to clipboard
constructor(label: String, detectedPeakCents: Float, detectedPeakHz: Float, offsetFromDegreeCents: Float, nearestInScaleLabel: String, centsFromNearestInScale: Float, amplitude: Float)

Properties

Link copied to clipboard

Histogram peak amplitude — proxy for note duration / prominence.

Link copied to clipboard

Signed cents from nearestInScaleLabel's target (positive = sharp).

Link copied to clipboard

Detected histogram peak position in cents relative to tonic.

Link copied to clipboard

Detected histogram peak frequency in Hz.

Link copied to clipboard

Chromatic label of the degree this peak snapped to (e.g., "M2", "G2").

Link copied to clipboard

Nearest in-scale note, for "you reached for P" UI framing. A positional heuristic for intent, not a measured fact.

Link copied to clipboard

Signed cents from the chromatic degree label names (positive = sharp). Within the off-scale capture radius by construction; lets a UI place the peak slightly off its gridline.