sets

subset generator

Created by Panaiotis
© 2001 by Panaiotis. All rights reserved.

General

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.

Input

  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.
 

The following messages are sent with one argument, 0 or 1, that turns the option off or on, respectively.

  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).

Arguments

(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.

Output

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.

Examples

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

See also

perms, sets.help, publication Handbook of set and permutation classes by Panaiotis.

Send requests to panaiotis@aol.com or panaioti@unm.edu