Draw Function...

This dialog box allows for the creation of control functions. It actually creates a function of 400 entries (one per pixel) which is then interpolated on during processing. The function controls either binaural position, mutation index, degree of time stretching, amount of pitch shifting, or degree of varispeed depending on which process you are using.

To create a control function, you can simply draw in the function window (your mouse position is continually tracked and translated into relevant units) or click on one of the preset waveform buttons. The waveform buttons will fill the function with as many cycles as are set in the Cycles: box. If you click a waveform after there is something already in the function window, the waveform will modulate the function, rather than replace it. The Clear button will allow you to start with a clean slate. The Reverse button will time-reverse the function. The Invert button will flip it. It Shift button will rotate the function by up to 399 positions. The Smooth button will average adjacent entries in the function, this smoothing wraps around the beginning and end of the function, so watch out.

The boxes in the upper left and lower left corners allow a very primitive type of zooming. There is no facility for selecting, copy, paste or cut. One can read or write control functions as soundfiles by clicking the Read and Write buttons. The Time:legend refers to the time in the input soundfile and the other legend (Time stretch:) is updated depending on how the control function is applied.


soundhack doc top, table of contents
SOUNDFILE MENU

This simply allows you to select between the open soundfiles. The first ten soundfiles open are given command key equivalents (Command - 1 to Command - 0).


soundhack doc top, table of contents
CONTROL MENU

Show Signal

This will bring up a window to show the sound whenever SoundHack reads or writes sound (except during file copying and normalization). There are separate windows available for all active soundfiles.

Show Spectrum

This will bring up a window to show the spectral data in all spectral operations (most everything but varispeed, which I do in the time domain) There are separate windows available for all active soundfiles.

Show Sonogram

This will also show spectral information but over time. Intensity is represented by different colors where purple-red is the lowest intensity, green is mid intensity and bright red is the highest intensity. This display will slow down any Macintosh dramatically.


soundhack doc top, table of contents
Pause Process

This allows you to pause during a long process. This is especially useful if you would like to here the sound you have processed so far. If you are running a convolution, it sometimes takes a while to pause (up to 3 minutes on a slow Mac II).

Continue Process

This will resume processing where you left off.

Stop Process

This will kill your process and close the output soundfile.


soundhack doc top, table of contents
Load Settings...

This loads a previously created settings file. This is also done automatically on startup to the "SoundHack Pref" file in the ":System Folder:Preferences" folder.

Save Settings...

This will create a settings file which contains the current settings from the binaural, convolution, spectral analysis, spectral dynamics, mutation, phase vocoder, varispeed, gain and preferences dialog panels. This is done automatically when you quit SoundHack to the "SoundHack Pref" file in the ":System Folder:Preferences" folder.

Default Settings

This will reset all internal settings to a default set. Recommended if you suspect your "SoundHack Pref" file is corrupt.

Preferences...

This allows you to set a few things. You can set SoundHack to automatically play a soundfile when it is opened. This is a very nice way to set things if you are using SoundHack as your web browser helper application. If you set an editor, then you can use the Close & Edit command (described earlier). The Default File Type, when set, will give you the selected file type and format whenever you create a new soundfile.


soundhack doc top, table of contents
FUTURE PLANS
1.0
SoundHack is finished. All copies of the source code are destroyed. Tom and Betsy take a holiday.
.90
Last major release, only bug-fixes and minor updates from now on. Make a suggestion for final features. Time is running out!
.89
AppleEvents.
.88
Batching.

soundhack doc top, table of contents
BUG FIXES AND REVISIONS
.87
Spectral files are now treated as soundfiles. Simple spectral analysis/resynthsis added. Quick normalization added. Many cosmetic/GUI changes. New binaural filters added. Spectral dynamics will trigger on an averaged ampitude value (good for hiss removal). Draw function debugged for the umpteenth time. Preferences are now savable.
.86
The shareware version now is just the 68k version. Multiple soundfiles supported. Another sample rate conversion bug (errant pointer deallocation) squashed. CD Audio import added. Channel splitting added.
.85
Soundfile playback now works for all soundfiles which are 8-bit (twos, raw or µLaw) or 16-bit linear (twos). The apple events for open and quit application added. Spectral dynamics fixed again.
.84
Separate display windows for most signals added. Sonogram window added. Offscreen drawing keeps windows updated. Most all dialogs now modeless.
.83
Popup bugs fixed, convolution brightening added.
.82
Soundfile recording has been added.
.815
24 and 32 bit AIFF and AIFC supported.
.81
Spectral extraction added. Spectral dynamics now allows threshold to be set relative to the peak amplitude in a block of sound.
.803-6
Various bug fixes. A full disk now stops any process. Samples which are too loud now clip instead of going out of range. Greater post convolution gain is now possible. Normalization no longer clips. The packmode no longer changes when a new soundfile type is selected. Mixed stereo/mono mutation no longer crashes!
.80
Split into shareware (0.74) and commercial (0.80) versions. Added Mutation functions. Ported to the Power Macintosh.
.74
Fixed early ending sample rate conversion problem. Fixed the spectral display. Added attack/decay time to spectral dynamics. A moving binaural effect is added. Allow raw data files to have text packmode and text files to have raw packmodes. Fixed various GUI complaints (0.743) Double-clicked soundfiles now open correctly in all versions.
.73
Fixed varispeed clicking for the third time. Fixed the output soundfile dialog. Ported the code from Think C to Codewarrior. Spectral display is now broken and needs to be redone (disabled for the present).
.72
Fixed 16 bit Microsoft RIFF/WAVE file bug.
.71
Fixed a minor bug which caused spectral dynamics crashing. Also fixed a typo (thank you Phil Burk).
.70
Added spectral dynamics process. Added AIFC and Microsoft WAVE file support. Added 4-bit ADPCM. Opens double-clicked documents. More types show up in "Open" menu item. Fixed stupid error about number of bands in the phase vocoder and the spectral dynamics processor. It used to refer to the number of FFT points used, it now correctly refers to the number of filter bands used.
.68
Added import and export of SND resources. Limited soundfile playback to AIFF and AIFC until Apple comes up with a stable sound manager. Sound Manager 3.0 is required for playback of 16-bit files.Added a limited spectral gate to the phase vocoder. Fixed old bug in pitch shifting.
.67
Added soundfile playback.
.66
Added windowing selection for both convolution and the phase vocoder. Added "Vary by Pitch" /"Vary by Scale" selection in varispeed.
.65
Fixed crashing at the end of long varispeed calculations, cleaned up memory allocation (especially for convolution), added ring modulation (spectral convolution), cleaned up dialog annoyances. Made output window resizable, and made it white on black (like a scope). Added bibliography screen.
.64
Added varispeed processing, added many things to the function dialog.
.63
Added TEXT soundfile format. Added interpolation, sinc and number of cycles to function dialog. Added ramp enveloping of impulse to convolution. Added popup menus.
.62
Added function window for multirate phase vocoder.
.61
Sped up pitch transposition significantly, allowed pitch transposition by semitone and time warping by desired length.
.60
Added the phase vocoder, phase vocoder Csound analysis and show output. Fixed problem with normalization after moving convolution.
.59
Added moving convolution.
.58
Fixed problems with 8-bit AIFF files.
.57
AIFF files used to read everything from SSND chunk to EOF, now only SSND chunk is read. The Binaural processor often destroyed AIFF headers, I think I have this fixed. DSP Designer files are now written as well as read (though I have no way of checking, please DSP Designer users, give me feedback).
.56
Filter files are now closed properly after convolution.
.55
Normalization feature disabled Binaural filtering, now fixed. Filter sensitivity added to Convolve.
.54
Normalize after processing feature added. Dialogs adjusted for small monitors.
.5
Gain change added, 8-bit linear, 8-bit mulaw and 32-bit float added. (Jan 1992)
.4
Binaural filtering and process control added.
.3
Convolution and NeXT/Sun file formats added.
.2
Sound Designer II files and Header change added.
.1
First release of SoundHack, converts AIFF files to IRCAM and back. (Fall 1991?)

soundhack doc top, table of contents
BIBLIOGRAPHY

Apple Computer, Inc., Inside Macintosh, Volume 1-6, Addison Wesley, Reading, Mass., 1985-91.
Begault, Durand R., Control of Auditory Distance, P.H.D. dissertation, University of California, San Diego, 1987.
Begault, Durand R., 3-D sound for virtual reality and multimedia,Academic Press Professional, Cambridge, MA, 1994.
Blauert, J., Spatial Hearing, MIT Press, Cambridge, Mass., 1983.
Dolson, Mark, "The Phase Vocoder: A Tutorial", Computer Music Journal 10:4, 1986.
Ellis, Dan, "pvanal.c", part of the Csound distribution, MIT, 1991.
Gordon, J. W. and Strawn, J., "An Introduction to the Phase Vocoder", Digital Audio Signal Processing: An Anthology, editor J. Strawn, Kaufmann, Los Altos, Calif., 1985.
Mark, David and Reed, Cartwright, Macintosh C Programming PRIMER, Volume I, Addison Wesley, Reading, Mass., 1989.
Moore, F. Richard Elements of Computer Music, Prentice Hall, Englewood Cliffs, NJ, 1990.
Polansky, L. "More on Morphological Mutations: Recent Techniques and Developments,"Proceedings of the ICMC., San Jose, 1992.
Polansky, L. and McKinney, M. "Morphological Mutation Functions: Applications to Motivic Transformations and to a New Class of Cross-Synthesis Techniques." Proceedings of the ICMC. Montreal, 1991.
Reed, C. E. and Passin, T. B., Signal Processing in C, John Wiley, New York, NY, 1992.
Settel, Z. and Lippe, C. "Real-time Musical Applications using FFT-based Resynthesis", Proceedings of the 1994 International Computer Music Conference. Diem Aarhus, Denmark 1994.
Vaseghi, S. and Frayling-Cork, R., "Restoration of Old Gramophone Recordings", Journal of the AES, 40:10, 1992.


soundhack doc top, table of contents
ACKNOWLEDGEMENTS

Larry Polansky for his mutation functions, for helping me edit this document. and for his unending encouragement, criticism and support.

Dr. Durand Begault of NASA-Ames for letting me use his binaural filter coefficients.

Dan Ellis of MIT's Media Lab for helping me with the Csound analysis feature.

Zack Settel for relating his work on spectral extraction to me.

Scott Morgan and Geoff Hufford for all their Macintosh toolbox help.

Tim Walters, Jeanne Parson, Kent Clelland, Vincent Carte, George Taylor, Zach Belica, Phil Burk, Curtis Roads, Richard Boulanger and many others for their many comments, bug reports and encouragement.

The Bregman Electro-Acoustic Music Studio at Dartmouth College for sponsoring my initial Power Macintosh development.

The Center for Contemporary Music at Mills College and the CalArts School of Music for sponsoring all of the rest of my activities.

All the wonderful people who sent me their music including:

~ Marc Battier ~ Philippe Blanchard ~ Gregory G Booth ~ Chris Brown ~ Ray Brunelle ~ Kim Cascone ~ Xopher Davidson ~ Bruno Degazio ~ Rohan De Livera ~ Paul DeMarinus ~ John Duesenberry ~ Ambrose Field ~ Howard Fredrics ~ Chris Grigg ~ Ray Guillette ~ Jose Halac ~ Jeff Hass ~ Patrick Heilman ~ Brian Hill ~ Steev Hise ~ Naut Humon ~ John Hudak ~ Øivind Idso ~ Jim Keiser ~ Richard Lerman ~ Gregory Lenczycki ~ Eric Lyon ~ A. M. McKenzie ~ Chris Meyer ~ Steve Miller ~ Diego Minciacchi ~ Jean-Louis Morgere ~ Gary Lee Nelson ~ Bob Ostertag ~ John Oswald ~ Michel Pascal ~ Maggi Payne ~ Heather Perkins ~ Richard Pinhas ~ John Pospisil ~ Trent Reznor ~ Jøran Rudi ~ Bruno Spoerri ~ Hans Vallden ~ Jeremy Wells ~ Micheal White ~ Beth Wiemann ~ Bob Willey ~ Erling Wold ~


soundhack doc top, table of contents