Description:
Returns a predicate, intended for use with FILTER-CHORDLIST, to test if
the elements of a pitch set are distributed in particular ways across the
N - 1 registers determined by REG-BOUNDS. (Each register runs from its
lower bound to just below its upper bound.)
Each of the REG-DISTRIBS is a list of N - 1 numbers corresponding to the
expected number of pitches in each register, considered from low to high.
For a given chord C, testing proceeds as follows:
If any pitches lie below the lowest (or above the highest) register
specified in REG-BOUNDS, the test returns FALSE immediately.
Otherwise, the registral distribution of pitches in C is compared to
each element of REG-DISTRIBS. The test returns TRUE if a match is
found, FALSE otherwise.
EXAMPLE
REG-BOUNDS: (-12 0 12)
REG-DISTRIBS: ((2 3) ; distrib-a
(0 5) ; distrib-b
(2 0) ; distrib-c
)
Chord (-12 -6 3 5 7) matches distrib-a.
Chord (0 3 5 6 7) matches distrib-b.
Chord (-7 -5) matches distrib-c.
Chord (-8 -7 -6 -5 -4) has distribution (5 0),
which matches none of the expected distributions.
Chord (1 7 12) has a pitch out of range.
|