tones, we can include timbre in a more flexible and faithful way. Rather than using a prescribed overtone series to
model each pitch of an instrumental chord, we use specific
data from spectral analyses of sampled instruments stored
in SDIF files. A chord orchestrated for diverse instruments can be simulated by combining the SDIF data from
these instruments. We further revise Parncutt's algorithm
to treat the precise frequencies of the partials of complex tones, rather than rounding them to equally-tempered
pitches. We also do not limit our calculation to 10 partials;
instead we include all partial data available from spectral analysis. One reason Parncutt uses only 10 partials
is that the 11th partial is poorly-approximated by semitones [3]. By avoiding equal-temperament, we eliminate
this problem. Including an unlimited number of partials
allows for a finer measure of the interaction of complex
tones. And by using precise frequencies rather than idealized harmonics, we leave open the possibility of analyzing
sounds that contain inharmonic spectra, for example bells
or electronically-generated sounds.
2.3. Successive Pitch Relationships
A major extension Parncutt makes to Terhardt's theory is
in the consideration of successive pitch relationships. In
doing this he seeks a perceptual groundwork by which
we can understand existing traditions of voice leading and
harmonic progression and extend them to post-tonal music. However a limitation of the algorithm is that it is designed for equally-tempered music. Such a theory would
be especially useful for microtonal music, as there have
been fewer studies of the progression between microtonal
harmonies. By revising Parncutt's chord distance algorithm to take microtonal frequencies into account, we take
advantage of a powerful feature latent in the theory.
3. IMPLEMENTATION OF ALGORITHMS
3.1. Roughness
Roughness (sensory dissonance) is the beating sensation
produced by the interaction of two or more components
that are sensed within a certain distance in the inner ear.
This distance is referred to as the "critical bandwidth" and
varies with frequency. Following Parncutt [3], to calculate
the degree of roughness between two pitches, we first calculate the critical bandwidth for the area around the mean
frequency
Web = 1.72 (fr65) (1)
where fm= (fl + f2) /2. We then define the roughness
of a sonority as the sum of the roughness of each pair of
components
n n-1
I:aj. ak g(fcb) (2)
j= k a (2)
j=0 k=l a3
where aj and ak are the amplitudes of the components
and fcb is the distance between fi and f2 in critical bandwidths. g(fcb) is a 'standard curve'1 developed by Parncutt 2 and defined by
g(fcb) = (e(b/0.25) - e(-/0.25))2, cb< 1.2 (3)
3.2. Correlation
In order to measure the harmonic correlation between two
chords, using the technique adapted from Parncutt, we
must first adjust the chords to take masking into account.
3.2.1. Masking
When two sounds lie within approximately three critical
bands, the louder of the two will mask the other. Moore
and Glasberg [2] define the following function for equivalent rectangular bandwidth rate (ERB-rate) or what Parncutt refers to as pure-tone height
H,(f) =H log,( f +f2 +Ho
(4)
where f is frequency in kHz and H1 = 11.17, Ho = 43.0,
f = 0.312 kHz, and f2= 14.675 kHz3.
The next step is to calculate the auditory level TL(f)
of each pure-tone component which is defined as the level
relative to the threshold of audibility in dB (sound pressure level, SPL). This threshold, formulated by Terhardt
et al. [10] is
LTH = 3.64f-0-8 - 6.5e-0.6(f-3.3)2 + 10-3f4
(5)
where f is frequency in kHz. From there, we can calculate
the auditory level as follows
TL(f) = max{SPL(f) - LTH; 0}
(6)
where SPL(f) is the level of f in dB (SPL) and the max
function ensures that the result will not drop below zero 4
The degree to which one pure-tone component of a
sonority masks another is defined by
ml(f, f') = TL(f') - kMHp(f') - Hp(f) (7)
where kM is the masking gradient which, should be set to
a value between 12 and 18 dB. Next, because one maskee
could be masked simultaneously by several maskers, we
must calculate the overall masking level of a given puretone component.
ML(f) = max{20 loglo E 10ml(ff')/20; 0}
f1f'
(8)
1 Parncutt's standard curve approximates the experimental data collected by Plomp and Levelt [5]
2 This curve is not published, but found in the C code available
for download from Richard Parncutt's website: http://www-gewi.unigraz.at/staff/parncutt/
3 These parameters were chosen by Moore and Glasberg [2] by fitting
experimental ERB estimates using non-linear regression.
4 In Parncutt's work, this formula is TL(P) = max{SPL(P) -
LTH; O} where P is the pitch category in semitones. We have substituted f (frequency) for P here and the formulas to follow.
0