kyma•tweaky . Know . CrossFilter

CrossFilter

A cross-synthesis algorithm developed by PeteJohnston

The CrossFilter crosses an Input (excitation) with a Response (a signal that is interpreted as an object's response to being hit). Since hitting an object excites many of its modes of vibration (its resonances), you can use that information to create a filter having the same resonances as that object. Once you have the filter, you can use it to modify the spectrum of any Input signal.

There are two flavors:

The parameters of the new CrossFilter are:

Input

The Input is heard through the filter defined by the Response.

Response

Each time the value of Capture becomes 1, the output of Response is captured in internal memory for ResponseDuration seconds. The captured signal is then interpreted as if it were the response of some object (e.g. a resonator, a room, a piece of wood or metal) to being struck or hit by an object, a single pulse, or a short duration broadband signal. The resulting filter is then used to filter the Input.

Capture

When this value changes from zero to a positive value, it captures the Response in memory for the length of time given in ResponseDuration. Whenever you change the signal that is captured in memory, you are also changing the characteristics of the filter.

If you trigger the Capture while the Input is playing, you will hear the effects of the old filter on the CaptureDuration seconds of input that came in before the trigger occurred; this is mixed in with the effects of the new filter on the input that comes in after the trigger. If you silence the input for ResponseDuration seconds before triggering the Capture, then you will hear the effects of the new filter only.

NOTE: The duration between Capture triggers should be longer than the ResponseDuration.

ResponseDuration

The ResponseDuration specifies the length of time that the Response should be recorded each time Capture is triggered. (For example, if ResponseDuration is set to 0.1 s, then a tenth of a second of the Response input is recorded each time there is a trigger in the Capture parameter.) The captured portion of the Response input is then interpreted as the sonic response of some object to being struck. Note that if your Response is nonzero, the CrossFilter will extend the duration of each impulse in the Input by ResponseDuration seconds. For example, if your Input is a live microphone and you clap into the microphone, each clap will last for ResponseDuration seconds when it passes through the CrossFilter.

If the ResponseDuration you request results in an 'out of real time' message, try reducing the ResponseDuration and/or unchecking Stereo. Alternatively, you can record the output of this Sound to disk by checking the NotRealtime box and using Record to disk in the Action menu.

To request the longest possible ResponseDuration given the current sample rate and the number of processors, use the word

maximum

Checking Stereo will decrease the maximum ResponseDuration. (To find out what actual maximum duration in seconds is for your configuration, evaluate one of the following expressions using Ctrl+Y):

SignalProcessor maxResponseDuration
SignalProcessor maxResponseDurationStereo
SignalProcessor maxResponseDurationShort
SignalProcessor maxResponseDurationStereoShort

Level

This is an overall output level of Input after it has gone through the filter.

Start and End

Once the Response has been captured in memory, you can use subparts of that recording as the filter response by changing Start and/or End. The beginning of the recorded response is at 0, and the end of the recorded response is at 1. (To compute the actual start and end times in seconds, multiply the value of Start and End by the time in the ResponseDuration field.) For example, if you set the value of End to a hot value !End, you can shorten the response time of the computed filter while the Sound is playing. By setting both Start and End to hot values, you can move a "window" around within the captured Response recording and use that small interval of time as the response.

Stereo

Check the Stereo box if you have a stereo Response and would like to maintain the difference between left and right channels. When this box is unchecked, the Response is treated as a mono mix of its left and right channels. The Input is always treated as a mono mix of its left and right channels. To independently process the channels of a stereo Input, use the CrossFilter_Long-Stereo example from the Prototypes. NOTE: Checking this box reduces the maximum possible length of the ResponseDuration.

NotRealtime

Check this box if the ResponseDuration you have requested results in an "out of realtime" message. This should allow you to use the Action menu to record the output of this Sound to disk. (However, if you see the "out of SRAM" message, you will have to reduce the ResponseDuration or uncheck the Stereo box.)


Thanks to Beta-testers Eckard Vossas, Bruno Liberda, Edmund Eagan, Robert Jarvis, John Paul Jones, Hamilton Sterling, Tobias Enhus, Camille Troillard, Karl Mousseau, and Jesus Gestoso for helping us put this new Sound through its paces, and special thanks to Pete Johnston for the implementation of his algorithm!

-- CarlaScaletti - 04 Jul 2005

Discussion and Questions

----- Revision r1.6 - 07 Jul 2005 - 16:58 GMT - CarlaScaletti
Copyright © 1999-2014 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding kyma•tweaky? Send feedback.