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.