4.2. Creating, Selecting, and Viewing PathVoices

A PathInstance may contain user-definable collections of maps, or PathVoices. Whenever a Path is created of voiceType "map" or "part" (see Section 4.1) a PathVoice named "auto" is automatically created. This PathVoice attempts to create voice leadings in "straight lines" to adjacent Multisets.

For example, using PIn a new Path will be created with Multisets of equal size. After creating the Path, the command PIv is used to display the new Path's attributes.

Example 4-1. Creating a Path with equal-sized sets

[PI()TI()] :: pin
name this PathInstance: pathVL
enter a pitch set, sieve, or set-class: f#, d, a
   SC 3-11B as (6,2,9)? (y, n, or cancel): y
   add another set? (y, n, or cancel): y
enter a pitch set, sieve, or set-class: 8, 3, 5
   SC 3-7A as (8,3,5)? (y, n, or cancel): y
   add another set? (y, n, or cancel): y
enter a pitch set, sieve, or set-class: a, f, c#
   SC 3-12 as (9,5,1)? (y, n, or cancel): y
add another set? (y, n, or cancel): n
PI pathVL added to PathInstances.

[PI(pathVL)TI()] :: piv
command.py: command in debug mode.
PI: pathVL, voiceType: part
psPath              6,2,9      8,3,5       9,5,1      
                    F#4,D4,A4  G#4,D#4,F4  A4,F4,C#4  
pcsPath             6,2,9      8,3,5       9,5,1      
scPath              3-11B      3-7A        3-12       
durFraction         1(33%)     1(33%)      1(33%)     
TI References: none.
PathVoices:
 + auto             3:3-1,3:3-1

The last label of the PIv display shows available PathVoices. The entry "3:3-1, 3:3-1" designates the two maps in PathVoice "auto" using a MapClass notation. MapClasses are notated with three-integer labels. The first value is the size of the origin, the second value is the size of the destination, and the third value is the MapClass index number, a unique value provided for all maps between a given destination and source size.

To view the active PathVoice of the active Path in greater detail, enter PVv. If the user has configured a graphic output method (see Example 1-11) and has selected a scratch directory (see Example 1-9), a graphical depiction of the PathVoice will be provided.

Example 4-2. Viewing the active PathVoice group

[PI(pathVL)TI()] :: pvv
PI: pathVL, PathVoice: auto
 6 a      8 a      9
 2 b      3 b      5
 9 c      5 c      1
....................
   S3       S2    
   U5       U4    
   B2       B1    
   of6      of6   

The heading provides the PathVoice's name as well as the name of the PathInstance to which it belongs: here "auto" and "pathVL," respectively. PVv displays two rows above and below the dotted line. The top row displays each of the three sets in a vertical orientation. This vertical orientation is determined by the order of pitches in a set, where left-to-right is translated to top-to-bottom.

The lower case letters that follow each pitch of the first and the second vertical set designate the voice leading mapping. Each lower case letter refers to a position in the next set. These positions are labeled form "a" to "f" from top to bottom. This notation of Maps can also be represented on a single line of horizontal text, such as (abc). Thus the set (6,2,9) maps to the set (8,3,5) in the following manner: 6 moves to "a", or 8 in the next set; 2 moves to "b", or 3 in the next set; 9 moves to "c", or 5 in the next set. Map letters are analogous to drawing lines between each member of a vertical set: the origin of the line is the position of the letter, the destination the position designated by the letter.

Below the dotted line is voice leading analysis data for each map represented above the line. The labels "S", "U", and "B" designate Smoothness, Uniformity, and Balance (Straus 2003). These analysis methods provide rankings by comparing the voice leading with all possible voice leadings. "S3" designates that the active map is ranked third of six possible maps in terms of smoothness. "U5" designates that the active map is ranked fifth of six possible maps in terms of uniformity. "B2" designates that the active map is ranked second of six possible maps in terms of balance. The last entry "of6" shows the total number of possible mappings.

A less intuitive but more detailed presentation of the same PathVoice is provided by the command PVan:

Example 4-3. Viewing detailed map analysis data

[PI(pathVL)TI()] :: pvan
PI: pathVL, PathVoice: auto
Position 1,2: origin (6,2,9) destination (8,3,5)
MC 3:3-1 map (abc)
   VL     (6--8),(2--3),(9--5) 
   SMTH   vector:(0,1,1,0,1,0,0)            displacement:7                
   UNIF   vector:(0,1,1,0,0,0,0,0,1,0,0,0)  offset:6 (Tn:1) max:1 span:7  
   BAL    vector:(0,0,2,0,0,1,0,0,0,0,0,0)  offset:3 (In:2) max:2 span:4  
   rank   S3 U5 B2 of6                                                    
Position 2,3: origin (8,3,5) destination (9,5,1)
MC 3:3-1 map (abc)
   VL     (8--9),(3--5),(5--1) 
   SMTH   vector:(0,1,1,0,1,0,0)            displacement:7                
   UNIF   vector:(0,1,1,0,0,0,0,0,1,0,0,0)  offset:6 (Tn:1) max:1 span:7  
   BAL    vector:(0,0,0,0,0,1,1,0,1,0,0,0)  offset:3 (In:6) max:1 span:4  
   rank   S2 U4 B1 of6

This view displays a detailed analysis of each map in the active PathVoice. Between each pair of Multisets in the Path the MapClass and map are given. The line labeled "VL" shows where each pitch in the origin set moves in the destination set, separated by a double dash ("--"). Smoothness, Uniformity, and Balance vectors and analysis values are given, along with a summary of all rankings (Straus 2003).

To crate a new PathVoice for the active Path, enter the command PVn. The user will be prompted to name the new PathVoice. For each map in the course of the PathVoice, the user may choose to enter the map by rank or by index. Choosing a map by rank allows the user to select an analysis method (Smoothness, Uniformity, or Balance), and then select a map from the relevant ranking.

Example 4-4. Creating a new PathVoice group

[PI(pathVL)TI()] :: pvn
name this PathVoice for PI pathVL: smooth
enter a map from (6,2,9) to (8,3,5): by rank or map? (r or m): r
enter ranking method: Smoothness, Uniformity or Balance? (s, u, or b): s
choose a rank of Smoothness between 1 and 6: 1
    6 c      8
    2 b      3
    9 a      5
   MC 3:3-6 as (cba)? (y, n, or cancel): y
enter a map from (8,3,5) to (9,5,1): by rank or map? (r or m): r
enter ranking method: Smoothness, Uniformity or Balance? (s, u, or b): s
choose a rank of Smoothness between 1 and 6: 1
    8 a      9
    3 c      5
    5 b      1
   MC 3:3-2 as (acb)? (y, n, or cancel): y
PathVoice smooth added to PI pathVL.

To confirm the new PathVoice, enter PIv to display, along with the Path, all PathVoice Groups, or enter PVv to display the PathVoice display:

Example 4-5. Viewing a PathVoice

[PI(pathVL)TI()] :: piv
PI: pathVL, voiceType: part
psPath              6,2,9      8,3,5       9,5,1      
                    F#4,D4,A4  G#4,D#4,F4  A4,F4,C#4  
pcsPath             6,2,9      8,3,5       9,5,1      
scPath              3-11B      3-7A        3-12       
durFraction         1(33%)     1(33%)      1(33%)     
TI References: none.
PathVoices:
   auto             3:3-1,3:3-1
 + smooth           3:3-6,3:3-2

[PI(pathVL)TI()] :: pvv
PI: pathVL, PathVoice: smooth
 6 c      8 a      9
 2 b      3 c      5
 9 a      5 b      1
....................
   S1       S1    
   U1       U1    
   B5       B4    
   of6      of6

Notice that the maps (as letters) are changed. Now the set (6,2,9) maps to the set (8,3,5) in the following manner: 6 moves to "c", or 5 in the next set; 2 moves to "b", or 3 in the next set; 9 moves to "a", or 8 in the next set.

The active PathVoice is "smooth"; to change the active PathVoice, enter PVo:

Example 4-6. Selecting the active PathVoice

[PI(pathVL)TI()] :: pvo
select a PathVoice: (name or number 1 - 2): 1
PathVoice auto now active.

The command PIv includes a list of all PathVoices. To confirm that the selected PathVoice ("auto") is now active (marked with a "+"), enter this command:

Example 4-7. Viewing PathVoices when viewing a Path

[PI(pathVL)TI()] :: piv
PI: pathVL, voiceType: part
psPath              6,2,9      8,3,5       9,5,1      
                    F#4,D4,A4  G#4,D#4,F4  A4,F4,C#4  
pcsPath             6,2,9      8,3,5       9,5,1      
scPath              3-11B      3-7A        3-12       
durFraction         1(33%)     1(33%)      1(33%)     
TI References: none.
PathVoices:
 + auto             3:3-1,3:3-1
   smooth           3:3-6,3:3-2

It is often useful to create a new PathVoice built of maps all chosen from the same ranking method and with the same ranking precedence. A PathVoice can then be created whereby each map is, for example, the least smooth of all possible maps. The PVauto command supports creating such a PathVoice: after entering PVauto, the user enters a name for the new PathVoice, a ranking method (Smoothness, Uniformity, or Balance), and selects either the "first" or "last" from the respective ranking. The example below demonstrates the creation of a "leastSmooth" PathVoice:

Example 4-8. Automatically filling a PathVoice group with a common ranking.

[PI(pathVL)TI()] :: pvauto
name this auto PathVoice for PI pathVL: leastSmooth
enter ranking method: Smoothness, Uniformity or Balance? (s, u, or b): s
select first or last map from each ranking? (f or l): l
auto PathVoice leastSmooth added to PathInstance pathVL.

[PI(pathVL)TI()] :: pvv
PI: pathVL, PathVoice: leastSmooth
 6 c      8 b      9
 2 a      3 a      5
 9 b      5 c      1
....................
   S6       S6    
   U4       U2    
   B1       B5    
   of6      of6 

In addition to automatically choosing maps, the command PIopt permits new transpositions for each Multiset in a Path to be chosen, producing either optimum or anti-optimum PathVoices (Straus 2003). To find optimum voice leadings between any two Multisets, rather than an entire Path, enter MCopt. When using PIopt to produce a new PathVoice, the active Path is copied to a new, independent Path. Each Multiset in the new Path is transposed, and the desired PathVoice named "opt" is created. In the following example the new Path created with PIopt.

Example 4-9. Creating an optimized path and PathVoice group

[PI(pathVL)TI()] :: piopt
name this optimization of PI pathVL: pathVLopt
optimize or anti-optimize? (o or a): o
optimized path pathVLopt added to PathInstances.

[PI(pathVLopt)TI()] :: pvv
PI: pathVLopt, PathVoice: opt
 6 a      6 c      2
 2 c      8 b     10
 9 b      3 a      6
....................
   S1       S1    
   U1       U3    
   B4       B6    
   of6      of6