Exclusion criteria - Dualraum/Chorsatz GitHub Wiki
If at any point during the generation of the result any of the following criteria become violated, the generation of that branch is immediately aborted and the tree trimmed accordingly.
Within a chord
Violation of voice range
The notes must conform to the following ranges:
- Soprano:
c' - g''/c1 - g2 - Alto:
g - c''/g0 - c2 - Soprano:
c - g'/c0 - g1 - Soprano:
G - c/g-1 - c1
see also Note Output Format.
Neighboring voices difference
The difference within a chord of may not exceed
- a seventh between soprano and alto
- a seventh between alto and tenor
- a tenth between tenor and bass
- a 21th, i.e. two octaves and a fifth, between soprano and bass
Within two consecutive chords
Crossings
The progressions of two different voices may not cross, i.e. soprano must always be at least a second above alto and similar for alto and tenor as well as tenor and bass. Optionally, you may specify that the difference of alto and tenor may be only a prime/unison, or completely disable this criterium.
Letting notes lie
If two consecutive chords both contain a certain note, then it must be sung in the same voice both times.
Parallels
If one voice moves by a fifth or eight from one chord to the next, another note may not do the same. You may specify wich distances of parallels must be excluded here, if any.
Bass countermovement
If two consecutive chords share not note, then all three upper voices must move in the opposite direction of the bass voice.
Limiting Jumps
Soprano, alto and tenor may not move more then one sixth from one chord to the next, and the bass voice must not move more than one octave.
Customization
All exclusion criteria can be enabled, disabled or have their values modified in the respective tab of the Options panel.