SoundMagic Spectral Documentation
SoundMagic Spectral Documentation
1. Introduction
SoundMagic Spectral is a suite of freeware Audio Unit plug-ins that offer exotic real-time spectral
processing effects, along with a few time-domain effects. This document explains the theory behind spectral
processing and details each plug-in in the suite.
The graphic here represents only the overall amplitude changes in the sound. However, this representation
tells us little about the frequency content of the sound (other than some vague ideas about pitch or noise
content by looking at the randomness of the waveform). It is hard to tell from this picture just what the
sound actually is.
In the second image, however, we see the same sound converted to a frequency domain representation
(also called a “spectral representation”):
DOWNLOADING
These effects may be downloaded with a “beta” status (i.e. limited support) from the following URL:
http://www.michaelnorris.info/soundmagicspectral. I hope to release of “final” version of SoundMagic Spectral
in late January 2007. In the meantime, updates will be posted to my website.
LATENCY
Because these effects use large chunks of sound, there is often significant latency, usually of about half a
second, sometimes longer, between the input and output. This means that it’s a good idea to ensure there is
at least a second’s worth of silence at the end of your sound file, to allow for the processing “tail”.
PHASE RANDOMIZATION
The optimized phase vocoder routines in these effects do not perform the usual “phase unwrapping” stage
that is typically seen in most phase vocoder implementations. The reason is that it is computationally
expensive, and for most processes is actually redundant. By removing it, I have made about a 10–15% saving
in CPU utilization of these effects. The downside is that when you apply certain procedures such as
“interpolation” to the amplitudes, you tend to get a “ringing” effect, which sounds like a comb filter with a
fundamental frequency derived from the size of the FFT. To combat this, a simple trick is to randomize the
phases of each component, which removes this ringing effect, as the phases no longer coincide at each FFT
period. However, this also removes the temporal accuracy of phase components, tending to “smear” the
sound, especially for larger FFT sizes., and also widens the stereo field. On the plus side, this can be actually
quite sonically desirable for many applications, and so you will often see this option selected by default.
SPECTRAL CLICHÉS
It’s very easy with these effects to end up with “spectral soup” (sine tones running up and down the
spectrum). While this might be fun, it’s also a spectral cliché, and best avoided. The expressive power of
these effects is in their more subtle manipulations of timbre. Often the most rewarding effects are found
when you move a parameter just slightly away from its “normal” position. Also, on a reasonably grunty
machine, you should be able to get a couple of these effects in series for even more possibilities!
4. THE EFFECTS
I have categorized the effects in SoundMagic Spectral below by their typical function or application. I have
divided them into the following categories:
Common Parameters
Brightness
Applies a filter to either increase or decrease the strength of higher-frequency components. At its most
aggressive, the upper frequency components can “sizzle” quite audibly.
Lo bin cutoff
Frequency components lower than a certain frequency are removed (set to zero amplitude)
Hi bin cutoff
Frequency components higher than a certain frequency are removed (set to zero)
Randomize phases
The phase information is randomized (see “Phase Randomization” section above)
FFT size
The larger the FFT size, the “smoother” the result, but also the more CPU is used in performing the FFT.
On G5s, this probably isn’t an issue, but on G4s, going too high can cause the audio to break up as the CPU
maxes out.
Gain
The output level of the effect. Some “accumulation” effects can create clipping in the audio — reducing the
gain will avoid this.
Feedback
The amount with which the output of the effect is “fed back” into the input
Parameter Variance
Some effects allow you to alter a parameter in a programmatic way, through the notion of “variance”. This
lets you “connect” one parameter to either the amplitude of the sound, the inverse of the amplitude, a Low
Frequency Oscillator (LFO) or to a random change.
SPECTRAL AVERAGING
Averages the spectral information over n windows. Very similar effect to Spectral Blurring.
Number of Frames
The number of FFT frames over which to average. The more frames the smoother the result.
SPECTRAL BLURRING
Applies a low-pass filter to the spectral changes from one window to the next, progressively “smearing” the
sound. Has similar spurious problems as Spectral Averaging, but may still be useful.
Blur amount
The amount of “smearing” that takes place. This can be varied using the variance controls detailed above
SPECTRAL DRONEMAKER
Spectral DroneMaker is the “king” of spectral drone effects. It can turn any sound into a beautiful, slowly-
changing drone based on the sonic characteristics of the underlying sound. The idea came from the
software called “Mammut” developed by Øyvind Hammer of Notam, which used very large FFTs to”smear”
out the detail, thus creating slowly changing drones. Unlike Mammut, Spectral DroneMaker still uses
normal-sized FFTs, instead creating the drone by gradually “interpolating” between frequency components
sampled at a distance. Other parameters for making the drone even more sexy include a bank of comb
filters added prior to the interpolation for a subtle, or not-so-subtle pitched effect, the ability to gate
frequency components as in Spectral Tracing, and the ability to add a flanger to the output.
Interpolation length
Each bin is interpolated between samples taken at a distance. This parameter sets the amount of time that
the bins are sampled at.
Interp length variance
The above parameter can be randomized within a range of interp length ± variance
Use peak amplitudes
With this switched on, the process will scan for the highest amplitude that occurs in each bin the input file
while they are being interpolated. The process will then use that stored amplitude instead of the actual value
that occurs at the next interpolation point in the input file.
Gate level
Only lets partials above a certain threshold into the output sound.
Comb filterbank level
Spectral DroneMaker allows you to “harmonize” the input sound by putting it through a comb filterbank.
This parameter sets the wet/dry level of the comb filtering.
Comb filter fundamental
Sets the fundamental frequency of the filterbank. The filters are built up from this frequency.
Scale type
A list of preset scale types for building the filterbank
Number of octaves
How many octaves you want the filterbank to cover. The filterbank can be quite computationally expensive
with a high number of octaves.
Filter resonance
The strength of the comb filters. Watch out for distortion from high resonance filters.
Flanger amount
Lets you apply a time-varying flanger to the output
Flanger depth
The maximum delay length of the flanger. The higher the number the more “intense” the pitch-varying
aspect of the flanger
Flanger rate
The speed of the flanger.
6. SPECTRAL SUSTAINING EFFECTS
These effects in some way sustain partials for a certain duration, using slightly different algorithms to
determine when and for how long partials should be sustained for.
SPECTRAL FREEZING
Sometimes also known as “Spectral Accumulation”. Each bin is watched until its amplitude reaches a peak.
It is then held at that peak until it is exceeded by another peak in that bin. The Freeze Factor parameter
puts a decay onto the peak holding, so that you don’t just end up with a whole series of very high-amplitude
peaks.
Freeze Factor
Once a bin is frozen, it can then be “decayed”. If this is set to 100%, no decaying takes place, allowing for a
complete bin freeze, which will only be superceded by a peak.
Use threshold param
If this is checked, a freeze will only take place if the new peak is above a threshold level.
Threshold
The threshold above which a freeze can take place
Zero bins under threshold
If this is checked, unfrozen bins under the threshold level will be zeroed
SPECTRAL SHIMMER
A variety of ways to add “shimmer”, “jitter”, “sparkle”, “pulsation” or “sizzle” to your sound.
Jitter amount
The percentage of bins that are “jittered” (a random fluctuation in amplitude)
Jitter only above
Allows jitter only above a certain frequency
Low-frequency jitter
The maximum amount of jitter (in dB) at 0Hz
High-frequency jitter
The maximum amount of jitter (in dB) at the Nyquist limit. The amount of jitter is interpolated between
this value and the low-frequency jitter over the range.
Jitter gate level
Only apply jitter if the bin is above a certain amplitude (a low level here can create a real “sizzle” in the
higher frequencies)
Jitter hold (windows)
The number of windows for which a jitter is “held” on a bin — a larger value makes less of a “jitter” and
more of a kind of “surging” sound
Amplitude pulse type
Applies an amplitude pulsation wave across the spectrum. “Square” uses blocks of bins (of size set by the
“Pulse Width” parameter), either of max or min pulse level. “Sin” uses a sin wave across the spectrum
ranging between max & min levels.
Pulse level max
The maximum amplification of the pulse wave
Pulse level min
The minimum amplification of the pulse wave
Pulse width
The number of bins that a pulsation wave is spread across
Pulse rate
The rate at which the pulsation wave is cycled up or down across the spectrum
Delay variance
Delays each bin in a programmatic way, creating sweeps up or down or random delay fluctuations. The
Delay Variance parameter sets the maximum delay, while the Delay Type parameter sets the particular
method by which bins are delayed.
SPECTRAL SHUFFLE
Randomly shuffles blocks of bins around within the spectrum. You have control over the Shuffle factor (the
amount of blocks that are shuffled), the Shuffle range (how far away from the original position each block is
moved) and the number of bins per block.
Shuffle factor
The number of groups that are shuffled, as a percentage of the FFT size.
Shuffle range
How far away, in bins, each group is moved from its original position.
Bins per group
The number of bins that are kept together in a block.
SPECTRAL PULSING
A rather experimental effect, that switches bins on and off across the spectrum in a pulsating fashion.
On duration
The length of time to keep bin zero switched on
Off duration
The length of time to keep bin zero switched off (after the on duration)
On multiplier freq
As you go up the frequency spectrum, multiply the on duration by this number
Off multiplier freq
As you go up the frequency spectrum, multiply the off duration by this number
On multiplier time
As you move forward in time, multiply the on duration by this number
Off multiplier time
As you move forward in time, multiply the off duration by this number
Min on duration
Set the minimum length for the on duration
Max on duration
Set the maximum length for the on duration
Min off duration
Set the minimum length for the off duration
Max off duration
Set the maximum length for the off duration
Modulo type
1= ping-pong between min and max; 2 = wrap round from max to min/min to max
SPECTRAL HARMONIZER
The spectrum is transposed up or down by a set series of intervals (you have three to play with) and mixed
back into the original. Each interval can then be transposed in a similar manner to the Spectral Filterbank
transpositions.
Intervals
There are three “intervals” that you can define to harmonize the original sound file. If, for instance, you
define interval 1 to be 400 cents, this will harmonize the sound file up a major fourth.
Transposition Type
If the “no. partials per interval” setting is higher than 1, you can define how the interval will be used to
determine the other harmonizations. See “Spectral Filterbank” for more information on these
transpositions
Transpositions per interval
For each interval, how many transpositions there are. For instance, 4 transpositions of a minor third, with
the transposition type set to “stacked” would give you a diminished seventh chord.
SPECTRAL STRETCH
An effect to create a variety of inharmonic stretches. Spectral peaks are tracked and shifted by the quadratic
equation: βω+αω2, where ω is the frequency of each bin.
Alpha stretch
The value for α in the equation above
Beta stretch
The value for β in the equation above, which can be varied using the “beta stretch variance” parameter
SPECTRAL TRACING
Typically used to retain only the n loudest bins in a spectrum and remove the others. Alternatively you can
retain the n softest bins, or set a threshold level (a “gate”) below which all partials are zeroed, or above
which all partials are zeroed.
Tracing type
Choose from four different algorithms: retain the n loudest, the n softest, bins above the threshold or bins
below the threshold
Number of bins
The number of bins to retain (either the loudest or the softest depending on the Tracing Type parameter)
Threshold
The threshold in dB; retains bins above or below this threshold depending on the Tracing Type parameter
SPECTRAL FILTERBANK
A bank of extremely narrow, very pure bandpass filters (similar to the GRM Reson plug-in). You can choose
the interval between centre frequencies of your filterbank, and how many filters should be created. Because
of the inaccuracies in pitch in the FFT, the filterbank cannot guarantee the actual frequencies you ask for
will be exactly rendered; however, it will be as accurate as possible within the limitations of the FFT.
Number of filters
The number of filters in the filterbank
Base frequency
The lowest frequency in the filterbank, from which the other frequencies are built-up
Interval
The interval that will be applied to the base frequency and successive “harmonics” to build up the
filterbank, using the techniques described in the “transposition type” parameter
Transposition type
—Stacked: each interval is simply applied to the previous interval, “stacking” the interval on top of each
other. For an interval of 300 cents (a minor third), this would create a diminished seventh chord, for
instance. An interval of 200 cents would create a whole-tone scale.
—Chord: the “fundamental” and the upper note defined by the interval are simply repeated at the octave.
If the fundamental was C, and the interval was a perfect fifth (700 cents), then the notes are just C and G
repeated up through the octaves
—Harmonics: a harmonic series is based on integer multiples of a fundamental (n, 2n, 3n, 4n, etc). The
harmonics setting extends this by using multiples of other intervals. It assumes that the standard harmonic
series would have an interval setting of 1200 cents (an octave) — therefore, halving this to 600 cents (a
tritone) would give you filters at 0.5n, n, 1.5n, 2n, etc..., while 2400 cents (two octaves) would give you 2n, 4n,
6n, 8n, etc.
Harmonic gain
“Harmonic gain” indicates how much each progressive “harmonic” as you get higher should be attenuated
by.
Side bins
Allows you to create a “wider” filter by adding side bins on either side of the central filter bin. While this lets
more of the original sound through, and therefore less pure filtering, it also creates some interesting
“pulsating” dynamic effects
Side bin gain
How much each side bin is attenuated by as you get further away from the central filter
SPECTRAL GRANULATION
“Grains” or “chunks” of the spectrum, of a certain frequency range and duration are taken and delayed by a
certain length. Optionally, you can also apply a bin shift and a fade in/fade out to the grains.
Grain length
The length of each grain. NB: the actual length is rounded down to the nearest FFT length
Grain length variance
Randomization of the grain length (l ± var)
Grain delay
The length of time to delay each group
Grain delay variance
Randomization of the grain delay
Bin shift
An optional amount to shift each grain up or down the spectrum by a number of bins
Bin shift variance
Randomization of the bin shift parameter
Bins per grain
How many bins constitute a grain. The larger this parameter the more of the original sound can be detected
in the output.
Fade amount
Fades in and out each grain for extra smoothness. 100% is maximum fading.
Density
The percentage of grains that are actually delayed. 100% means the entire sound is granulation. 0% means
none of the sound makes it out.
SPECTRAL EMERGENCE
This effect tracks the partials, but applies an amplitude envelope to them to create a strange pulsating
sound. Because this happens separately for left and right channels, you often get a “rotating” panning effect
as well.
Fade in (windows)
The number of windows over which to fade in a tracked partial
Hold (windows)
Once the tracked partial has been faded in, how long should it be held at 0dB for?
Fade out (windows)
Once the tracked partial has been faded in and held, how long it should be faded out for?
Recycle faded peaks
If this is checked, then if a partial is still being tracked after it has finished all three phases of its envelope, it
will be restarted from the fade in section. If unchecked, it will remain silence until the end of its life.
Chorus
A time-varying chorus/flanger effect
Comb Filterbank
A bank of comb filters
Grain Streamer
“Captures” and repeats grains
Mr. Filterbank
A standard time-domain implementation of a bank of bandpass filters