ï~~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