location. The FFT/IFFT pair is embedded inside a pfft~
compatible patch to facilitate windowing and a variety of
FFT sizes. If no energy was reported at a frequency, then
that bin is zeroed (multiplied by zero), and no resynthesis
occurs at that frequency location. All bins multiplied by a
positive value will output energy at that frequency
proportional to the energy at the corresponding spectral
location of the analysis source as reported by fiddle-. More
succinctly stated, white noise is filtered via a convolution
based EQ that utilizes an analysis of the frequency spectra
of an incoming signal as the basis for determining each FFT
bin's amplitude value. Consecutive analysis/resynthesis, at
regular time intervals (i.e. once per FFT), will result in an
approximate subtractive-style resynthesis of the analysis
source. The accuracy of the resynthesis varies, depending on
the complexity of the analysis source and the precision of
the analysis data output by the analysis module. As with
previous analysis/resynthesis methods, the compositional
potential of the attenuation-based analysis/resynthesis
method lies not only in the resynthesis of an audio signal,
but also in the capability to extract and modify analysis data
before resynthesis occurs.
2 Modification of Analysis Data Prior to Resynthesis.
In the current MaxMSP implementation of spectral
attenuation-based analysis and resynthesis, the analysis data
reported by fiddle- may be altered before being passed on
to the resynthesis module in a variety of ways. These
modifications include frequency shifting as well as a variety
of spectral-based modifications. The spectral-based
modifications include techniques I have designated as
spectral accumulation (the systematic retention of data from
previous analysis), and spectral evaporation (the systematic
attrition of spectral data subsequent to spectral accumulation
or retention).
2.1 Frequency shifting.
Frequency shifting is achieved by proportional
displacement of the spectral index addresses for all
frequencies output by the analysis module, prior to
resynthesis. Given that the spectral index address for a
frequency can be determined by f/(sr/FFT-size), frequency
shifting is easily achieved by multiplying f by the
appropriate transposition factor before calculating the
spectral index address for f. The transposition factor is
determined by first selecting a base frequency that
represents no transposition (C or 26 1.62558 hertz in the
current implementation) then dividing the frequency that
represents the desired amount of transposition by the base
frequency. For example, given a base frequency (i.e. no
transposition) of C, 26 1.62558 hertz, transposition up by
one equal tempered half step is achieved by dividing
277.1826 17 hertz (or C#) by 26 1.62558 hertz (C natural)
then multiplying the incoming frequency (i.e. the frequency
to be transposed) by the result. This calculation is performed
before determining the spectral index address for each
incoming frequency. For example, to transpose A up by one
half step: 440*(277.182617/261.62558) = 466.1637 hertz, or
B flat. If all analysis frequencies are multiplied by the same
multiplication factor, the resulting resynthesis will be
transposed by the interval represented by the distance
between the base frequency and the transposition frequency.
The current MaxMSP implementation features a graphic
interface consisting of a five-octave keyboard icon for
selection of the interval of transposition. The user selects the
amount of transposition by clicking on the key that
represents the desired interval of transposition. This value is
output as a MIDI note number then translated into hertz
using the MaxMSP MIDI-to-frequency converter object,
mtof. The MIDI note number is displayed to the right of the
keyboard icon and may be changed manually by clicking
and dragging on the displayed number, thus allowing
transposition by intervals not represented by the equal
tempered scale.
It should be noted that simple frequency domain
transposition of an incoming signal is easily achieved with
the MaxMSP gizmo- object. Therefore, the allure of the
current method lies not in the harmonizer effect so much as
in the potential to offset or alter spectral data prior to the
application of spectral accumulation or spectral evaporation
(discussed below).
2.2 Spectral Compression and Expansion.
It is not necessary to scale all incoming frequencies
from the fiddle- analysis module by the same transposition
factor. In practice, some data may not be scaled at all or
scaled in a methodical way to create novel effects. A variety
of methods such as spectral attrition (deleting some partials
while leaving others intact) and other techniques are
currently under development by the author.
Among the techniques that have been implemented
is spectral compression and expansion (fitting n partials into
a smaller or larger pitch space than they would normally
occupy). This is achieved by subtracting the fundamental (in
hertz) from each frequency in the incoming fiddle- analysis,
then multiplying the result by a compression or expansion
factor, and then adding this result to the original frequency.
This method allows the position of the upper partials to
change in relation to the fundamental while the fundamental
itself remains unchanged. However, the partials will retain
their relative position to one another in the frequency
spectra. The current implementation features a slider-based
user interface for compression and expansion of spectral
data. The range of the slider is calculated so that all partials
can be compressed into a pitch space as small as a few hertz
above the original fundamental. Conversely, maximum
expansion shifts each partial (excluding the fundamental) up
one position in the overtone series (i.e. partial 2 at
maximum expansion shifts upward to the location in hertz
previously occupied by partial 3, 3 maps to 4, and so forth).
Perhaps the most musically interesting results are achieved
by utilizing settings between these two extremes or in
504
0