an instrument for the BeOS.
version 1.0
by douglas irving repetto
squiggy is a real-time spectral manipulation tool for the BeOS. with it you can create, record, manipulate and play back sound-images called spectrograms.
squiggy is meant to be an instrument for live performance. with that in mind, i have gone for speed over accuracy in writing the processing routines. some of them are pretty noisy. become one with the pain. i've also chosen to go with a largely keyboard based interface. this gives squiggy a bit of a learning curve (you have to learn a bunch of key combinations) but i think it's worthwhile. you might want to keep "squiggy keyboard reference" (Styled Edit) or "skr.html" (NetPositive) open while learning to play squiggy.
the image in the black window is called a spectrogram (or sometimes sonogram.) it is a way of displaying information about the time-varying spectrum (frequency content) of a sound. when you draw or record a spectrogram, what you end up with is a graph that shows how much energy (amplitude) the sound has in a number of frequency regions called bands. try this: record yourself counting or whistling, then try to associate the resulting image with the sound you are hearing. it's also nice to record from a CD and just watch as the sound passes by. spectrograms are often quite beautiful.
y axis is frequency.
x axis is time.
grey level is magnitude (amplitude).
use the mouse to draw in the black window.
number keys set the grey level (amplitude).
press 'e' to switch to the eraser.
press it again or press a number to resume drawing.
press 'E' to erase the entire image
press the spacebar to toggle playback on and off.
press return to reset the playback position to the beginning of the image.
press 'r' to record a spectrogram into the window (using the mic or cd inputs on your computer - you can set which one to use in the "Sound" preferences panel - i've found that the input fader should be all the way down to avoid distortion. the "Aux" setting will not work. see "other stuff" below.)
press 'r' again to stop recording.
now you can draw on/manipulate the spectrogram while it's playing!
press the function keys F1 - F12 to switch between different stored images. you can have up to 12 spectrograms/drawings stored at a time. the images are automagically stored when you switch. F11 and F12 are special "scratch" images - when you switch to them, the last image you were on will continue playing, although you will be seeing the scratch image. this allows you to work on an image without your changes being played immediately. other than not playing, F11 and F12 act just like the others.
press 'a' to turn on autoswitching. autoswitching will automatically switch to the next image when the current image is done playing. press 'a' again to turn autoswitching off.
press 'A' to turn on randomswitching. randomswitching will randomly switch between images. press 'A' again to turn randomswitching off.
autoswitching and randomswitching can be used while recording -> this allows you to make one (or several) longer recording(s).
press the command key (the key right next to the space bar on most machines) and click with the mouse to set the current 'playback' point. now if you keep the button down and move the mouse you can 'scrub' through the image! (this may also work with the right mouse button - i don't have a right mouse button right now, so i can't test it out . . .)
press the option (alt?) key and click the mouse to explore the image with the pointer. information about the frequency/magnitude/location of the pixels you touch is displayed in the info window.
operations you can perform on images include:
neat things to try:
squiggy was written and tested on an apple powermac 8500/120. it should run great on faster machines, but i'm not sure how it will fair on slower ones, like the dual 66Mhz BeBoxen.
squiggy sometimes crashes if you open the CD player application or the Sound preferences panel while squiggy is running. to avoid this, open the CD player/Sound panel before launching squiggy. i'm looking into this problem.
you can use squiggy while other sound programs are running, although i've found this to be fairly flaky. i'm investigating this one too.
performing operations on images with lots of energy WILL result in some nasty clipping. for now the lame answer is to gain-down ('(')your spectrograms before operating on them. i'm working on this. hmmm. some clipping is also caused by the arbitrary nature of many of the processes (it's possible to create representations of sounds that are 'impossible' - upon resynthesis, these sounds will usually cause clipping.)
you'll probably want to set the input fader in the Sound preferences panel all the way to the bottom, unless you're recording very soft sounds or you like harsh digital noise (clipping).
the line-level inputs (RCA jacks) don't work on powermacs running the BeOS. this is a major bummer, but it doesn't look like Be is going to be able to fix it. you can use the mic input of your mac as a line-level input by using a regular stereo mini-plug instead of the custom mac mic thingy. you'll need to work out some funky adapter chain. if you do select "Aux" in the Sound preferences panel, unpredictable things may happen.
squiggy is a memory hog! you'll need around 22MB to run squiggy. that's right, 22MB. eleven times four squared divided by eight. 22. or more, depending on what else i add . . . i don't recommend trying to run squiggy on a machine with less than 32MB of ram. squiggy seems to crash sometimes in low memory situations. i don't yet know why.
squiggy is a cpu hog when recording.
license:
squiggy is "artware" - that is, if you use and like it, send me something you've made.
please ask me before including squiggy on any sort of software compilations, CD's, etc.
contact info:
douglas irving repetto
email: glmrboy@shoko.calarts.edu
email: douglas.repetto@dartmouth.edu
web: http://dappu.calarts.edu/~glmrboy
other BeOS software i've written:
SineClock
allPossibleImages
Yesh!
permanent land:
2046 bellemead ave
havertown, pa
19083-2221 USA
temporary land (good at least thru 1999):
6187 hinman
electro-acoustic music
hanover, n.h.
03755 USA
acknowledgments:
tom erbe, larry polansky and many people at the bregman electro-acoustic music studio at dartmouth college have made valuable contributions/suggestions during squiggy's youth. thanks!
references:
much of squiggy was inspired by tom erbe's SoundHack program for the macintosh, especially his QT-coder. Spectral Assistant, which is included in the SoundHack download, is a great place to start mucking around with writing spectral domain processing algorithms.
A Digital Signal Processing Primer by Ken Steiglitz is a good place to learn about phasors, the FFT, digital filters, etc.
Curtis Rhoads' gigantic book, A Computer Music Tutorial has interesting information on some other attempts at frequency domain sound editors. there is also lots of information available on the web in relation to image->sound conversion. wouldn't it be cool if you could hook squiggy up to a video camera . . .
lots more that i can't think of this late at night.
the Be Operating System and the BeBook. QED.
to do (in some sort of 3/4 arbitrary order):
change history:
february 26, 1998: squiggy 1.0 released. yeeehaw!
february 16, 1998: gave up on change history. too much to list!
january 6, 1998: added more features, processes, autoplay, etc.
december 15, 1997: lots of changes/additions. too many to mention. freesh! working on optimizations.
december 7, 1997: totally re-wrote squiggy, threw out lots of unused/confused code, simplified everything! added recording, scrubbing, image storage
december 3, 1997: updated to do list
november 30, 1997: pre-alpha sooper not-done version 0.0.1 release