TapN : UGen {
 var signalBuffer;
 
 *ar { arg argSignalBuffer, delaytime = 0.2, mul = 1.0, add = 0.0;
  ^this.multiChannelPerform('ar1', argSignalBuffer, delaytime, mul, add)
 }
 *ar1 { arg argSignalBuffer, delaytime = 0.2, mul = 1.0, add = 0.0;
  ^super.ar1.init(argSignalBuffer, delaytime, mul, add)
 }
 init { arg argSignalBuffer ... theInputs;
  signalBuffer = argSignalBuffer;
  inputs = theInputs;
 }
}

TapL : TapN { }
TapA : TapN { }

DelayWr : UGen {
 var signalBuffer;
 
 *ar { arg argSignalBuffer, in = 0.0;
  ^this.multiChannelPerform('ar1', argSignalBuffer, in)
 }
 *ar1 { arg argSignalBuffer, in = 0.0;
  ^super.ar1.init(argSignalBuffer, in)
 }
 init { arg argSignalBuffer ... theInputs;
  signalBuffer = argSignalBuffer;
  inputs = theInputs;
 }
}
 
GrainTap : UGen {
 var signalBuffer;
 
 *ar { arg argSignalBuffer, grainDur = 0.2, pchRatio = 1.0,
   pchDispersion = 0.0, timeDispersion = 0.0, overlap = 2.0, mul = 1.0, add = 0.0;
  ^this.multiChannelPerform('ar1', argSignalBuffer, grainDur, pchRatio,
   pchDispersion, timeDispersion, overlap, mul, add)
 }
 *ar1 { arg argSignalBuffer, grainDur = 0.2, pchRatio = 1.0,
   pchDispersion = 0.0, timeDispersion = 0.0, overlap = 2.0, mul = 1.0, add = 0.0;
  ^super.ar1.init(argSignalBuffer, grainDur, pchRatio,
   pchDispersion, timeDispersion, overlap, mul, add)
 }
 init { arg argSignalBuffer ... theInputs;
  signalBuffer = argSignalBuffer;
  inputs = theInputs;
 }
}


PingPongN : UGen {
 *ar { arg argLeft, argRight, maxDelayTime, actDelayTime, feedback;
 
  var leftBuffer, rightBuffer, leftDelayedSignal, rightDelayedSignal, output, dummy;
  var bufLength;
  
  bufLength = Synth.sampleRate * maxDelayTime;
  leftBuffer  = Signal.new(bufLength);  // allocate a buffer for the left delay line
  rightBuffer = Signal.new(bufLength);  // allocate a buffer for the right delay line
  leftDelayedSignal  = TapN.ar(leftBuffer, actDelayTime);  // tap the left delay line
  rightDelayedSignal = TapN.ar(rightBuffer, actDelayTime);  // tap the right delay line

  // mix the delayed signal with the input
  output = [leftDelayedSignal + argLeft, rightDelayedSignal + argRight]; 

  dummy = DelayWr.ar([rightBuffer, leftBuffer], output * feedback); // feedback to buffers in reverse order
  ^output <! dummy; // output the mixed signal and force the DelayWr into the call graph
 }
}

PingPongL : UGen {
 *ar { arg argLeft, argRight, maxDelayTime, actDelayTime, feedback;
 
  var leftBuffer, rightBuffer, leftDelayedSignal, rightDelayedSignal, output, dummy;
  var bufLength;
  
  bufLength = Synth.sampleRate * maxDelayTime;
  leftBuffer  = Signal.new(bufLength);  // allocate a buffer for the left delay line
  rightBuffer = Signal.new(bufLength);  // allocate a buffer for the right delay line
  leftDelayedSignal  = TapL.ar(leftBuffer, actDelayTime);  // tap the left delay line
  rightDelayedSignal = TapL.ar(rightBuffer, actDelayTime);  // tap the right delay line

  // mix the delayed signal with the input
  output = [leftDelayedSignal + argLeft, rightDelayedSignal + argRight]; 

  dummy = DelayWr.ar([rightBuffer, leftBuffer], output * feedback); // feedback to buffers in reverse order
  ^output <! dummy; // output the mixed signal and force the DelayWr into the call graph
 }
}


DelayProcessN : UGen {
 *ar { arg process, in, maxDelayTime, actDelayTime, feedback;
 
  var buffer, bufLength, delayedSignal, output, dummy;
  
  bufLength = Synth.sampleRate * maxDelayTime;
  buffer  = Signal.new(bufLength);  // allocate a buffer for the left delay line

  delayedSignal  = TapN.ar(buffer, actDelayTime);  // tap the left delay line

  output = process.value(delayedSignal) * feedback + in;
  
  // mix the delayed signal with the input

  dummy = DelayWr.ar(buffer, output);
  ^output <! dummy; // output the mixed signal and force the DelayWr into the call graph
 }
}

DelayProcessL : UGen {
 *ar { arg process, in, maxDelayTime, actDelayTime, feedback;
 
  var buffer, bufLength, delayedSignal, output, dummy;
  
  bufLength = Synth.sampleRate * maxDelayTime;
  buffer  = Signal.new(bufLength);  // allocate a buffer for the left delay line

  delayedSignal  = TapL.ar(buffer, actDelayTime);  // tap the left delay line

  output = process.value(delayedSignal) * feedback + in;
  
  // mix the delayed signal with the input

  dummy = DelayWr.ar(buffer, output); // feedback to buffers in reverse order
  ^output <! dummy; // output the mixed signal and force the DelayWr into the call graph
 }
}


This page was created by SimpleText2Html 1.0.3 on 22-Feb-100.