(Command - G) Gain Change...

The equivalent functions in Sound Designer II and Alchemy are faster, so in most cases you will want to use those. However, SoundHack will give you an RMS value for the file, and will allow a different gain factor for each channel. It will also work on floating point, ADPCM, and µLaw files. Finally, it will allow you to correct for DC offset in your file.

Click on Analyze and the peak amplitude, peak position (in samples), RMS values and DC offset will be calculated. The gain factors will be set to normalize both channels independently and the additional offsets (a number between 1.0 and -1.0) will be set to correct the file. Change Gain will create a new file adjusted by the gain factors set. If you are dealing with a monaural file, only the channel 1 information is applicable. Analyze will tie up your machine when it is doing its stuff, so please be patient. I will fix this in a future version.


soundhack doc top, table of contents
(Command - M) Mutation...

(This section of the manual is written by Larry Polansky.)
The seven different spectral mutation functions (USIM, ISIM, IUIM, UUIM, LCM, LCM/IUIM, LCM/UUIM ) produce different types of timbral "cross-fades." Each mutation takes 2 soundfiles: a source and a target , and returns a third soundfile, called the mutant . The mutation functions operate on the phase/amplitude pair of each frequency band of the source and target spectra. The output of the functions is a phase/amplitude pair for each frequency band in the mutant soundfile. Each phase/amplitude pair in the mutant is some "combination" of the phase/amplitude pairs of the source and target, for the corresponding frequency band. The mutations work on the sign (Contour) or the magnitude of an interval, or both. They change completely a selected number of bands from the source to the target (Irregular) or partially change all frames (Uniform).

Type
The Type box allows you to select between seven quite different mutation functions: USIM (Uniform Signed Interval Mutation), ISIM (Irregular Signed), IUIM (Irregular Unsigned), UUIM (Uniform Unsigned), LCM (Linear Contour Mutation), and the concatenations LCM/IUIM and LCM/UUIM . (For specific definitions of the functions, see below. For more information see the two articles cited in the bibliography).

Try starting with the simplest ones, the USIM (a simple spectral crossfade) and the ISIM (a spectral replacement). These two mutations, unlike the UUIM and LCM , actually arrive at the source or target, depending on which direction you mutate (that is, you will actually hear the source or target with = 0.0 or = 1.0, respectively). The IUIM , UUIM and the LCM will, with = 1, give an image of the target. These "incomplete mutations" mutate either the sign or the magnitude, but not both of the intervals between the amplitudes of successive spectral bands.

The concatenations (LCM/IUIM , LCM/UUIM ) are "pipes": they apply the second mutation to the output of the first. The concatenations are complementary: for each frame the LCM mutates sign while the IUIM and UUIM mutate magnitude. Different frequency bins are used for each "stage" of the concatenation, so the mutation trajectory can be rather unpredictable.

Mutation Index ()
Each of the mutation functions uses an index , called (omega), or an -function. This determines the amount of spectral mix, from 0 to 1, between the source and target resulting in the mutant. = 0 results in all source file, = 1 all target. may vary over the course of the mutation. A constant index will result in a sound which is a spectral mix of the source and target. More dynamic sounds are produced with an index function, which changes over time.

Absolute Interval
There are two methods used by the mutation functions to compute intervals between frequency bands: Absolute (the default) and Relative . You may check or uncheck the Absolute Interval box to get these two methods. If Absolute intervals are used, you may specify an absolute amplitude value between 0.0 and 1.0 for the source and target (Source Abs. Value, Target Abs. Value), from which all intervals will be taken. The choice of values can produce interesting effects, often "centering" the frequencies in which the mutation happens, making the mutations themselves less extreme. If two different values are used, amplitudes will be "transposed" from the source to the target. The use of Absolute intervals rather than Relative will be most noticeable for the LCM , IUIM and UUIM , as well as the concatenated mutations. Low values (around .1 - .2) are a good place to start (note that .1 means 1/10th of the total amplitude of the soundfile's spectra).

If Absolute is unchecked (Relative intervals), each mutation function uses amplitude intervals between successive frames of the spectra, multiplied by , to create the corresponding frame of the mutant sound. Relative interval mutations will tend to "drift," often in extreme ways, and the ISIM and concatenated mutations may never "arrive." However, some very interesting sonic results may be produced in this way.

Delta Emphasis
If the mutation uses Relative Intervals (Absolute Intervals unchecked), you can set a value for Delta Emphasis (DE). DE allows control over the degree to which successive mutation intervals are emphasized in the resulting mutant. DE values range from -1.0 to 1.0, with the default at 0.0 (no emphasis or de-emphasis). For positive DE values, the current frame's intervalic characteristics will be emphasized more than the previous mutant frames. For negative values, the current frame will be "damped," emphasizing the previous information. One way to think about this is as a way of "slowing down" the mutation: a negative DE value will keep the more chaotic mutations from getting "out of control." A negative DE value will function as a lo-pass filter, averaging the previous spectral frames into the current output. Positive DE values will accentuate the often high-frequency activity of the mutations. Delta Emphasis can be useful in tailoring the relative interval mutations, especially the "incomplete" ones.

Band Persist (Irregular Mutations Only)
Band Persist pertains only to irregular mutations, the LCM , ISIM , IUIM and the concatenations (and not to uniform mutations, the USIM and UUIM ). It will only appear on the screen when irregular mutation is selected. High values for Band Persist (towards 1.0) will produce more "stable" mutations. Low values (towards 0.0) will introduce a kind of frequency pumping at the frame rate. Try changing the number of bands for unusual results.

In irregular mutations, not every frequency band is mutated for each FFT frame. determines the percentage of bands that are mutated for a given frame. If a band is mutated, it completely assumes the particular characteristic (interval sign or magnitude) of the target interval, and retains either the sign or the magnitude of the source interval. For example, the LCM takes the sign of the target interval, and "pastes" it onto the magnitude of the source. However, it only does that for ( * #-of-bands). The selection of which bands to mutate in irregular mutations is done stochastically, but setting Band Persist high will ensure that once a band is mutated, it will keep being mutated as long as possible. That is why a high value for Band Persist will stabilize these highly unusual mutations, making them a bit more "well-behaved." A good experiment is to try an irregular mutation (LCM , IUIM , ISIM , the concatenations) with a fixed , and two different values of Band Persist, one high and one low.

Time Scale Target
The form of the mutation functions used in SoundHack require that each soundfile (source, target, mutant) be of equal length. The default technique is to truncate the longer of the two files, producing a mutant which is the length of the shorter file. If Time Scale Target is checked, the target soundfile will be time-stretched or -compressed to be of the same length as the source. Other techniques are of course possible (including windowing and zero-padding), and we encourage other software developers to investigate these.

Theoretical Descriptions of the Mutation Functions
The mutation functions can be classified as follows:

	Uniform	Sign	Magnitude
USIM	yes	yes	yes
ISIM	no	yes	yes
UUIM	yes	no	yes
IUIM	no	no	yes
LCM	no	yes	no
Note that the opposite of "irregular" is "uniform." Uniform mutations do something to every frequency band. How much they do depends on . Irregular mutations change a given frequency band completely from source to target (sign, magnitude or both), but the number of frequency bands they operate on depends on . Note that there is no UCM given here (it wouldn't make sense).

The USIM and the ISIM are the simplest mutations, a spectral cross-fade and spectral band-replacement, respectively The UUIM and the IUIM are two different ways of "pasting" the magnitude differences of the target spectra onto the sign of the source, resulting in a mutant which, when completely mutated, is still some combination of the source and target. The LCM , perhaps the most unusual sounding and difficult mutation to control, does the opposite, pasting the signs of the target onto the magnitudes of the source.

The functions are defined below. S and T are the source and target soundfiles. Si , Ti are the amplitudes for a given frequency band of the FFT for the ith frame of the sound. Sj , Tj are either the amplitudes of the same band in the previous frame (Relative Interval) or some absolute amplitude (Absolute Interval). Mi is the new amplitude of the given frequency band of the current frame of the output sound, Mj is the amplitude for that band in the previous frame of the output sound (Relative Interval), or some absolute amplitude value between 0.0 and 1.0 (Absolute Interval). Tint , Sint and Mint are the signed magnitude intervals between the amplitude of the current frame for a given band, and the amplitude of that band in the previous frame (Relative) or to some fixed amplitude (Absolute) Each of the equations below applies to one frequency band of the source, target and mutant soundfile spectra. In other words, for all of these functions, Si , Ti , and Mi run from 0 to the number of bands in the FFT.

|Si - Sj| = Smag - and - (|Si - Sj|)/(Si - Sj) = Ssgn

€ Uniform Signed Interval Magnitude (USIM)
Mi = Mj + (Sint) + * (Tint - Sint)
- where Sint and Tint are (Ssgn * Smag)
and
(Tsgn * Tmag) respectively
€ Uniform Unsigned Interval Magnitude (UUIM)
Mi = Mj + Ssgn * (Smag + * |Tmag - Smag|)
€ Linear Contour Mutation (LCM)
Mi = Mj + Tsgn * Smag (for mutated intervals)
Mi = Mj + Ssgn * Smag (general form for non-mutated intervals)
€ Irregular Unsigned Interval Magnitude (IUIM)
Mi = Mj + Ssgn * Tmag
(for mutated intervals; non-mutated intervals same as LCM above)
€ Irregular Signed Interval Magnitude (ISIM)
Mi = Mj + Tsgn * Tmag
(for mutated intervals; non-mutated intervals same as LCM above)
Notes: 1) In Absolute Interval mutations, Mj, the absolute amplitude to which the new interval is added, is interpolated between the absolute values for source and target, according to the value for . 2) The Irregular mutations are in two forms: one for the case when that particular frequency band is chosen for mutation, one for when it is not.

More Information and Acknowledgements
For more on morphological mutations, including their use in other contexts, please contact Larry Polansky at Dartmouth College, Bregman Electro-Acoustic Music Studio, Music Dept., Hanover, NH 03755, email: larry.polansky@dartmouth.edu. Various students at Dartmouth, including Chris Langmead, Eric Smith, Steve Berkley and Martin McKinney have provided invaluable assistance over the past few years in helping me to formulate both the spectral mutation ideas and accompanying software techniques. Ken Overton, Sergei Kossenko, and Chris Langmead all contributed valuable suggestions to this documentation.


soundhack doc top, table of contents, next screen - phase vocoder to spectral extraction