fromNotes

fun fromNotes(freqsHz: List<Float>, startsMs: List<Int>, endsMs: List<Int>): ExercisePattern

Create a pattern whose notes sit at explicit windows on the take's playback timeline — the shape real lessons have (a lead-in before the first note, gaps/rests between notes). The evaluator scores each note only against the student audio inside its own window; audio in the gaps is not evaluated.

Frequencies are taken as-is: exercise targets are the recorded artist's (or synthesizer's) actual pitches, which may sit off the equal-tempered grid by design — do not snap them to MIDI integers.

Parameters

freqsHz

Note frequencies in Hz (true targets, unsnapped)

startsMs

Note start times in ms on the playback timeline

endsMs

Note end times in ms; each must exceed its start