--- /dev/null
+declare name "karplus";
+declare version "1.0";
+declare author "Grame";
+declare license "BSD";
+declare copyright "(c)GRAME 2006";
+
+//-----------------------------------------------
+// karplus-strong
+//-----------------------------------------------
+
+import("music.lib");
+
+// Excitator
+//--------
+
+upfront(x) = (x-x') > 0.0;
+decay(n,x) = x - (x>0.0)/n;
+release(n) = + ~ decay(n);
+trigger(n) = upfront : release(n) : >(0.0);
+
+size = hslider("excitation [unit:f]", 128, 2, 512, 1);
+
+
+
+
+// resonator
+//-----------------
+
+dur = hslider("duration [unit:f]", 128, 2, 512, 1);
+att = hslider("attenuation", 0.1, 0, 1, 0.01);
+average(x) = (x+x')/2;
+
+resonator(d, a) = (+ : delay(4096, d-1.5)) ~ (average : *(1.0-a)) ;
+
+process = noise * hslider("level", 0.5, 0, 1, 0.1)
+ : vgroup("excitator", *(button("play"): trigger(size)))
+ : vgroup("resonator", resonator(dur, att));