[1] The first location in a Max list is location 0.

[2] Intervals are counted in half steps. A perfect fifth is an interval of 7.

[3] Many of the Max objects discussed, including all beginning with L, are from my expanded set of list processing objects. These are indicated in bold type the first time they are mentioned. They are available via ftp. Download Lobjects.

[4] Any operation between sets is done member by member, so the pitch C survives multiplication between the C and Cmaj sets, but the pich C sharp would not. In set parlance, we are saying the the intersection of {Csharp} and {Cmaj} is empty.

[5] These fractions are basically made up to fit the situation. It is the relative strengths of the values that is important.

[6] Any logic that is not fuzzy is crisp.

[7] Lbuf simply stores lists. It can be initialized with a list, which makes it easy to see what is happening.

[8] In Fuzzy Logic textbooks, consequent sets are represented by triangles too. In music the consequent sets are usually discontinous, but the fuzzy techniques work just the same.

[9] Note for those to whom music theory is a mystery:"6" is a common shorthand for first inversion chord, and "6-4" indicates second inversion. A root position C chord has the pitches in the order C-E-G (from the bottom up) or C-G-E. First inversion is E-G-C or E-C-G, and second is G-C-E, or G-E-C. The second version of each is called open position, and a complete inverter would cover those too. This one dosen't.

[10] It checks members of the input list against the same member of stored list. It then reports (number of matches)/(length of input).

[11] Remember, pitch class 7 is the fifth scale degree.

[12] I realize the name is a little misleading, but the Lshiftr object shifts lists to the right. In the shift operation, all values are moved to the right, and values falling off the right end are discarded. The places freed up at the left end are filled with the leftmost value of the starting set.

[13] It is not really necessary to initialize the Lshftr objects with the C pitch set, they default that way. It is included here to make the operation clearer.

[14] These sets happen to be crisp, because below is taken in its literal sense, but if we were looking for the fuzzy concepts "just below C or just below G" with the sets described earlier, the Lmax method would also be appropriate.

[15] Thus Lbuf is really a Bucket for lists.

[16] The behavior of Lhigh could use some explaining. If applied to a list longer than its argument, it reduces all but the highest (arg) values to zero. If applied to a short list, it converts all non zero members to 1.

[17] You are of course free to enter your own interpretation here, or to change values for different situations.

[18] If you crescendo from p to f you do not get a linear change, but it is an interesting and I dare say typical one. You may of course fiddle with this curve to suit your own needs.

[19] We have to shorten the list because the maximum size of a list in Lfind is 64. Besides, its much easier to read this way.

[20] This is known as singleton notation.

[21] These are not the same numbers as in the previous example. Velocity from a given instrument will have a specific membership in each of the 8 sets for dynamic marks. Each dynamic has a membership in the set loudness. Loudness may be transformed to velocity for a particular instrument, but loudness should be determined by more factors than the dynamic marking.