--- /dev/null
+declare name "tapiir";
+declare version "1.0";
+declare author "Grame";
+declare license "BSD";
+declare copyright "(c)GRAME 2006";
+
+//======================================================
+//
+// TAPIIR
+// (from Maarten de Boer's Tapiir)
+//
+//======================================================
+
+import("music.lib");
+
+
+dsize = 524288;
+
+
+
+// user interface
+//---------------
+
+
+tap(n) = vslider("tap %n", 0,0,1,0.1);
+in(n) = vslider("input %n", 1,0,1,0.1);
+gain = vslider("gain", 1,0,1,0.1);
+del = vslider("delay (sec)", 0, 0, 5, 0.01) * SR;
+
+
+// mixer and matrix
+//-----------------------------------------------------------
+
+mixer(taps,lines) = par(i,taps,*(tap(i))),
+ par(i,lines,*(in(i)))
+ :> *(gain);
+
+
+matrix(taps,lines) = ( bus(lines+taps)
+ <: tgroup("",
+ par(i, taps,
+ hgroup("Tap %i",
+ mixer(taps,lines) : delay(dsize,del))))
+ ) ~ bus(taps);
+
+
+// tapiir
+//--------
+
+tapiir(taps,lines) = vgroup("Tapiir",
+ bus(lines)
+ <: (matrix(taps,lines), bus(lines))
+ <: vgroup( "outputs", par( i, lines, hgroup("output %i", mixer(taps,lines)) ) )
+ );
+
+
+
+process = tapiir(6,2);
+
+