subset generator
Created by Panaiotis
© 2001 by Panaiotis. All rights reserved.
sets generates unordered subsets by manipulating interval class arrays whose universal size is between 1 and 16 members. Among many other things, it is ideal for systematically generating pitch sets using set transformations (rotation, transposition, and retrograde). The output of sets is an index to members of the universal set. The input is an index to the subset. Members of the subset are determined by the Universal size, interval class size and index; and the transformation values: a rotation position, transposition, register (octave) displacement value. Since sets is not restricted to a universe size of 12, it can be used for a wide variety of tasks.
In addition to the index and interval between successive values, sets outputs the entire current set and interval array each time a transformation is made. It also generates a profile of the intervalic content of the interval class.
bang | in leftmost inlet: output most recent member index. | |
int | in leftmost inlet: subset index value. Triggers the output of corresponding universal set member and the interval from previous output. | |
int in1 |
values -1 to -16 are used to indicate the universal set size. Input value is the negative of desired size. e.g. for standard 12 pitch universe, send a -12. Positive numbers set subset's interval class size, which must be between 0 and the current universe size. For a seven note diatonic scale send -12 for universe and 7 for array size. 0 will give the null set, which will have no output. |
|
int in2 | interval class index. Range is 0 to MAXindex where MAXindex is determined by the universe and class size. | |
int in3 | normal/retrograde form of the array. | |
int in4 | mode or rotation. Range is 0 to one less than array size. | |
int in5 | transposition or bass member value. Transposition maps the interval array to a particular set. | |
int in6 | register. This term is taken from the context of pitch octave transposition. It adds a multiple of the universe size to the output. | |
U arg1 | in left inlet. Identical to sending -arg1 through in1. | |
list | spray-type list. Like sending values through the inlets. | |
|
||
RotateSet | affects output when a mode change is made. Send 0 to keep the bass modulo value when the mode changes. The result is a new member set. Send 1 to maintain subset contents when a mode is changed. The result is that members rotate. An internal transposition is made to accomplish this. | |
restrain | determines the range of the output. Send 0 to allow full range (default) and 1 to restrict output within one octave (modulo universeSize). | |
analyze | In analysis mode (analyze 1), sets outputs descriptive information about the set each time a transformation value or set is changed (see output for details). In Performance mode (analyze 0), this information is suppressed to speed up performance. | |
middleC | used primarily when sets is a final stage pitch generator. Normally, 0 input will generate a 0 output when transpose and register is set to 0. middleC will shift everything up one octave (register) so that when the register is set to 4, an input value of 0 will output MIDI pitch 60 (C4). |
(optional)
int | universal set size (as a positive number). Range: 1 to 16. | |
int | class size. Range from 0 to current universal set size. | |
int | array index. Range varies with universe and class size. | |
int | mode. Range varies with universe, class size, and array index. |
From right to left:
member index generated when sets receives an integer in left inlet. Subset member. | |
interval generated when sets receives an integer in left inlet. Interval between previous output and current. |
|
maxNdx one less than the number of interval array for a given universe and class size. Used to set a max limit on class index input. |
|
rotations one less than the number of unique modes or cyclic rotations for the interval array. Used to set a max limit on mode input. |
|
symmetrical 0 if interval array is symmetrical, 1 if asymmetrical. An asymmetrical interval class array will yield 2 unique sets: one by creating a set from the original array, and another by creating a set from the retrograde form of the array. |
|
elemAnal Analysis output: member value of the subset. |
|
intrvlAnal Analysis output: interval between previous member and current member. |
|
analNdx Analysis output: member index position of the subset. |
|
profile Analysis output: list: values of the interval profile analysis. The interval profile gives the number of occurrences of each interval inherent in the current interval array. |
universal set: ¥ ¢ $ Æ @ &
universal set size = 6
members are indexed: ¥=0, ¢=1, $=2, Æ=3, @=4, &=5
A set class size of 3 yields 3 interval arrays:
class size & index |
interval array |
properties |
---|---|---|
3-0 |
< 1 1 :4 > |
symmetrical with 3 rotations (modes) yields 6 subsets |
3-1 |
< 1 2 :3 > |
asymmetrical with 3 rotations yields 12 subsets |
3-2 | < 2 2 :2 > | symmetrical with 1 rotation (position ) yields 3 subsets |
The interval array represents the distance between set index members. Mapping an interval array to the original set using transposition, mode, and direction (original or retrograde form of the array) will create an index to the subset.
using 3-1 with a transposition of 2, mode 2, in original (not retrograde) form:
3-1 <1 2 :3>
mode 2 = < 3 1 :2 >
transpose = 2: {2, 5, 0} = {$, &, ¥}.
{$, &, ¥} is now the referenced subset and it is indexed as $=0, &=1, ¥=2.
Input in leftmost inlet will generate:
input |
output |
|
---|---|---|
restrain on |
restrain off |
|
0 | 2 | 2 |
1 | 5 | 5 |
2 | 0 | 6 |
perms, sets.help, publication Handbook of set and permutation classes by Panaiotis.
Send requests to panaiotis@aol.com or panaioti@unm.edu