Class VoiceSeparatorOptions
Options for voice separation algorithm.
public sealed class VoiceSeparatorOptions
- Inheritance
-
VoiceSeparatorOptions
- Inherited Members
Properties
AllowCrossings
Allow voice crossings. When true, the default, the notes of an onset go to whichever voices continue them most smoothly, so a line may enter or move above a voice listed before it. When false, the notes of an onset are kept in the voices' order, and an assignment that would put a note above the currently sounding pitch of a higher voice (or below a lower one's) pays a large soft penalty: crossings are avoided whenever an alternative assignment exists, but notes are never dropped.
public bool AllowCrossings { get; init; }
Property Value
Remarks
The order of the notes within an onset used to be kept whatever this said, so with crossings allowed a line entering above an active voice still displaced it.
LargeJumpPenalty
Penalty for jumps larger than MaxMelodicInterval.
public int LargeJumpPenalty { get; init; }
Property Value
MaxMelodicInterval
Maximum melodic interval before penalty (semitones). A voice continues through any interval up to this one rather than a new voice opening; beyond it the leap is penalised and, while a voice is free, the note opens a new one.
public int MaxMelodicInterval { get; init; }
Property Value
PreferStepwise
Prefer stepwise motion: melodic motion beyond a whole step (2 semitones) within a voice incurs a superlinear extra cost, so of two readings of the same notes the one with the smaller leaps wins — two voices leaping a sixth in parallel rather than one stepping while the other leaps over it.
public bool PreferStepwise { get; init; }