1declare name 		"pitch-shifter";
2declare version 	"1.0";
3declare author 		"Grame";
4declare license 	"BSD";
5declare copyright 	"(c)GRAME 2006";
6
7 //----------------------------
8 // very simple real time pitch shifter
9 //----------------------------
10
11import("music.lib");
12
13transpose (w, x, s, sig)  =
14	fdelay1s(d,sig)*fmin(d/x,1) + fdelay1s(d+w,sig)*(1-fmin(d/x,1))
15	   	with {
16			i = 1 - pow(2, s/12);
17			d = i : (+ : +(w) : fmod(_,w)) ~ _;
18	        };
19
20pitchshifter = vgroup("Pitch Shifter", transpose(
21									hslider("window (samples)", 1000, 50, 10000, 1),
22									hslider("xfade (samples)", 10, 1, 10000, 1),
23									hslider("shift (semitones) ", 0, -12, +12, 0.1)
24								  )
25				);
26
27
28//process = _ <: select2(checkbox("activate"), _, pitchshifter) <: _,_;
29process = pitchshifter;
30