|
|
|
|
Swing Bridge (by Reynold Weidenaar)
|
|
|
"Swing Bridge", written by Reynold Weidenaar in 1997, is originally orchestrated for Clarinet, Audio Processing, and Video with Stereo Sound. I have created a SuperCollider patch to control the audio processing required by this piece.
Mr. Weidenaar's Original Electronic Setup
In the score, Weidenaar gives a detailed description of the audio processing that is required. He does not specify how the effects are to be produced although he makes reference to a digital processor that he used while writing the piece. There are four audio effects that are used through the piece and they are described briefly below:
- Digital Reverb: 1.05 second decay time.
- Digital Reverb: 2.1 second decay time.
- 2-Tap Delay: feedback at 150 ms and 300 ms.
- Harmonizer/Chorus/Delay: Perfect 4th + Perfect 5th below the original note.
Why Would I...?
In autumn of 2000, a doctoral student at Arizona State University was going to perform this piece for both her own recital and for the New Music Ensemble recital. Neither the clarinet studio nor the Electronic Music studio had a digital sound-effect processor that was capable of all the effects (namely the harmonizer effect). The Electronic Music studio and the New Music Ensemble is directed by Dr. Glenn Hackbarth and he explained to me the details of the effects and suggested that Supercollider could possibly be used to process the sound according to Weidenaar's instructions. He was right!
The SuperCollider Patch
The Goal
The Swing Bridge score details the types of audio-processing that is used in the piece. There are essentially four different sound effects used and I needed to create a SuperCollider patch to do the following:
Take input from a standard mixer through the audio input on a Macintosh Powerbook.
Provide the necessary sound effects.
Provide the user with some method of turning the effects on and off.
Provide the user with some method of switching between effects (as the score indicates).
This patch in its current form uses the computer's mouse to switch between effects; therefore, it is not practical for the clarinetist to manage the sound effects by herself. If I had more time while writing the patch and/or if I had access to the score sooner, I may have written a sub-routine in the patch to allow the clarinetist to switch on the effects via MIDI foot-pedal.
The Code
(
// Super Collider version 2.2.9 or higher.
// This document was created by Dave Sabine. November 2000.
// It was intended to be used for Allison Storochyk's
// performance of "Swing Bridge" at Arizona State university.
// detailed information/instructions can be found at
// http://www.davesabine.com/
// System Requirements
// Macintosh Computer equipped with Super Collider or SCPlay
// by James McCartney of http://www.audiosynth.com. I highly
// recommend using at least a Mac G4. You will experience
// latency using a slower computer (the signal is delayed
// up to 3/4 of a second on a Mac G3.
// For technical information regarding Super Collider and
// your Macintosh, please see http://www.audiosynth.com.
// ********************************************************
// variables for GUI
// this GUI is a simple design which allows you to toggle between
// the four effects.
var w;
w = GUIWindow.new("Swing Bridge", Rect.newBy(240, 101, 372, 358)).backColor_(rgb(255,255,255));
StringView.new( w, Rect.newBy(12, 10, 400, 20), "Swing Bridge: Click the buttons to activate each effect.").labelColor_(rgb(0,0,102));
RadioButtonView.new( w, Rect.newBy(17, 41, 340, 21), "Effects OFF", 1, 0, 1, 0, 'linear').labelColor_(rgb(0,0,102)).group_(1);
RadioButtonView.new( w, Rect.newBy(17, 66, 340, 21), "Reverb: 1.05 Seconds", 0, 0, 1, 0, 'linear').labelColor_(rgb(0,0,102)).group_(1);
RadioButtonView.new( w, Rect.newBy(17, 91, 340, 21), "Reverb: 2.1 Seconds", 0, 0, 1, 0, 'linear').labelColor_(rgb(0,0,102)).group_(1);
RadioButtonView.new( w, Rect.newBy(17, 116, 340, 21), "2 Tap Digital Delay", 0, 0, 1, 0, 'linear').labelColor_(rgb(0,0,102)).group_(1);
RadioButtonView.new( w, Rect.newBy(17, 141, 340, 21), "Harmonizer, Chorus, and a little delay.", 0, 0, 1, 0, 'linear').labelColor_(rgb(0,0,102)).group_(1);
ScopeView.new( w, Rect.newBy(35, 183, 300, 100), 4410, -0.5, 0.5);
StringView.new( w, Rect.newBy(68, 302, 242, 20), "Command + Period to close this window.").labelColor_(rgb(0,0,102));
// This synth is a combination of "effects" which will be used
// to process the audio signal.
Synth.play({
// variables for synth
var micInput;
var no_effect;
var shortVerb;
var longVerb;
var multiTap_delay;
var dualPitch_shift;
var plug;
// micInput will be used in each of the "effects"
micInput = AudioIn.ar(1,0.25);
// effects "OFF"
no_effect = AudioIn.ar(1,0);
// short reverb as defined by the composer
shortVerb = Mix.ar(CombA.ar(micInput/5, 1.05,LFNoise0.kr(Array.fill(8,{0.1.rand}), 0.004, 0.05), 1.05));
// longer reverb as defined by the composer
longVerb = Mix.ar(CombA.ar(micInput/5, 1.05,LFNoise0.kr(Array.fill(8,{0.1.rand}), 0.004, 0.05), 1.05));
// multi Tap delay as defined by the composer
multiTap_delay = MultiTap.ar(`[0.3,0.45, 0.75, 0.9, 1.2, 1.35,1.65,1.8,2.1,2.25,2.55,2.7],
`[1,1,0.5,0.5,0.25,0.25,0.15,0.15,0.02,0.02,0.001,0.001], micInput/2);
// pitch harmonizer of P4 and P5 below the input frequency.
// plus, reverb of the original input.
// plus, 30 ms tap delay of the original input.
// as defined by the composer
dualPitch_shift = PitchShift.ar(micInput, 0.1, 0.6666666, 0, 0.001)
+ PitchShift.ar(micInput, 0.1, 0.75, 0, 0.001)
+ Mix.ar(CombA.ar(micInput/5, 1.05,LFNoise0.kr(Array.fill(8,{0.1.rand}), 0.004, 0.05), 0.03))
+ MultiTap.ar(`[0.03], `[0.1], micInput*2);
// the PLUG object is used here to dynamically change the output
// according to which "radio button" is selected.
// the default value for plug is "no_effect" - in effect, when the
// document is opened, the sound effects are turned OFF by default.
plug = Plug.ar(no_effect);
w.at(1).action = { plug.source = no_effect; };
w.at(2).action = { plug.source = shortVerb; };
w.at(3).action = { plug.source = longVerb; };
w.at(4).action = { plug.source = multiTap_delay; };
w.at(5).action = { plug.source = dualPitch_shift; };
// this is the output. the output is routed through the SCOPE
// in the GUI.
Scope.ar(w.at(6), plug)
});
// this line closes the GUI when command+period is pressed.
w.close;
)
The Visual Result
As you can see in the screen shot, once the Supercollider patch is executed there is a simple graphic interface that allows a user to switch between the various effects.
Instructions: How to Use this Patch
The electronics required in this piece are:
- Microphone for the clarinet. In our case we used a transducer microphone which had been installed in the barrel of the clarinet...we found this to be best situation. It really sounds incredible!
- VCR and Video projector
- Audio Mixer
- Macintosh Computer running this Supercollider patch.
Note also that this has not been tested (yet) for compatibility with SC3 but you can use the old version of "SCPlay" instead available at www.audiosynth.com.
- Step One
Cut-n-paste the above Supercollider source code into a new text document and save it to your hard drive. (I saved it as "castle_music"). You can download the trial version of SuperCollider or download "SCPlay" from www.audiosynth.com. Note that SCPlay will execute the patch but will not allow you to make any changes or modifications to the code.
- Step Two
-
The diagram here explains the input/output paths of the microphones, the mixing board, and the computer. Note that the diagram represents the configuration that I used...but there are likely other possible configurations. It will be necessary to balance the levels of the clarinet microphone with the return from the SuperCollider patch. Both of these signals should be routed to the speakers.
- Step Three
Once you have a signal from the microphones routed to the computer you can test the Supercollider patch. Here are some important things to remember:
To run the Supercollider patch you must select the entire source code and press the "Enter" key. (Not the "Return" key).
When the Supercollider patch is executed, a new window will pop up and present you with sliders and some instructions. (That's how you'll know that the document has executed correctly).
The scope inside the window will show you whether or not an augio signal is getting into the patch through the Built-in Mac Audio hardware. If the scope does not show a signal then you may have to modify the Mac Audio settings in the Audio Control Panel...I don't KNOW the settings you will need to use because they vary from model to model depending on whether you're using a G3, G4, iMac, etc. I suggest you experiment with it or contact you're friendly, neighbourhood Mac guru.
|
|
|
|