EDIT MENU

The usual stuff, not too useful in this program though.


HACK MENU

This is where all the soundfile processing is. Most of the things in this menu involve a lot of calculations, and take time! SoundHack takes over your Mac to do these, so if it appears that your Mac has frozen up, it probably hasn't. Spectral Mutation is the slowest of these functions, so have patience.

In most of these functions, sound is processed in blocks (a group of samples). After each block is processed you will see the soundfile time window update. You will be able to pause or stop a process between blocks, but not while a block is being processed.

In the functions which process sound spectrally, each block is analyzed for amplitude and phase at a number of frequency bands. The bands are spaced evenly between 0Hz (DC) and the Nyquist frequency (half the sample rate). For example, if you choose 1024 bands and your sample rate is 44100, you will have a new frequency band every 21.53 Hz (44100 / (1024 x 2)).


soundhack doc top, table of contents
(Command - H) Header Change...

Allows you to change the sample rate, number or channels, and data format of the selected soundfile. If you open a headerless file, you should use this dialog to set things properly before saving a copy.


soundhack doc top, table of contents
(Command - L) Loops & Markers...

This menu allows you to change loop pointers and marker locations for soundfiles in AIFF, AIFC and Sound Designer II formats. It also allows you to change AIFF/AIFC specific information.


soundhack doc top, table of contents
(Command - B) Binaural Filter...

This process allows you process a monaural soundfile (creating a stereo file). The result is a signal at a simulated position around the head. This is done by using a HRTF (head related transfer function) as a filter, a function for each position around the head.

To use the binaural filter, enter the desired position in the Angle dialog box (in degrees) or click the appropriate radio button. This processing module has filter data for 12 positions. If you enter an angle between 2 positions you will get a filter which is the mix of the 2 filters around it. Check the Normalize box if you want the output to be normalized (brought to the loudest possible level) after computation.

The Moving Angle box will allow you to do moving spatialization.

These HRTFs were obtained by Durand R. Begault, using methods described in "3-D Sound for Virtual Reality and Multimedia" (Academic Press: ISBN 0-12-084735-3).


soundhack doc top, table of contents
(Command - C) Convolution...

This process takes 2 soundfiles: an input (the selected soundfile) and an impulse response file. It multiplies the spectra of the 2 files together, producing a new soundfile. The effect is a type of cross-synthesis, in which common frequencies are reinforced. In this implementation of convolution the sound is processed block by block, with each block as large as the impulse response. The Length Used window allows you to designate how much of the impulse response file to use. The kilobytes Needed To Process File number is an estimate of the application memory size that needs to be set for processing. If you want to use large impulse responses, that is, convolutions which cause this number to go over 1200 (the default size), you will have to quit SoundHack and reset the application memory size.

SoundHack attempts to automatically scale the amplitude of filter gain, but this value is impossible to predict. The Gain buttons gives you additional control over this. Set it to 42 dB for most cases, but if the input and impulse response have similar spectra, extreme resonance will occur and the button should be set to 24 dB or 0 dB. However, the best way to deal with the uncertain gain problem in convolution is to avoid it altogether. Save the output in NeXT/Sun or BICSF floating point format, which has enormous dynamic range, then use the Gain... module to normalize it back to an integer format.

Checking the Ring Modulate box allows for ring modulation (or convolution in frequency) between 2 soundfiles. The Brighten box applies a simple +6dB per octave high-pass filter to the impulse. This is useful as most natural sounds have a roll-off from 6-12 dB per octave. Convolve two of these sounds and your result will have a roll-off from 12-24 dB per octave, much too dull. Brighten is a simple (probably too simple) fix for this.

Checking the Window popup will cause SoundHack to apply the selected envelope onto the impulse before convolution, resulting in a smoother convolution. A smoothing window is desirable when performing a moving impulse response convolution (described below), since the impulse response will be changing for each block of samples processed. This is also true for moving ring modulation. The triangular window is probably the best for smoothing, a rectangular window is the same as no window at all. Check the Normalize box if you want the output to be normalized after computation.

The Moving box allows you to perform a moving impulse response convolution. In this process a window moves through the impulse response file, selecting a new impulse response after every block of processing. The window size is set in the Length Used field. This window moves through the impulse response file at a rate which insures that the ends of the impulse response file and the input file are reached at the same time. For example, if your input file is 10 seconds long and your impulse response file is 5 seconds long and you have set Length Used to 1.0 for 1 second impulse response windows, the process would look something like this:

The first 1.0 second frame of the input file (A) will be convolved with the first 1.0 second frame of the impulse response file (ab). Then the window on the input file is moved 1.0 second forward to B, but the window on the impulse response file is moved only 0.5 seconds to bc. This is so both files will finish at the same time. (Actually, the impulse response file reaches the end first and the last impulse response is zero-padded). In the other case, when the impulse response file is longer than the soundfile, sections of the impulse response file will be skipped over. It is a good idea to save the output in a floating point format if using the moving impulse. Since the impulse is continually changing, the scaling is unpredictable.


soundhack doc top, table of contents, next screen - gain to mutation