pub fn join_splits_with(
notes: &NoteList,
run: &ModelRun,
levels: &StemLevels<'_>,
) -> NoteListExpand description
Joins the pieces of a held note that the decoder split.
A note joins a note of the same key that ends within SPLIT_GAP
before it, on an onset activation below SPLIT_ONSET, when its
velocity is no higher than that note’s and levels show no attack of
its own.
A repeated note starts on a strong onset or on an attack in the stem, and stays apart. The decoder can fill the gap before a low repeat and read its onset weak, so the onset alone misses it. A split piece is the weaker rest of a held note; a weaker piece before a stronger note is an early fragment of the attack, and joining it would move the onset.