ï~~Proceedings of the International Computer Music Conference 2011, University of Huddersfield, UK, 31 July - 5 August 2011 necting both termini and (2) that it must be possible for each node to be part of a pathway that connects both termini. Future implementation of the IntervalNetwork base class may support free-form interval networks in pitch class space, such as those described in Johnson [3], alternative formulations found in Lewin [4], or pitch Tonnetz such as those demonstrated by Leonhard Euler as early as 1739. In this model, each Node represents a pitch but does not contain a specific Pitch object. When a Pitch object is associated with a Node, new pitches in the scale are realized by navigating the pathway in either ascending or descending directions (though not necessary ascending or descending pitch space values, as in the case of scales that are considered ascending, yet curve back on themselves along the way, such as some ragas or scales described in Slonimsky [10]). As each Edge defines an Interval, the next Node in the pathway is realized by transposing the source pitch. This transposition may be up or down in pitch space and is dependent on the supplied Interval definition. When realizing an ascending pathway, unaltered Edge Intervals are used for transposition; when realizing a descending pathway, Edge Intervals are used for transposition in reverse (e.g., an ascending minor second in ascent, a descending minor second in descent). BoundlntervalNetworks are cyclical, though their realized pitch space collections may be infinite. When a pathway arrives at a terminus, the realized pitch is treated as a pitch in the alternate terminus, and the pathway continues. For example, if a pitch is realized for the high terminus, the next edge is found by treating the justrealized pitch as a pitch for the low terminus. In this way the termini nodes are essentially the same, wrapping around in the graph. The realized pitch sequence, however, need not wrap, and often forms an infinite sequence of pitch space values. While a theoretical graph might easily represent the two termini as one node, this musically-informed design uses two distinct nodes to better represent conventional models of scales. The most relevant functionality of BoundIntervalNetworks is exposed in the interface of the ConcreteScale, which will be discussed later. Understanding a few attributes and methods of the BoundlntervalNetwork, however, will clarify the design. Each BoundIntervalNetwork has two stored Boolean values that declare its basic structural characteristics: the deterministic attribute declares whether every ascending and descending pathway for a given Pitch-Node assignment will always be the same; the octaveRepeating attribute declares whether all realized pitches repeat for each octave. The realize () method, given a single Pitch, a Node to which that Pitch is assigned to, a pathway direction, and a Pitch range, navigates a pathway through the network and returns the resultant Pitches, paired with references to the specific Nodes used in realization. For deterministic BoundlntervalNetworks, pitch segments obtained from realize () are cached and reused when possible. While interval spacings drive the formation of scales, it is useful to apply interval transformations to resultant Pitch Nodes after Edge-derived transpositions. An alteredDegrees dictionary accommodates this functionality. It is a data structure, stored in AbstractScales, that is passed to BoundIntervalNetworks whenever pitches need to be realized. This approach permits two-levels of design: (1) the BoundIntervalNetwork structure, based on pathways of intervals, and (2) the AbstractScale alteredDegrees dictionary, based on transforming realized Nodes. A complex AbstractScale might, for example, adjust the alteredDegrees dictionary for stochastic variation or contextual pitch adjustments. An application of the alteredDegrees dictionary is demonstrated below as the HarmonicMinorScale. The following figures illustrate reduced, hypothetical BoundIntervalNetwork graph structures, and describe archetypical formations. In all cases, Nodes labeled a and b represent the low and high termini respectively. Nodes at parallel vertical positions share the same degree value. In all cases, the number of nodes and edges can be increased to accommodate more intervals. While graph structures define scales as conjunct movements, any skip or disjunct motion is possible. Figure 3 illustrates the most common types of deterministic IntervalNetworks. These structures may or may not be octave repeating. Figure 3a is a simple bidirectional structure, the type of scale most software models. Any number of Nodes may intervene between the termini. For any defined degree, there is only one Node available. Figure 3b has independent ascending and descending pathways. Between the termini there are two nodes for each degree. Requests for a pitch based on a degree are resolved depending on a provided pathway direction. Figure 3b could represent scale degrees five to eight of the melodic minor scale. Figure 3c has a bidirectional segment and an independent pathway segment. An expanded structure, similar to this one, is used to represent the entire melodic minor scale as presented below. Figures 3b and 3c represent scale archetypes not available in existing software implementations. Not all scales and scale-like objects produce the same Pitch sequence with each realization. Figure 4 illustrates some possibilities for these non-deterministic BoundIntervalNetworks. Figure 4a, for example, has all bi-directional Edges, but branches in both ascent and descent for Node y. The determination of which Node is realized is determined by weighted random selection of the possible destination Nodes. Depending on the weights, for instance, the Pitch in Node x might ascend to Node y 40% of the time, and directly to Node z 60% of the time. Figure 4b defines a structure with two ascending and two descending pathways. Again, the choice of Node, when more than one is available for a given pathway direction, is based on weighted random selection. When requesting a pitch from a degree that is associated with more than one Node, weighted random selection is again used. For example, if Nodes q, r, and s are all associated with degree 2, and a user requests an ascending pitch at this degree, one of Node q or r (the 703 0
Top of page Top of page