LinPan2 : UGen {
 // linear stereo pan
 *ar { arg in, pan;
  ^this.multiChannelPerform('ar1', in, pan)
 }
 *kr { arg in, pan;
  ^this.multiChannelPerform('kr1', in, pan)
 }
 *ar1 { arg in, pan;
  //pan = pan.clip2(1) * 0.5 + 0.5;
  pan = pan * 0.5 + 0.5;
  ^[in * (1.0 - pan), in * pan]
 }
 *kr1 { arg in, pan;
  //pan = pan.clip2(1) * 0.5 + 0.5;
  pan = pan * 0.5 + 0.5;
  ^[in * (1.0 - pan), in * pan]
 }
}

LinPan4 : UGen {
 // linear quad pan
 *ar { arg in, xpan0, ypan0;
  ^this.multiChannelPerform('ar1', in, xpan0, ypan0)
 }
 *kr { arg in, xpan0, ypan0;
  ^this.multiChannelPerform('kr1', in, xpan0, ypan0)
 }
 *ar1 { arg in, xpan0, ypan0;
  var xpan1, ypan1, inx0, inx1;
  xpan0 = xpan0.clip2(1) * 0.5 + 0.5;
  ypan0 = ypan0.clip2(1) * 0.5 + 0.5;
  xpan1 = 1.0 - xpan0;
  ypan1 = 1.0 - ypan0;
  inx0 = in * xpan0;
  inx1 = in * xpan1;
  ^[inx1 * ypan0, inx0 * ypan0, inx1 * ypan1, inx0 * ypan1]
 }
 *kr1 { arg in, xpan0, ypan0;
  var xpan1, ypan1, inx0, inx1;
  xpan0 = xpan0.clip2(1) * 0.5 + 0.5;
  ypan0 = ypan0.clip2(1) * 0.5 + 0.5;
  xpan1 = 1.0 - xpan0;
  ypan1 = 1.0 - ypan0;
  inx0 = in * xpan0;
  inx1 = in * xpan1;
  ^[inx1 * ypan0, inx0 * ypan0, inx1 * ypan1, inx0 * ypan1]
 }
}

LinXFade2 : UGen {
 // linear stereo cross fade
 *ar { arg l, r, pan;
  ^this.multiChannelPerform('ar1', l, r, pan)
 }
 *kr { arg l, r, pan;
  ^this.multiChannelPerform('kr1', l, r, pan)
 }
 *ar1 { arg l, r, pan;
  pan = pan.clip2(1) * 0.5 + 0.5;
  ^l + (pan * (r - l))
 }
 *kr1 { arg l, r, pan;
  pan = pan.clip2(1) * 0.5 + 0.5;
  ^l + (pan * (r - l))
 }
}

LinXFade4 : UGen {
 // quad stereo cross fade
 *ar { arg lf, rf, lb, rb, xpan, ypan;
  ^this.multiChannelPerform('ar1', lf, rf, lb, rb, xpan, ypan)
 }
 *kr { arg lf, rf, lb, rb, xpan, ypan;
  ^this.multiChannelPerform('kr1', lf, rf, lb, rb, xpan, ypan)
 }
 *ar1 { arg lf, rf, lb, rb, xpan, ypan;
  var front, back;
  xpan = 0.5 * xpan.clip2(1) + 0.5;
  ypan = 0.5 * ypan.clip2(1) + 0.5;
  front = lf + (xpan * (rf - lf));
  back  = lb + (xpan * (rb - lb));
  ^back + (ypan * (front - back))
 }
 *kr1 { arg lf, rf, lb, rb, xpan, ypan;
  var front, back;
  xpan = 0.5 * xpan.clip2(1) + 0.5;
  ypan = 0.5 * ypan.clip2(1) + 0.5;
  front = lf + (xpan * (rf - lf));
  back  = lb + (xpan * (rb - lb));
  ^back + (ypan * (front - back))
 }
}


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