text: declare name 		"pitch-shifter";
  declare version 	"1.0";
  declare author 		"Grame";
  declare license 	"BSD";
  declare copyright 	"(c)GRAME 2006";
  
   //----------------------------
   // very simple real time pitch shifter
   //----------------------------
  
  import("music.lib");
  
  transpose (w, x, s, sig)  =
  	fdelay1s(d,sig)*fmin(d/x,1) + fdelay1s(d+w,sig)*(1-fmin(d/x,1))
  	   	with {
  			i = 1 - pow(2, s/12);
  			d = i : (+ : +(w) : fmod(_,w)) ~ _;
  	        };
  
  pitchshifter = vgroup("Pitch Shifter", transpose(
  									hslider("window (samples)", 1000, 50, 10000, 1),
  									hslider("xfade (samples)", 10, 1, 10000, 1),
  									hslider("shift (semitones) ", 0, -12, +12, 0.1)
  								  )
  				);
  
  
  process = pitchshifter;
  