overSYTE 0.1.1 README ©1995 Ross Bencina email: rossb@klang.latrobe.edu.au This file tells you how to use overSYTE 0.1.1. overSYTE is part of a larger scheme of things called RossTools, see the file RossTools0.1README for a more general rave about RossTools. ***A LITTLE HISTORYÉ overSYTE was originally written in September 1995 as a live performance processor for use in a concert organised by the Astra music society in Mebourne, Australia. In performance I took real time audio (provided by three singers at separate microphones) and processed the sound, which was instantaneously projected back at the performers and audience. The piece was developed as interactive improvisation. More recently, with the addition of sound file support I have been using the processor as a studio tool. I have a number of other real time processes that I plan to release real soon now. The RossTools signal processing shell and the overSYTE processing module are developed exclusively in C++ with Metrowerks Code Warrior. Using overSYTE: -------------- When you first start the application two windows will appear, the larger of the two (with all those sliders) is the Processing Controls window, the other (with the tape transport buttons) is the I/O window. **CONFIGURING SOUND INPUT: If you can set up an external audio input (such as a microphone or CD) it will be routed through the processor when "Sound In" is selected in the popup in the input section of the I/O window. You can select which device you would like to take input from with from the Sound control panel, it is advised that you turn "playthrough" off, otherwise you will always hear the unprocessed sound as well as the processed sound. [NOTE: Sound i/o using non-apple sound drivers has not been tested and is known not to work with the Digidesign AMII card, this may be fixed sometime] To process a sound file instead of an external source, select "File" from the input popup menu, you can then press the "Select.." button in the input section. NOTE: The input file should be a SoundDesigner II format 44.1k mono file. The sound will loop infinitely while processing is active. Note that the sound can be any length, as only a small portion is loaded off disk at any time. The easiest way to get started is to configure the Sound control panel to take input from the CD (no play through), insert a CD, start up the CD player DA and set the CD playing (with the volume up full). Set the input popup in the I/O window to "Sound In" if it isn't already; the input level meter should reflect any incoming signal. You can switch from "Sound In" to "File" at any time, even while the process is running. **CONFIGURING SOUND OUTPUT: To start tho processing, hit the record button (the one with the circular icon) this will drop RossTools into record ready mode. The sound probably won't sound very processed as the default parameters for overSYTE output the unprocessed sound. You can create a file to record the output into with the "SelectÉ" button in the output section of the I/O window. Once you have done this, toggling the play button (it's green if you are in record ready mode) will start and stop recording to the soundfile. NOTE: The fast forward and rewind buttons don't do anything yet, the play button is only effective in record-ready mode. Clicking the stop button stop will halt any recording and turn sound output off. ***DISK TIMEOUT INDICATORS: If your disks are too slow to support the throughput required for real time audio, or if the CPU can't handle the disk access and signal processing requirements of the running process, red bullets may appear next to the file name(s) of the files which have slipped behind real time. The bullets will remain present for half a second after the last timeout occurred. On all but the slowest Power Macintoshes, these indicators should only appear when the process is hogging the CPU. (This can occur with the current overSYTE implementation ). or when you have slow or badly fragmented disks. **PRESETS: The presets window is currently under construction, please excuse window geometry anomalies. [ie. if the window is too small the list scroll bars are munged] ***RECALLING PRESETS: An example preset file "overSYTE Presets" is included, open it using the "OpenÉ" command in the "File" menu. A Presets window will appear on the screen (You may need to reposition it to see all of the window). There are two lists on the left hand side of the window, the "Parameters" list and the "Presets" list. The parameters list is a check list which allows you to select which parameters you would like to restore. For now, just select them all by clicking and dragging down the list until all the parameters are checked. You can select and deselect individual parameters by clicking on them. (note that the list scrolls). The parameters in the check list correspond to the parameter sliders in the Processing Controls window. The presets list is a list of presets available in the current file. Double clicking a preset in the list restores a previously saved set of parameters (Remember, only the parameters checked in the parameters checklist will be restored). You can check out some of the weird and wacky processing capabilities of overSYTE by restoring presets from the "overSYTE Presets" file. Note that the sliders in the Processing Controls window change to reflect the values recalled from preset. ***PRESET INTERPOLATOR: By now you're probably wondering what the big white rectangle at the left of the Presets window does. It's the preset interpolator, allowing you to smoothly move between up to four presets. The popup menus at the corners of the rectangle select the presets for each corner of the rectangle. Clicking and dragging in the rectangle smoothly interpolates between different presets. As with restoring presets, only the parameters checked in the "Parameters:" list will be altered. The "current settings" item in the interpolator popups indicates that the corresponding corner of the rectangle will take the values of the parameter settings at the time when the mouse is clicked in the interpolator rectangle. I have used this in performance when I have been tweaking the parameters manually in the Process Control window and then wanted to move to one of my pre-created preset settings. It's a bit hard to explain the preset interpolator in words, so just place four obviously different presets at the corners of the rectangle and have a play. ***STORING PRESETS: When you have some parameter settings you like (as a result of tweaking the sliders in the Process Control window or perhaps an intermediate setting created using the preset interpolator) you can store the preset by hitting the store button. Note that all of the parameter settings are stored (not just those in the Parameters check list). You can edit the name of a preset by clicking on it's name once in the presets list and editing it in the field below the Presets list, press return to set the new name (otherwise the name will revert to what it was previously when you click somewhere else). There is no mechanism for deleting presets at the moment. (The preset files are just text files, so you could open them up with a text editor and cut and paste if you need to...but I'll fix that soon). **PROCESS CONTROL WINDOW This is the window with all the sliders, I'll explain what the parameters which these sliders are changing do in the next section. Here I'll just describe the operation of the sliders. In overSYTE you will notice that there are two types of sliders, ones with a single "thumb" and ones with a dual "thumb". Dragging anywhere inside the slider (the shadowed box) moves the slider up or down, holding the option key while dragging slows the slider motion to a tenth of it's usual speed (this is useful for precise tweaking). The number or numbers above the sliders indicate their actual values (this varies from parameter to parameter). The sliders with two thumbs have additional properties, they are used for "Tendency mask" parameters, these parameters dynamically take random values between a minimum and maximum (the two thumbs indicate the minimum and maximum values). Normally, clicking on these tendency mask sliders moves the minimum and maximum by the same amount in the same direction. As with the normal single value sliders, holding down the option key slows the rate of change to one tenth. Additionally, the shift key allows the mouse to move only the maximum, the command key moves only the minimum and depressing both the shift and command keys together moves the minimum and maximum in opposite directions at the same time. You can change the combination of depressed keys while you are dragging - there's no need to release and re-press the mouse button when you change key combinations. **THE OVERSYTE PROCESSOR The overSYTE processing architecture consists of three separate ( more or less useful) signal processors connected in series: -trapezoidal window delay-tap granulator -(arguably problematic) bandpass filter -sine modulated ring modulator The parameters from left to right in the Processor Controls window are: ( names in square braces are those shown above the sliders, units or ranges are in brackets ) --GRANULATOR PARAMETERS: *Grain tap delay [del] (seconds) *Grain interonset time [iot] (milliseconds) *Grain duration [gdur] (milliseconds) *Grain shape [shape] ( .001 - .999) *Grain skew [skew] ( .1 - .9) *Transposition factor [trans] ( .25 - 4.) *Feedback [fb] (0. - 1.1) *Granulator wet/dry mix [gmix] (0. - 1.) --BANDPASS FILTER PARAMETERS *Center frequency [cf] (Hz) *Bandwidth [bw] (Hz) *Gain [g] (dB - sort of?) --RING MODULATOR *Ring modulation freq [rmf] (Hz) *Ring modulation wet/dry mix [rmmix] (0. - 1.) --GLOBAL Output amplitude [amp] (0. - 4. , 1. is unity most of the time) The effects of the filter and ring modulator parameters on the input signal should be pretty obvious, you can always turn the Granulator wet/dry mix to 0 and vary the parameters to see what happens. Note that the gain structure of the filter is bogus, tight bandwidths with high gains don't give enough signal under most circumstances...I'll fix it soon. The granulator parameters are a bit less obvious, I'll try to explain it in words, some diagrams would help. The algorithm is similar to that described by Barry Truax in: Truax, B. 1988. "Real-Time Granular Synthesis with a Digital Signal Processor." Computer Music Journal 12(2):14-26. My algorithm departs from Truax's in that voice allocation is dynamic, so there is no real notion of independent "voices", or parallel streams of grains. The granulator mixes together many short segments of an input delay line, enveloping them with a trapezoidal amplitude envelopes and optionally mixing some of this signal back into the input[fb]. Each of these enveloped delay taps is a "grain". With the exception of [iot] , [fb] and [gmix] the parameters of the granulator pertain to the constitution of each grain. The interonset time [iot] is the number of milliseconds between the start of one grain and the start of the next. You can overlap about 10 grains (ie iot equals gdur/10) before weird things start to happen, this is mainly because I need to do a bit more work on the scheduling algorithm. The other parameters are as follows: [del] determines how far back in the input delay line the grains are taken from. [gdur] The length of the grain envelope in milliseconds [shape] Whether the grain envelope is rectangular (0) or triangular (1) or somewhere in between. [skew] .5 means the attack and decay of the grain are the same duration. <.5 means faster attack, >.5 means faster decay. Values not equal to .5 work best with more triangular grains. [trans] This scales the pitch of the input: 1. is unity, 2. is an octave up, .5 a octave down etc. [gmix] The mix between the output of the granulator and the dry input signal. 0. is no granulator, 1. is all granulator. --- OK, I think that's it. If you have any comments, questions, death threats, job offers etc. feel free to contact me. rossb@audiomulch.com Ross Bencina - 30/10/95