session-2018-10-03-204427

clive

a C audio live-coding skeleton

diff @ 2018-10-03 21:44:42 +0100
diff --git a/src/go.c b/src/go.c
index 88c62a15..8102155d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -10,7 +10,7 @@
 // =====================================================================
 // =====================================================================
 
-#define RESET 1
+#define RESET 0
 #define SR 48000
 #include "dsp.h"
 
diff @ 2018-10-03 21:44:53 +0100
diff --git a/src/go.c b/src/go.c
index 8102155d..845ce351 100644
--- a/src/go.c
+++ b/src/go.c
@@ -227,9 +227,9 @@ go(S *s, int channels, const float *in, float *out)
   // pitchshift feedback
   for (int c = 0; c < 2; ++c) {
     double down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100,
-      lop(&s->so2.lag[0], -12, 1e-3), feedback[c]);
+      lop(&s->so2.lag[0], -12, 1e-4), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
-      lop(&s->so2.lag[0],  19, 1e-3), down);
+      lop(&s->so2.lag[0],  19, 1e-4), down);
     feedback[c] = feedback[c] - down - up;
   }
   // compress feedback
diff @ 2018-10-03 21:45:00 +0100
diff --git a/src/go.c b/src/go.c
index 845ce351..cb2d4eef 100644
--- a/src/go.c
+++ b/src/go.c
@@ -227,9 +227,9 @@ go(S *s, int channels, const float *in, float *out)
   // pitchshift feedback
   for (int c = 0; c < 2; ++c) {
     double down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100,
-      lop(&s->so2.lag[0], -12, 1e-4), feedback[c]);
+      lop(&s->so2.lag[0], -12, 1e-5), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
-      lop(&s->so2.lag[0],  19, 1e-4), down);
+      lop(&s->so2.lag[0],  19, 1e-5), down);
     feedback[c] = feedback[c] - down - up;
   }
   // compress feedback
diff @ 2018-10-03 21:45:09 +0100
diff --git a/src/go.c b/src/go.c
index cb2d4eef..9009dbd4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -227,9 +227,9 @@ go(S *s, int channels, const float *in, float *out)
   // pitchshift feedback
   for (int c = 0; c < 2; ++c) {
     double down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100,
-      lop(&s->so2.lag[0], -12, 1e-5), feedback[c]);
+      lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
-      lop(&s->so2.lag[0],  19, 1e-5), down);
+      lop(&s->so2.lag[0],  19, 1e-6), down);
     feedback[c] = feedback[c] - down - up;
   }
   // compress feedback
diff @ 2018-10-03 21:45:17 +0100
diff --git a/src/go.c b/src/go.c
index 9009dbd4..334abafd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 20, 500,
+    so2echo(&s->so2.echo[c], 20, 400,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:45:20 +0100
diff --git a/src/go.c b/src/go.c
index 334abafd..eea7a142 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 20, 400,
+    so2echo(&s->so2.echo[c], 30, 400,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:45:36 +0100
diff --git a/src/go.c b/src/go.c
index eea7a142..55fd37a4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = feedback[c] - down - up;
+    feedback[c] = sin((feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:45:40 +0100
diff --git a/src/go.c b/src/go.c
index 55fd37a4..065d8282 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 30, 400,
+    so2echo(&s->so2.echo[c], 30, 300,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:45:46 +0100
diff --git a/src/go.c b/src/go.c
index 065d8282..2fe2a9ee 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin((feedback[c] - down - up));
+    feedback[c] = sin(1.1 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:45:49 +0100
diff --git a/src/go.c b/src/go.c
index 2fe2a9ee..51cece74 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(1.1 * (feedback[c] - down - up));
+    feedback[c] = sin(1.2 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:45:51 +0100
diff --git a/src/go.c b/src/go.c
index 51cece74..9ae52b4c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(1.2 * (feedback[c] - down - up));
+    feedback[c] = sin(1.3 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:45:52 +0100
diff --git a/src/go.c b/src/go.c
index 9ae52b4c..a2f84b74 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(1.3 * (feedback[c] - down - up));
+    feedback[c] = sin(1.4 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:45:55 +0100
diff --git a/src/go.c b/src/go.c
index a2f84b74..ff6b3281 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(1.4 * (feedback[c] - down - up));
+    feedback[c] = sin(1.5 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:46:01 +0100
diff --git a/src/go.c b/src/go.c
index ff6b3281..2e8df4fe 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 30, 300,
+    so2echo(&s->so2.echo[c], 30, 250,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:46:05 +0100
diff --git a/src/go.c b/src/go.c
index 2e8df4fe..be0ac47b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 30, 250,
+    so2echo(&s->so2.echo[c], 40, 250,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:46:09 +0100
diff --git a/src/go.c b/src/go.c
index be0ac47b..e221284b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(1.5 * (feedback[c] - down - up));
+    feedback[c] = sin(1.6 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:46:13 +0100
diff --git a/src/go.c b/src/go.c
index e221284b..766ac034 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(1.6 * (feedback[c] - down - up));
+    feedback[c] = sin(1.8 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:46:14 +0100
diff --git a/src/go.c b/src/go.c
index 766ac034..1d931295 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(1.8 * (feedback[c] - down - up));
+    feedback[c] = sin(2 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:46:21 +0100
diff --git a/src/go.c b/src/go.c
index 1d931295..fd1a4e6d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 40, 250,
+    so2echo(&s->so2.echo[c], 50, 250,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:46:25 +0100
diff --git a/src/go.c b/src/go.c
index fd1a4e6d..154cb95c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(2 * (feedback[c] - down - up));
+    feedback[c] = sin(2.2 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:46:28 +0100
diff --git a/src/go.c b/src/go.c
index 154cb95c..8edd4fda 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(2.2 * (feedback[c] - down - up));
+    feedback[c] = sin(2.4 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:46:31 +0100
diff --git a/src/go.c b/src/go.c
index 8edd4fda..ac5035e3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(2.4 * (feedback[c] - down - up));
+    feedback[c] = sin(2.6 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:46:34 +0100
diff --git a/src/go.c b/src/go.c
index ac5035e3..8061b772 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(2.6 * (feedback[c] - down - up));
+    feedback[c] = sin(3 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:46:38 +0100
diff --git a/src/go.c b/src/go.c
index 8061b772..266ae10d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 50, 250,
+    so2echo(&s->so2.echo[c], 50, 220,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:46:41 +0100
diff --git a/src/go.c b/src/go.c
index 266ae10d..2334113d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 50, 220,
+    so2echo(&s->so2.echo[c], 60, 220,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:46:47 +0100
diff --git a/src/go.c b/src/go.c
index 2334113d..6b043dee 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(3 * (feedback[c] - down - up));
+    feedback[c] = sin(3.3 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:46:54 +0100
diff --git a/src/go.c b/src/go.c
index 6b043dee..2ff0d56d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 60, 220,
+    so2echo(&s->so2.echo[c], 70, 220,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:46:59 +0100
diff --git a/src/go.c b/src/go.c
index 2ff0d56d..7336131a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(3.3 * (feedback[c] - down - up));
+    feedback[c] = sin(3.6 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:47:02 +0100
diff --git a/src/go.c b/src/go.c
index 7336131a..b36af624 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 70, 220,
+    so2echo(&s->so2.echo[c], 70, 200,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:47:07 +0100
diff --git a/src/go.c b/src/go.c
index b36af624..e6570aa4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(3.6 * (feedback[c] - down - up));
+    feedback[c] = sin(4 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:47:11 +0100
diff --git a/src/go.c b/src/go.c
index e6570aa4..1e2cb5f9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 70, 200,
+    so2echo(&s->so2.echo[c], 70, 180,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:47:15 +0100
diff --git a/src/go.c b/src/go.c
index 1e2cb5f9..129d27e1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(4 * (feedback[c] - down - up));
+    feedback[c] = sin(4.3 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:47:19 +0100
diff --git a/src/go.c b/src/go.c
index 129d27e1..9eb35f9e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 70, 180,
+    so2echo(&s->so2.echo[c], 80, 180,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:47:23 +0100
diff --git a/src/go.c b/src/go.c
index 9eb35f9e..f0eb1a90 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(4.3 * (feedback[c] - down - up));
+    feedback[c] = sin(4.7 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:47:28 +0100
diff --git a/src/go.c b/src/go.c
index f0eb1a90..f377f1ed 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 80, 180,
+    so2echo(&s->so2.echo[c], 80, 150,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:47:30 +0100
diff --git a/src/go.c b/src/go.c
index f377f1ed..b7208a12 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 80, 150,
+    so2echo(&s->so2.echo[c], 100, 150,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:47:34 +0100
diff --git a/src/go.c b/src/go.c
index b7208a12..5324959e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(4.7 * (feedback[c] - down - up));
+    feedback[c] = sin(5 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:47:39 +0100
diff --git a/src/go.c b/src/go.c
index 5324959e..c7faad7e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 100, 150,
+    so2echo(&s->so2.echo[c], 120, 150,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:47:42 +0100
diff --git a/src/go.c b/src/go.c
index c7faad7e..c9c159ed 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(5 * (feedback[c] - down - up));
+    feedback[c] = sin(6 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:47:46 +0100
diff --git a/src/go.c b/src/go.c
index c9c159ed..5d81424d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 120, 150,
+    so2echo(&s->so2.echo[c], 120, 120,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:47:51 +0100
diff --git a/src/go.c b/src/go.c
index 5d81424d..27217eb8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(6 * (feedback[c] - down - up));
+    feedback[c] = sin(7 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:48:20 +0100
diff --git a/src/go.c b/src/go.c
index 27217eb8..2c2087af 100644
--- a/src/go.c
+++ b/src/go.c
@@ -197,6 +197,8 @@ typedef struct
   // ===================================================================
   // = append only data structure
 
+  BIQUAD sow[2];
+
 } S;
 
 // =====================================================================
@@ -230,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(7 * (feedback[c] - down - up));
+    feedback[c] = sin(7.5 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:48:24 +0100
diff --git a/src/go.c b/src/go.c
index 2c2087af..1e556976 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 120, 120,
+    so2echo(&s->so2.echo[c], 150, 120,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:48:28 +0100
diff --git a/src/go.c b/src/go.c
index 1e556976..a4cb3155 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 150, 120,
+    so2echo(&s->so2.echo[c], 150, 150,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:48:32 +0100
diff --git a/src/go.c b/src/go.c
index a4cb3155..b1dd45a2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(7.5 * (feedback[c] - down - up));
+    feedback[c] = sin(8 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:48:36 +0100
diff --git a/src/go.c b/src/go.c
index b1dd45a2..2f473077 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(8 * (feedback[c] - down - up));
+    feedback[c] = sin(9 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:48:42 +0100
diff --git a/src/go.c b/src/go.c
index 2f473077..9e2a1661 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(9 * (feedback[c] - down - up));
+    feedback[c] = sin(10 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:48:51 +0100
diff --git a/src/go.c b/src/go.c
index 9e2a1661..a7b5a8db 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 150, 150,
+    so2echo(&s->so2.echo[c], 200, 200,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:49:01 +0100
diff --git a/src/go.c b/src/go.c
index a7b5a8db..1cbffd3c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(10 * (feedback[c] - down - up));
+    feedback[c] = sin(15 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 200, 200,
+    so2echo(&s->so2.echo[c], 20, 200,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:49:06 +0100
diff --git a/src/go.c b/src/go.c
index 1cbffd3c..097adf59 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
       lop(&s->so2.lag[0], -12, 1e-6), feedback[c]);
     double up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
       lop(&s->so2.lag[0],  19, 1e-6), down);
-    feedback[c] = sin(15 * (feedback[c] - down - up));
+    feedback[c] = sin(25 * (feedback[c] - down - up));
   }
   // compress feedback
   double so2[2] = { 0, 0 };
diff @ 2018-10-03 21:49:11 +0100
diff --git a/src/go.c b/src/go.c
index 097adf59..f283d32b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 20, 200,
+    so2echo(&s->so2.echo[c], 20, 20,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:49:33 +0100
diff --git a/src/go.c b/src/go.c
index f283d32b..860db22c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -321,8 +321,8 @@ go(S *s, int channels, const float *in, float *out)
       pink_init(&s->pink[0], 10, 0x1cedCafe + 0);
       pink_init(&s->pink[1], 10, 0x1cedCafe + 1);
     }
-    double na = env * pink(&s->pink[0]);
-    double nb = env * pink(&s->pink[1]);
+    double na = env * so2[0];
+    double nb = env * so2[1];
     double q = 10;
     na *= 10;
     nb *= 10;
diff @ 2018-10-03 21:49:36 +0100
diff --git a/src/go.c b/src/go.c
index 860db22c..253d0510 100644
--- a/src/go.c
+++ b/src/go.c
@@ -341,7 +341,7 @@ go(S *s, int channels, const float *in, float *out)
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
-    double gain = 0;
+    double gain = 1;
     pnoise[0] *= gain;
     pnoise[1] *= gain;
     mixdown[0] += pnoise[0];
diff @ 2018-10-03 21:49:42 +0100
diff --git a/src/go.c b/src/go.c
index 253d0510..d0c4c826 100644
--- a/src/go.c
+++ b/src/go.c
@@ -323,7 +323,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * so2[0];
     double nb = env * so2[1];
-    double q = 10;
+    double q = 20;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-10-03 21:49:52 +0100
diff --git a/src/go.c b/src/go.c
index d0c4c826..3fed42af 100644
--- a/src/go.c
+++ b/src/go.c
@@ -257,7 +257,7 @@ go(S *s, int channels, const float *in, float *out)
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
     double probability = pow(0.5, N - zeroes);
-    probability = (0.5 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (4.5 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
@@ -267,7 +267,7 @@ go(S *s, int channels, const float *in, float *out)
     freq = 10 * samphold(&s->bsh, harmonic, 1 - trigger);
     freq = lop(&s->bfreq, freq, 20);
   }
-  env = 0.5;
+//  env = 0.5;
   freq = 50;
 
   // ===================================================================
diff @ 2018-10-03 21:49:59 +0100
diff --git a/src/go.c b/src/go.c
index 3fed42af..7fa5def5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -268,7 +268,7 @@ go(S *s, int channels, const float *in, float *out)
     freq = lop(&s->bfreq, freq, 20);
   }
 //  env = 0.5;
-  freq = 50;
+  freq = 100;
 
   // ===================================================================
   // = 3 = total intraliminal extraction
diff @ 2018-10-03 21:50:08 +0100
diff --git a/src/go.c b/src/go.c
index 7fa5def5..998e502d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -323,7 +323,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * so2[0];
     double nb = env * so2[1];
-    double q = 20;
+    double q = 30;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-10-03 21:50:11 +0100
diff --git a/src/go.c b/src/go.c
index 998e502d..a58711aa 100644
--- a/src/go.c
+++ b/src/go.c
@@ -323,7 +323,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * so2[0];
     double nb = env * so2[1];
-    double q = 30;
+    double q = 50;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-10-03 21:50:14 +0100
diff --git a/src/go.c b/src/go.c
index a58711aa..66f222c3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -323,7 +323,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * so2[0];
     double nb = env * so2[1];
-    double q = 50;
+    double q = 100;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-10-03 21:50:30 +0100
diff --git a/src/go.c b/src/go.c
index 66f222c3..ab0f4c22 100644
--- a/src/go.c
+++ b/src/go.c
@@ -263,12 +263,12 @@ go(S *s, int channels, const float *in, float *out)
     double trigger = uniform < probability;
     s->benv.y += trigger;
     env = lop(&s->benv, 0, 5);
-    double harmonic = 5 + clamp(N - zeroes, 0, 20);
-    freq = 10 * samphold(&s->bsh, harmonic, 1 - trigger);
+    double harmonic = 5 + clamp(N - zeroes - 3, 0, 20);
+    freq = 20 * samphold(&s->bsh, harmonic, 1 - trigger);
     freq = lop(&s->bfreq, freq, 20);
   }
 //  env = 0.5;
-  freq = 100;
+//  freq = 100;
 
   // ===================================================================
   // = 3 = total intraliminal extraction
diff @ 2018-10-03 21:50:41 +0100
diff --git a/src/go.c b/src/go.c
index ab0f4c22..7b6b7057 100644
--- a/src/go.c
+++ b/src/go.c
@@ -257,7 +257,7 @@ go(S *s, int channels, const float *in, float *out)
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
     double probability = pow(0.5, N - zeroes);
-    probability = (4.5 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (5.5 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-10-03 21:50:43 +0100
diff --git a/src/go.c b/src/go.c
index 7b6b7057..5b6af5bd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -257,7 +257,7 @@ go(S *s, int channels, const float *in, float *out)
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
     double probability = pow(0.5, N - zeroes);
-    probability = (5.5 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (6.5 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-10-03 21:50:46 +0100
diff --git a/src/go.c b/src/go.c
index 5b6af5bd..64968195 100644
--- a/src/go.c
+++ b/src/go.c
@@ -257,7 +257,7 @@ go(S *s, int channels, const float *in, float *out)
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
     double probability = pow(0.5, N - zeroes);
-    probability = (6.5 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (6.5 + 4 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-10-03 21:50:56 +0100
diff --git a/src/go.c b/src/go.c
index 64968195..c6005398 100644
--- a/src/go.c
+++ b/src/go.c
@@ -324,8 +324,8 @@ go(S *s, int channels, const float *in, float *out)
     double na = env * so2[0];
     double nb = env * so2[1];
     double q = 100;
-    na *= 10;
-    nb *= 10;
+    na *= 5;
+    nb *= 5;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-10-03 21:51:07 +0100
diff --git a/src/go.c b/src/go.c
index c6005398..507f5a3a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
   so2[1] *= gain;
   // write to delay lines
   for (int c = 0; c < 2; ++c) {
-    so2echo(&s->so2.echo[c], 20, 20,
+    so2echo(&s->so2.echo[c], 40, 40,
       tanh(so2[c] + RESET*impulse[c]));
   }
   mixdown[0] += so2[0];
diff @ 2018-10-03 21:51:19 +0100
diff --git a/src/go.c b/src/go.c
index 507f5a3a..b6c0b33d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -299,7 +299,7 @@ go(S *s, int channels, const float *in, float *out)
     double crush = phasor(&s->tcrush, 2000);
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
-    double kgain = 0;
+    double kgain = 1;
     kgain = samphold(&s->tgate[0], kgain, p);
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
diff @ 2018-10-03 21:51:34 +0100
diff --git a/src/go.c b/src/go.c
index b6c0b33d..98361b0d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -290,9 +290,9 @@ go(S *s, int channels, const float *in, float *out)
     kick *= 1 + kickenv;
     kick = tanh(kick);
     double hat = wrap(16 * p + 0.5) < 0.5;
-    hat *= 0;
+    hat *= 1;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 5)*5)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
diff @ 2018-10-03 21:51:39 +0100
diff --git a/src/go.c b/src/go.c
index 98361b0d..78ae8254 100644
--- a/src/go.c
+++ b/src/go.c
@@ -289,7 +289,7 @@ go(S *s, int channels, const float *in, float *out)
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
-    double hat = wrap(16 * p + 0.5) < 0.5;
+    double hat = wrap(16 * p + 0.5) < 0.25;
     hat *= 1;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2018-10-03 21:51:43 +0100
diff --git a/src/go.c b/src/go.c
index 78ae8254..259dc806 100644
--- a/src/go.c
+++ b/src/go.c
@@ -289,7 +289,7 @@ go(S *s, int channels, const float *in, float *out)
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
-    double hat = wrap(16 * p + 0.5) < 0.25;
+    double hat = wrap(16 * p + 0.5) < 0.125;
     hat *= 1;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2018-10-03 21:51:48 +0100
diff --git a/src/go.c b/src/go.c
index 259dc806..d8d751f5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -296,7 +296,7 @@ go(S *s, int channels, const float *in, float *out)
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
-    double crush = phasor(&s->tcrush, 2000);
+    double crush = phasor(&s->tcrush, 4000);
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
     double kgain = 1;
diff @ 2018-10-03 21:51:52 +0100
diff --git a/src/go.c b/src/go.c
index d8d751f5..a6c56792 100644
--- a/src/go.c
+++ b/src/go.c
@@ -290,7 +290,7 @@ go(S *s, int channels, const float *in, float *out)
     kick *= 1 + kickenv;
     kick = tanh(kick);
     double hat = wrap(16 * p + 0.5) < 0.125;
-    hat *= 1;
+    hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
diff @ 2018-10-03 21:51:58 +0100
diff --git a/src/go.c b/src/go.c
index a6c56792..053f8fd7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -292,7 +292,7 @@ go(S *s, int channels, const float *in, float *out)
     double hat = wrap(16 * p + 0.5) < 0.125;
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
diff @ 2018-10-03 21:52:04 +0100
diff --git a/src/go.c b/src/go.c
index 053f8fd7..c36ab0af 100644
--- a/src/go.c
+++ b/src/go.c
@@ -245,8 +245,8 @@ go(S *s, int channels, const float *in, float *out)
     so2echo(&s->so2.echo[c], 40, 40,
       tanh(so2[c] + RESET*impulse[c]));
   }
-  mixdown[0] += so2[0];
-  mixdown[1] += so2[1];
+//  mixdown[0] += so2[0];
+//  mixdown[1] += so2[1];
 
   // ===================================================================
   // = 2 = binaray
diff @ 2018-10-03 21:52:12 +0100
diff --git a/src/go.c b/src/go.c
index c36ab0af..9c99143f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -293,7 +293,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 25)*25)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 5)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
     double crush = phasor(&s->tcrush, 4000);
diff @ 2018-10-03 21:52:17 +0100
diff --git a/src/go.c b/src/go.c
index 9c99143f..440f0e2a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -293,7 +293,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 25)*25)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 5)*5);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
     double crush = phasor(&s->tcrush, 4000);
diff @ 2018-10-03 21:52:25 +0100
diff --git a/src/go.c b/src/go.c
index 440f0e2a..4461d7b5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -294,8 +294,8 @@ go(S *s, int channels, const float *in, float *out)
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 15)*15);
-    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
+    kick += sin(vcf(&s->tkick[2], kick, khz*7, 5)*5)
+         *  sin(vcf(&s->tkick[3], kick, khz*9, 5)*5);
     double crush = phasor(&s->tcrush, 4000);
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
diff @ 2018-10-03 21:52:31 +0100
diff --git a/src/go.c b/src/go.c
index 4461d7b5..0ed73591 100644
--- a/src/go.c
+++ b/src/go.c
@@ -294,8 +294,8 @@ go(S *s, int channels, const float *in, float *out)
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 15)*15);
-    kick += sin(vcf(&s->tkick[2], kick, khz*7, 5)*5)
-         *  sin(vcf(&s->tkick[3], kick, khz*9, 5)*5);
+    kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
+         *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
     double crush = phasor(&s->tcrush, 4000);
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
diff @ 2018-10-03 21:52:51 +0100
diff --git a/src/go.c b/src/go.c
index 0ed73591..22eca087 100644
--- a/src/go.c
+++ b/src/go.c
@@ -293,7 +293,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 25)*25)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 15)*15);
+    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?3:4), 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
     double crush = phasor(&s->tcrush, 4000);
diff @ 2018-10-03 21:53:01 +0100
diff --git a/src/go.c b/src/go.c
index 22eca087..c60dbe5a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -293,7 +293,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 25)*25)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?3:4), 15)*15);
+    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?3:4), 25)*25);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
     double crush = phasor(&s->tcrush, 4000);
diff @ 2018-10-03 21:53:08 +0100
diff --git a/src/go.c b/src/go.c
index c60dbe5a..df2d7f41 100644
--- a/src/go.c
+++ b/src/go.c
@@ -293,7 +293,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 25)*25)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?3:4), 25)*25);
+    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?3:5), 25)*25);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
     double crush = phasor(&s->tcrush, 4000);
diff @ 2018-10-03 21:53:20 +0100
diff --git a/src/go.c b/src/go.c
index df2d7f41..aaca3e49 100644
--- a/src/go.c
+++ b/src/go.c
@@ -292,7 +292,7 @@ go(S *s, int channels, const float *in, float *out)
     double hat = wrap(16 * p + 0.5) < 0.125;
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 25)*25)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 30)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?3:5), 25)*25);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
diff @ 2018-10-03 21:53:29 +0100
diff --git a/src/go.c b/src/go.c
index aaca3e49..754f1035 100644
--- a/src/go.c
+++ b/src/go.c
@@ -296,7 +296,7 @@ go(S *s, int channels, const float *in, float *out)
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?3:5), 25)*25);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
-    double crush = phasor(&s->tcrush, 4000);
+    double crush = phasor(&s->tcrush, 4000 * pow(2, p));
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
     double kgain = 1;
diff @ 2018-10-03 21:53:35 +0100
diff --git a/src/go.c b/src/go.c
index 754f1035..98dac996 100644
--- a/src/go.c
+++ b/src/go.c
@@ -289,7 +289,7 @@ go(S *s, int channels, const float *in, float *out)
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
-    double hat = wrap(16 * p + 0.5) < 0.125;
+    double hat = wrap(16 * p + 0.5) < 0.125 * p;
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 30)*25)*2;
diff @ 2018-10-03 21:53:42 +0100
diff --git a/src/go.c b/src/go.c
index 98dac996..47ea4eb9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -289,7 +289,7 @@ go(S *s, int channels, const float *in, float *out)
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
-    double hat = wrap(16 * p + 0.5) < 0.125 * p;
+    double hat = wrap(16 * p + 0.5) < 0.125 * (1 + p);
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 30)*25)*2;
diff @ 2018-10-03 21:54:00 +0100
diff --git a/src/go.c b/src/go.c
index 47ea4eb9..4403b246 100644
--- a/src/go.c
+++ b/src/go.c
@@ -324,8 +324,8 @@ go(S *s, int channels, const float *in, float *out)
     double na = env * so2[0];
     double nb = env * so2[1];
     double q = 100;
-    na *= 5;
-    nb *= 5;
+    na *= 10;
+    nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-10-03 21:54:07 +0100
diff --git a/src/go.c b/src/go.c
index 4403b246..c495dafb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -336,8 +336,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.1*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.1*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-10-03 21:54:11 +0100
diff --git a/src/go.c b/src/go.c
index c495dafb..1da31d6f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -336,8 +336,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0.1*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.1*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.2*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.2*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-10-03 21:54:14 +0100
diff --git a/src/go.c b/src/go.c
index 1da31d6f..d5e908bd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -336,8 +336,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0.2*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.2*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.3*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.3*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-10-03 21:54:16 +0100
diff --git a/src/go.c b/src/go.c
index d5e908bd..663a0eb4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -336,8 +336,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0.3*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.3*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.4*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.4*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-10-03 21:54:19 +0100
diff --git a/src/go.c b/src/go.c
index 663a0eb4..de47bf94 100644
--- a/src/go.c
+++ b/src/go.c
@@ -336,8 +336,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0.4*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.4*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.5*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.5*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-10-03 21:54:25 +0100
diff --git a/src/go.c b/src/go.c
index de47bf94..ae750851 100644
--- a/src/go.c
+++ b/src/go.c
@@ -336,8 +336,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0.5*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.5*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.7*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.7*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-10-03 21:54:31 +0100
diff --git a/src/go.c b/src/go.c
index ae750851..5d282f19 100644
--- a/src/go.c
+++ b/src/go.c
@@ -336,8 +336,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0.7*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.7*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.9*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.9*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-10-03 21:54:33 +0100
diff --git a/src/go.c b/src/go.c
index 5d282f19..fc703903 100644
--- a/src/go.c
+++ b/src/go.c
@@ -336,8 +336,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0.9*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.9*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 1*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 1*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-10-03 21:54:47 +0100
diff --git a/src/go.c b/src/go.c
index fc703903..e6e06f7a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -336,8 +336,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 1*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 1*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na = 1*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb = 1*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-10-03 21:54:55 +0100
diff --git a/src/go.c b/src/go.c
index e6e06f7a..1f945ab2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -324,8 +324,8 @@ go(S *s, int channels, const float *in, float *out)
     double na = env * so2[0];
     double nb = env * so2[1];
     double q = 100;
-    na *= 10;
-    nb *= 10;
+    na *= 20;
+    nb *= 20;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-10-03 21:54:58 +0100
diff --git a/src/go.c b/src/go.c
index 1f945ab2..b0b88d0e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -323,7 +323,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * so2[0];
     double nb = env * so2[1];
-    double q = 100;
+    double q = 160;
     na *= 20;
     nb *= 20;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-10-03 21:55:19 +0100
diff --git a/src/go.c b/src/go.c
index b0b88d0e..6fd0cd56 100644
--- a/src/go.c
+++ b/src/go.c
@@ -293,7 +293,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 30)*25)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?3:5), 25)*25);
+    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?6:12), 25)*25);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
     double crush = phasor(&s->tcrush, 4000 * pow(2, p));
diff @ 2018-10-03 21:55:24 +0100
diff --git a/src/go.c b/src/go.c
index 6fd0cd56..a1a4a643 100644
--- a/src/go.c
+++ b/src/go.c
@@ -292,7 +292,7 @@ go(S *s, int channels, const float *in, float *out)
     double hat = wrap(16 * p + 0.5) < 0.125 * (1 + p);
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 30)*25)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 70)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?6:12), 25)*25);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
diff @ 2018-10-03 21:55:29 +0100
diff --git a/src/go.c b/src/go.c
index a1a4a643..9eab426e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -292,7 +292,7 @@ go(S *s, int channels, const float *in, float *out)
     double hat = wrap(16 * p + 0.5) < 0.125 * (1 + p);
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 70)*25)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 70)*50)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?6:12), 25)*25);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
diff @ 2018-10-03 21:55:43 +0100
diff --git a/src/go.c b/src/go.c
index 9eab426e..d1e40433 100644
--- a/src/go.c
+++ b/src/go.c
@@ -294,8 +294,8 @@ go(S *s, int channels, const float *in, float *out)
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 70)*50)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?6:12), 25)*25);
-    kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
-         *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
+//    kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
+//         *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
     double crush = phasor(&s->tcrush, 4000 * pow(2, p));
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
diff @ 2018-10-03 21:55:45 +0100
diff --git a/src/go.c b/src/go.c
index d1e40433..a46529b7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -293,7 +293,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= 2;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 70)*50)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p)<0.5?6:12), 25)*25);
+    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p)<0.5?6:12), 25)*25);
 //    kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
 //         *  sin(vcf(&s->tkick[3], kick, khz*9, 25)*15);
     double crush = phasor(&s->tcrush, 4000 * pow(2, p));
diff @ 2018-10-03 21:55:52 +0100
diff --git a/src/go.c b/src/go.c
index a46529b7..aa92cd32 100644
--- a/src/go.c
+++ b/src/go.c
@@ -291,7 +291,7 @@ go(S *s, int channels, const float *in, float *out)
     kick = tanh(kick);
     double hat = wrap(16 * p + 0.5) < 0.125 * (1 + p);
     hat *= 2;
-    double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
+    double khz = 50 + 10 * (wrap(8 * p) > 0.6) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 70)*50)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p)<0.5?6:12), 25)*25);
 //    kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
diff @ 2018-10-03 21:55:55 +0100
diff --git a/src/go.c b/src/go.c
index aa92cd32..f9b83c7e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -291,7 +291,7 @@ go(S *s, int channels, const float *in, float *out)
     kick = tanh(kick);
     double hat = wrap(16 * p + 0.5) < 0.125 * (1 + p);
     hat *= 2;
-    double khz = 50 + 10 * (wrap(8 * p) > 0.6) + 25 * (wrap(2 * p) > 1);
+    double khz = 50 + 10 * (wrap(8 * p) > 0.5) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 70)*50)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p)<0.5?6:12), 25)*25);
 //    kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
diff @ 2018-10-03 21:56:11 +0100
diff --git a/src/go.c b/src/go.c
index f9b83c7e..6c207613 100644
--- a/src/go.c
+++ b/src/go.c
@@ -291,7 +291,7 @@ go(S *s, int channels, const float *in, float *out)
     kick = tanh(kick);
     double hat = wrap(16 * p + 0.5) < 0.125 * (1 + p);
     hat *= 2;
-    double khz = 50 + 10 * (wrap(8 * p) > 0.5) + 25 * (wrap(2 * p) > 1);
+    double khz = 50 + 10 * (wrap(8 * p) > 0.5) + 25 * (wrap(2 * p) > 0.75);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 70)*50)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p)<0.5?6:12), 25)*25);
 //    kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
diff @ 2018-10-03 21:56:29 +0100
diff --git a/src/go.c b/src/go.c
index 6c207613..db48ddc6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -257,7 +257,7 @@ go(S *s, int channels, const float *in, float *out)
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
     double probability = pow(0.5, N - zeroes);
-    probability = (6.5 + 4 * (n >= 0xC001)) * probability - 0.5;
+    probability = (8 + 4 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-10-03 21:56:32 +0100
diff --git a/src/go.c b/src/go.c
index db48ddc6..1254fbbb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -257,7 +257,7 @@ go(S *s, int channels, const float *in, float *out)
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
     double probability = pow(0.5, N - zeroes);
-    probability = (8 + 4 * (n >= 0xC001)) * probability - 0.5;
+    probability = (8 + 5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-10-03 21:56:34 +0100
diff --git a/src/go.c b/src/go.c
index 1254fbbb..5ead9043 100644
--- a/src/go.c
+++ b/src/go.c
@@ -256,7 +256,7 @@ go(S *s, int channels, const float *in, float *out)
     int N = 16;
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    double probability = pow(0.5, N - zeroes);
+    double probability = pow(0.55, N - zeroes);
     probability = (8 + 5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
diff @ 2018-10-03 21:56:45 +0100
diff --git a/src/go.c b/src/go.c
index 5ead9043..8a91ccb2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -256,7 +256,7 @@ go(S *s, int channels, const float *in, float *out)
     int N = 16;
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    double probability = pow(0.55, N - zeroes);
+    double probability = pow(0.57, N - zeroes);
     probability = (8 + 5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
diff @ 2018-10-03 21:57:03 +0100
diff --git a/src/go.c b/src/go.c
index 8a91ccb2..72b37256 100644
--- a/src/go.c
+++ b/src/go.c
@@ -336,8 +336,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na = 1*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb = 1*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na -= 1*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb -= 1*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-10-03 21:57:16 +0100
diff --git a/src/go.c b/src/go.c
index 72b37256..3c4dbc0c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.1, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.1, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:57:34 +0100
diff --git a/src/go.c b/src/go.c
index 3c4dbc0c..8889dbd8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -364,8 +364,8 @@ go(S *s, int channels, const float *in, float *out)
     double t = twopi * p;
     double co = cos(t);
     double si = sin(t);
-    double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 2);
-    double rdelms = ldelms;
+    double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./8);
+    double rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-10-03 21:57:41 +0100
diff --git a/src/go.c b/src/go.c
index 8889dbd8..55c3297c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.1, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.1, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.2, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.2, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:57:47 +0100
diff --git a/src/go.c b/src/go.c
index 55c3297c..7d50e8b2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.2, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.2, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.3, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.3, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:57:51 +0100
diff --git a/src/go.c b/src/go.c
index 7d50e8b2..ee4f6e8d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -373,7 +373,7 @@ go(S *s, int channels, const float *in, float *out)
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0.3, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.3, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.4, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:57:53 +0100
diff --git a/src/go.c b/src/go.c
index ee4f6e8d..0e689240 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,7 +372,7 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.3, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.4, pow(wrap(8 * p), 0.25), 0));
     es[1] = mix(mixdown[1], es[1], mix(0.4, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
diff @ 2018-10-03 21:58:00 +0100
diff --git a/src/go.c b/src/go.c
index 0e689240..883cda48 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.4, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.4, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:58:13 +0100
diff --git a/src/go.c b/src/go.c
index 883cda48..e5e6f2f8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.6, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.6, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:58:18 +0100
diff --git a/src/go.c b/src/go.c
index e5e6f2f8..49c17106 100644
--- a/src/go.c
+++ b/src/go.c
@@ -299,7 +299,7 @@ go(S *s, int channels, const float *in, float *out)
     double crush = phasor(&s->tcrush, 4000 * pow(2, p));
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
-    double kgain = 1;
+    double kgain = 0;
     kgain = samphold(&s->tgate[0], kgain, p);
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
diff @ 2018-10-03 21:58:28 +0100
diff --git a/src/go.c b/src/go.c
index 49c17106..2244bc8e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.6, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.6, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.7, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.7, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:58:42 +0100
diff --git a/src/go.c b/src/go.c
index 2244bc8e..101dab87 100644
--- a/src/go.c
+++ b/src/go.c
@@ -264,7 +264,7 @@ go(S *s, int channels, const float *in, float *out)
     s->benv.y += trigger;
     env = lop(&s->benv, 0, 5);
     double harmonic = 5 + clamp(N - zeroes - 3, 0, 20);
-    freq = 20 * samphold(&s->bsh, harmonic, 1 - trigger);
+    freq = 10 * samphold(&s->bsh, harmonic, 1 - trigger);
     freq = lop(&s->bfreq, freq, 20);
   }
 //  env = 0.5;
diff @ 2018-10-03 21:59:03 +0100
diff --git a/src/go.c b/src/go.c
index 101dab87..154b96de 100644
--- a/src/go.c
+++ b/src/go.c
@@ -291,7 +291,7 @@ go(S *s, int channels, const float *in, float *out)
     kick = tanh(kick);
     double hat = wrap(16 * p + 0.5) < 0.125 * (1 + p);
     hat *= 2;
-    double khz = 50 + 10 * (wrap(8 * p) > 0.5) + 25 * (wrap(2 * p) > 0.75);
+    double khz = 50 + 10 * (wrap(8 * p) > 1.5) + 25 * (wrap(2 * p) > 1.75);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 70)*50)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p)<0.5?6:12), 25)*25);
 //    kick += sin(vcf(&s->tkick[2], kick, khz*7, 25)*15)
@@ -299,7 +299,7 @@ go(S *s, int channels, const float *in, float *out)
     double crush = phasor(&s->tcrush, 4000 * pow(2, p));
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
-    double kgain = 0;
+    double kgain = 1;
     kgain = samphold(&s->tgate[0], kgain, p);
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
diff @ 2018-10-03 21:59:18 +0100
diff --git a/src/go.c b/src/go.c
index 154b96de..9b19902d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.7, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.7, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.7, pow(wrap(8 * p), 0.25), 0.5));
+    es[1] = mix(mixdown[1], es[1], mix(0.7, pow(wrap(8 * p), 0.25), 0.5));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:59:26 +0100
diff --git a/src/go.c b/src/go.c
index 9b19902d..2f2034c7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.7, pow(wrap(8 * p), 0.25), 0.5));
-    es[1] = mix(mixdown[1], es[1], mix(0.7, pow(wrap(8 * p), 0.25), 0.5));
+    es[0] = mix(mixdown[0], es[0], mix(0.8, pow(wrap(8 * p), 0.25), 0.5));
+    es[1] = mix(mixdown[1], es[1], mix(0.8, pow(wrap(8 * p), 0.25), 0.5));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:59:33 +0100
diff --git a/src/go.c b/src/go.c
index 2f2034c7..c201e7b8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.8, pow(wrap(8 * p), 0.25), 0.5));
-    es[1] = mix(mixdown[1], es[1], mix(0.8, pow(wrap(8 * p), 0.25), 0.5));
+    es[0] = mix(mixdown[0], es[0], mix(0.8, pow(wrap(8 * p), 0.25), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0.8, pow(wrap(8 * p), 0.25), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:59:40 +0100
diff --git a/src/go.c b/src/go.c
index c201e7b8..0636e760 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.8, pow(wrap(8 * p), 0.25), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0.8, pow(wrap(8 * p), 0.25), 1));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:59:47 +0100
diff --git a/src/go.c b/src/go.c
index 0636e760..d340461d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 1));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 21:59:53 +0100
diff --git a/src/go.c b/src/go.c
index d340461d..966698bf 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 1));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.5), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.5), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 22:00:08 +0100
diff --git a/src/go.c b/src/go.c
index 966698bf..d340461d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.5), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.5), 1));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 22:00:11 +0100
diff --git a/src/go.c b/src/go.c
index d340461d..de0dfdcb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -372,8 +372,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 1));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.125), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.125), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 22:00:29 +0100
diff --git a/src/go.c b/src/go.c
index de0dfdcb..035cdd05 100644
--- a/src/go.c
+++ b/src/go.c
@@ -364,7 +364,7 @@ go(S *s, int channels, const float *in, float *out)
     double t = twopi * p;
     double co = cos(t);
     double si = sin(t);
-    double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./8);
+    double ldelms = 60000 / bpm * (p < 0.75 ? (wrap(2 * p) > 0.5 ? 2 : 1) : 1./8);
     double rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2018-10-03 22:00:49 +0100
diff --git a/src/go.c b/src/go.c
index 035cdd05..a4ec141f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -365,7 +365,7 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm * (p < 0.75 ? (wrap(2 * p) > 0.5 ? 2 : 1) : 1./8);
-    double rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./16);
+    double rdelms = 60000 / bpm * (p < 0.5 ? (wrap(4 *p) > 0.5 ? 1 : 1./64) : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-10-03 22:00:56 +0100
diff --git a/src/go.c b/src/go.c
index a4ec141f..6c87dc01 100644
--- a/src/go.c
+++ b/src/go.c
@@ -366,8 +366,8 @@ go(S *s, int channels, const float *in, float *out)
     double si = sin(t);
     double ldelms = 60000 / bpm * (p < 0.75 ? (wrap(2 * p) > 0.5 ? 2 : 1) : 1./8);
     double rdelms = 60000 / bpm * (p < 0.5 ? (wrap(4 *p) > 0.5 ? 1 : 1./64) : 1./16);
-    ldelms = lop(&s->elop[0], ldelms, 5);
-    rdelms = lop(&s->elop[1], rdelms, 5);
+    ldelms = lop(&s->elop[0], ldelms, 15);
+    rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
diff @ 2018-10-03 22:01:58 +0100
diff --git a/src/go.c b/src/go.c
index 6c87dc01..87e0f98b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -364,7 +364,8 @@ go(S *s, int channels, const float *in, float *out)
     double t = twopi * p;
     double co = cos(t);
     double si = sin(t);
-    double ldelms = 60000 / bpm * (p < 0.75 ? (wrap(2 * p) > 0.5 ? 2 : 1) : 1./8);
+    double seq[4] = { 64, 32, 48, 12 };
+    double ldelms = 60000 / bpm * (p < 0.75 ? (wrap(2 * p) > 0.5 ? (1./seq[(int)floor(4*p)]) : 1) : 1./8);
     double rdelms = 60000 / bpm * (p < 0.5 ? (wrap(4 *p) > 0.5 ? 1 : 1./64) : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
diff @ 2018-10-03 22:02:15 +0100
diff --git a/src/go.c b/src/go.c
index 87e0f98b..73e18a2a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -365,7 +365,7 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double seq[4] = { 64, 32, 48, 12 };
-    double ldelms = 60000 / bpm * (p < 0.75 ? (wrap(2 * p) > 0.5 ? (1./seq[(int)floor(4*p)]) : 1) : 1./8);
+    double ldelms = 60000 / bpm * (p < 0.75 ? (wrap(4 * p) > 0.5 ? (1./seq[(int)floor(4*p)]) : 1) : 1./8);
     double rdelms = 60000 / bpm * (p < 0.5 ? (wrap(4 *p) > 0.5 ? 1 : 1./64) : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
diff @ 2018-10-03 22:02:31 +0100
diff --git a/src/go.c b/src/go.c
index 73e18a2a..e279257e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -365,7 +365,10 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double seq[4] = { 64, 32, 48, 12 };
-    double ldelms = 60000 / bpm * (p < 0.75 ? (wrap(4 * p) > 0.5 ? (1./seq[(int)floor(4*p)]) : 1) : 1./8);
+    double ldelms = 60000 / bpm *
+      (p < 0.75
+      ? (wrap(4 * p) > 0.5 ? (1./seq[(int)floor(4*p)]) : 1)
+      : 1./8);
     double rdelms = 60000 / bpm * (p < 0.5 ? (wrap(4 *p) > 0.5 ? 1 : 1./64) : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
diff @ 2018-10-03 22:02:50 +0100
diff --git a/src/go.c b/src/go.c
index e279257e..6c3ec65c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -358,7 +358,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
-    double hz = 0.125 * bpm / 60;
+    double hz = 0.125/4 * bpm / 60;
     double p = phasor(&s->ephase, hz);
     elphase = p;
     double t = twopi * p;
diff @ 2018-10-03 22:03:10 +0100
diff --git a/src/go.c b/src/go.c
index 6c3ec65c..cdc334e5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -376,8 +376,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.125), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.125), 1));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 22:03:52 +0100
diff --git a/src/go.c b/src/go.c
index cdc334e5..37e7013c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -365,11 +365,14 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double seq[4] = { 64, 32, 48, 12 };
+    double seq2[4] = { 65, 33, 47, 11 };
     double ldelms = 60000 / bpm *
       (p < 0.75
       ? (wrap(4 * p) > 0.5 ? (1./seq[(int)floor(4*p)]) : 1)
       : 1./8);
-    double rdelms = 60000 / bpm * (p < 0.5 ? (wrap(4 *p) > 0.5 ? 1 : 1./64) : 1./16);
+    double rdelms = 60000 / bpm * (p < 0.5
+      ? (wrap(4 * p) < 0.5 ? (1./seq2[(int)floor(4*p)]) : 1)
+       : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-10-03 22:04:19 +0100
diff --git a/src/go.c b/src/go.c
index 37e7013c..d3ecc672 100644
--- a/src/go.c
+++ b/src/go.c
@@ -257,7 +257,7 @@ go(S *s, int channels, const float *in, float *out)
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
     double probability = pow(0.57, N - zeroes);
-    probability = (8 + 5 * (n >= 0xC001)) * probability - 0.5;
+    probability = (0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-10-03 22:05:23 +0100
diff --git a/src/go.c b/src/go.c
index d3ecc672..0910596b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -198,6 +198,7 @@ typedef struct
   // = append only data structure
 
   BIQUAD sow[2];
+  BIQUAD elbq[2];
 
 } S;
 
@@ -377,6 +378,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
+    el = biquad(highpass(&s->elbq[0], 10, flatq), el);
+    er = biquad(highpass(&s->elbq[0], 10, flatq), er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
diff @ 2018-10-03 22:05:26 +0100
diff --git a/src/go.c b/src/go.c
index 0910596b..f4b5ec65 100644
--- a/src/go.c
+++ b/src/go.c
@@ -379,7 +379,7 @@ go(S *s, int channels, const float *in, float *out)
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 10, flatq), el);
-    er = biquad(highpass(&s->elbq[0], 10, flatq), er);
+    er = biquad(highpass(&s->elbq[1], 10, flatq), er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
diff @ 2018-10-03 22:05:32 +0100
diff --git a/src/go.c b/src/go.c
index f4b5ec65..8f63067d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -378,8 +378,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
-    el = biquad(highpass(&s->elbq[0], 10, flatq), el);
-    er = biquad(highpass(&s->elbq[1], 10, flatq), er);
+    el = biquad(highpass(&s->elbq[0], 20, flatq), el);
+    er = biquad(highpass(&s->elbq[1], 20, flatq), er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
diff @ 2018-10-03 22:05:45 +0100
diff --git a/src/go.c b/src/go.c
index 8f63067d..63b7f954 100644
--- a/src/go.c
+++ b/src/go.c
@@ -378,8 +378,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
-    el = biquad(highpass(&s->elbq[0], 20, flatq), el);
-    er = biquad(highpass(&s->elbq[1], 20, flatq), er);
+    el = biquad(highpass(&s->elbq[0], 50, 3), el);
+    er = biquad(highpass(&s->elbq[1], 50, 3), er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
diff @ 2018-10-03 22:05:58 +0100
diff --git a/src/go.c b/src/go.c
index 63b7f954..631f95bb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -378,7 +378,7 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
-    el = biquad(highpass(&s->elbq[0], 50, 3), el);
+    el = biquad(highpass(&s->elbq[0], 60, 3), el);
     er = biquad(highpass(&s->elbq[1], 50, 3), er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
diff @ 2018-10-03 22:06:05 +0100
diff --git a/src/go.c b/src/go.c
index 631f95bb..bfeb6445 100644
--- a/src/go.c
+++ b/src/go.c
@@ -379,7 +379,7 @@ go(S *s, int channels, const float *in, float *out)
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 60, 3), el);
-    er = biquad(highpass(&s->elbq[1], 50, 3), er);
+    er = biquad(highpass(&s->elbq[1], 61, 3), er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
diff @ 2018-10-03 22:06:17 +0100
diff --git a/src/go.c b/src/go.c
index bfeb6445..af8d441d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -380,6 +380,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 60, 3), el);
     er = biquad(highpass(&s->elbq[1], 61, 3), er);
+    el = sin(el);
+    er = sin(er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
diff @ 2018-10-03 22:06:26 +0100
diff --git a/src/go.c b/src/go.c
index af8d441d..1ee5d3aa 100644
--- a/src/go.c
+++ b/src/go.c
@@ -380,8 +380,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 60, 3), el);
     er = biquad(highpass(&s->elbq[1], 61, 3), er);
-    el = sin(el);
-    er = sin(er);
+    el = sin(2 * el);
+    er = sin(2 *er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
diff @ 2018-10-03 22:06:30 +0100
diff --git a/src/go.c b/src/go.c
index 1ee5d3aa..3a6ea23d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -380,8 +380,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 60, 3), el);
     er = biquad(highpass(&s->elbq[1], 61, 3), er);
-    el = sin(2 * el);
-    er = sin(2 *er);
+    el = sin(3 * el);
+    er = sin(3 * er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
diff @ 2018-10-03 22:06:38 +0100
diff --git a/src/go.c b/src/go.c
index 3a6ea23d..f2dea2f1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -380,8 +380,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 60, 3), el);
     er = biquad(highpass(&s->elbq[1], 61, 3), er);
-    el = sin(3 * el);
-    er = sin(3 * er);
+    el = sin(5 * el);
+    er = sin(5 * er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
diff @ 2018-10-03 22:06:57 +0100
diff --git a/src/go.c b/src/go.c
index f2dea2f1..f4d99495 100644
--- a/src/go.c
+++ b/src/go.c
@@ -384,8 +384,8 @@ go(S *s, int channels, const float *in, float *out)
     er = sin(5 * er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(4 * 8 * p), 0.125), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(4 * 8 * p), 0.125), 0));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(4 * 8 * p), 0.125), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-10-03 22:07:07 +0100
diff --git a/src/go.c b/src/go.c
index f4d99495..81da0398 100644
--- a/src/go.c
+++ b/src/go.c
@@ -374,8 +374,8 @@ go(S *s, int channels, const float *in, float *out)
     double rdelms = 60000 / bpm * (p < 0.5
       ? (wrap(4 * p) < 0.5 ? (1./seq2[(int)floor(4*p)]) : 1)
        : 1./16);
-    ldelms = lop(&s->elop[0], ldelms, 15);
-    rdelms = lop(&s->elop[1], rdelms, 15);
+    ldelms = lop(&s->elop[0], ldelms, 5);
+    rdelms = lop(&s->elop[1], rdelms, 5);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 60, 3), el);
diff @ 2018-10-03 22:07:10 +0100
diff --git a/src/go.c b/src/go.c
index 81da0398..dfe9d8e3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -374,8 +374,8 @@ go(S *s, int channels, const float *in, float *out)
     double rdelms = 60000 / bpm * (p < 0.5
       ? (wrap(4 * p) < 0.5 ? (1./seq2[(int)floor(4*p)]) : 1)
        : 1./16);
-    ldelms = lop(&s->elop[0], ldelms, 5);
-    rdelms = lop(&s->elop[1], rdelms, 5);
+    ldelms = lop(&s->elop[0], ldelms, 1);
+    rdelms = lop(&s->elop[1], rdelms, 1);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 60, 3), el);
diff @ 2018-10-03 22:07:26 +0100
diff --git a/src/go.c b/src/go.c
index dfe9d8e3..851f8496 100644
--- a/src/go.c
+++ b/src/go.c
@@ -380,8 +380,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 60, 3), el);
     er = biquad(highpass(&s->elbq[1], 61, 3), er);
-    el = sin(5 * el);
-    er = sin(5 * er);
+    el = sin(6 * el);
+    er = sin(6 * er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(4 * 8 * p), 0.125), 0));
diff @ 2018-10-03 22:07:28 +0100
diff --git a/src/go.c b/src/go.c
index 851f8496..f026a996 100644
--- a/src/go.c
+++ b/src/go.c
@@ -380,8 +380,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 60, 3), el);
     er = biquad(highpass(&s->elbq[1], 61, 3), er);
-    el = sin(6 * el);
-    er = sin(6 * er);
+    el = sin(16 * el);
+    er = sin(16 * er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(4 * 8 * p), 0.125), 0));
diff @ 2018-10-03 22:08:01 +0100
diff --git a/src/go.c b/src/go.c
index f026a996..f3b5e28d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -380,6 +380,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 60, 3), el);
     er = biquad(highpass(&s->elbq[1], 61, 3), er);
+    el = biquad(lowpass(&s->sow[0], 600, 3), el);
+    er = biquad(lowpass(&s->sow[1], 601, 3), er);
     el = sin(16 * el);
     er = sin(16 * er);
     double es[2] = { co * el + si * er, -si * el + co * er };
diff @ 2018-10-03 22:08:08 +0100
diff --git a/src/go.c b/src/go.c
index f3b5e28d..f7680d18 100644
--- a/src/go.c
+++ b/src/go.c
@@ -380,8 +380,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     el = biquad(highpass(&s->elbq[0], 60, 3), el);
     er = biquad(highpass(&s->elbq[1], 61, 3), er);
-    el = biquad(lowpass(&s->sow[0], 600, 3), el);
-    er = biquad(lowpass(&s->sow[1], 601, 3), er);
+    el = biquad(lowpass(&s->sow[0], 60, 3), el);
+    er = biquad(lowpass(&s->sow[1], 61, 3), er);
     el = sin(16 * el);
     er = sin(16 * er);
     double es[2] = { co * el + si * er, -si * el + co * er };
diff @ 2018-10-03 22:08:48 +0100
diff --git a/src/go.c b/src/go.c
index f7680d18..ea280c58 100644
--- a/src/go.c
+++ b/src/go.c
@@ -523,12 +523,16 @@ go(S *s, int channels, const float *in, float *out)
       o[0] += kick;
       o[1] += kick;
     }
-    if (0)
+    if (1)
     { // hihat
       double closed = 1 - wrap(8 * t - 0.58);
       double open   = 1 - wrap(4 * t - 0.50);
       closed *= closed;
       closed *= closed;
+      open   *= open;
+      open   *= open;
+      closed *= closed;
+      closed *= closed;
       closed *= 1.3;
       open   *= 1.3;
       closed *= closed;
@@ -543,7 +547,7 @@ go(S *s, int channels, const float *in, float *out)
       o[1] += 4 * tanh(env * hip(&s->hip59[4],
                              hip(&s->hip59[5], h * noise(), 3000), 1500));
     }
-    if (1)
+    if (0)
     { // bass
       double lfo = lop(&s->lop59[0], wrap(8/3. * t), 5);
       double sub = sin(twopi * osc);
@@ -588,8 +592,8 @@ go(S *s, int channels, const float *in, float *out)
       o[1] += r;
     }
     compress(o, &s->comp59, 5, 10, 15, 36, o);
-    mixdown[0] += o[0] * 0;
-    mixdown[1] += o[1] * 0;
+    mixdown[0] += o[0] * 1;
+    mixdown[1] += o[1] * 1;
   }
 
   // ===================================================================
diff @ 2018-10-03 22:09:16 +0100
diff --git a/src/go.c b/src/go.c
index ea280c58..8b942da3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -382,8 +382,8 @@ go(S *s, int channels, const float *in, float *out)
     er = biquad(highpass(&s->elbq[1], 61, 3), er);
     el = biquad(lowpass(&s->sow[0], 60, 3), el);
     er = biquad(lowpass(&s->sow[1], 61, 3), er);
-    el = sin(16 * el);
-    er = sin(16 * er);
+    el = sin(1 * el);
+    er = sin(1 * er);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(4 * 8 * p), 0.125), 0));
@@ -505,7 +505,7 @@ go(S *s, int channels, const float *in, float *out)
     double t = phasor(&s->phase59, tempo);
     double osc = phasor(&s->osc59, hz);
     double o[2] = { 0, 0 };
-    if (0)
+    if (1)
     { // kick
       double peak = hz * 8;
       double env = 1 - wrap(2 * t);
diff @ 2018-10-03 22:09:31 +0100
diff --git a/src/go.c b/src/go.c
index 8b942da3..ecbd878c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -562,7 +562,7 @@ go(S *s, int channels, const float *in, float *out)
       o[0] += bass;
       o[1] += bass;
     }
-    if (0)
+    if (1)
     { // bell
       double env = lop(&s->lop59[4], clamp(2 * (0.5 - wrap(0.5 + 4 * t)), 0, 1), 15);
       double env2 = lop(&s->lop59[5], clamp(2 * (0.5 - wrap(8 * t)) * (wrap(4 * t) < 0.5), 0, 1), 15);
diff @ 2018-10-03 22:09:42 +0100
diff --git a/src/go.c b/src/go.c
index ecbd878c..93d8a8b8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -570,7 +570,7 @@ go(S *s, int channels, const float *in, float *out)
         = sin(4 * twopi * osc)
         * sin(5 * twopi * osc)
         * sin(7 * twopi * osc)
-        * env
+        * env * (t < 0.5)
         * 4;
       double bell1 = pitchshift(&s->ps59[0], 2, 100, 3, bell);
       double bell2 = pitchshift(&s->ps59[1], 2, 100, 4, bell1);
diff @ 2018-10-03 22:09:50 +0100
diff --git a/src/go.c b/src/go.c
index 93d8a8b8..8193d3b6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -570,7 +570,7 @@ go(S *s, int channels, const float *in, float *out)
         = sin(4 * twopi * osc)
         * sin(5 * twopi * osc)
         * sin(7 * twopi * osc)
-        * env * (t < 0.5)
+        * env * (t < 0.25)
         * 4;
       double bell1 = pitchshift(&s->ps59[0], 2, 100, 3, bell);
       double bell2 = pitchshift(&s->ps59[1], 2, 100, 4, bell1);
diff @ 2018-10-03 22:10:11 +0100
diff --git a/src/go.c b/src/go.c
index 8193d3b6..16818335 100644
--- a/src/go.c
+++ b/src/go.c
@@ -391,8 +391,8 @@ go(S *s, int channels, const float *in, float *out)
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
-    mixdown[0] = es[0];
-    mixdown[1] = es[1];
+    mixdown[0] = 0*es[0];
+    mixdown[1] = 0*es[1];
   }
 
   // ===================================================================
@@ -547,7 +547,7 @@ go(S *s, int channels, const float *in, float *out)
       o[1] += 4 * tanh(env * hip(&s->hip59[4],
                              hip(&s->hip59[5], h * noise(), 3000), 1500));
     }
-    if (0)
+    if (1)
     { // bass
       double lfo = lop(&s->lop59[0], wrap(8/3. * t), 5);
       double sub = sin(twopi * osc);
diff @ 2018-10-03 22:10:36 +0100
diff --git a/src/go.c b/src/go.c
index 16818335..1a03e078 100644
--- a/src/go.c
+++ b/src/go.c
@@ -557,7 +557,7 @@ go(S *s, int channels, const float *in, float *out)
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
         + sin(4 * twopi * vcf(&s->vcf59[0], bosc, 4 * hz, 6))
-        + sin(2 * twopi * vcf(&s->vcf59[1], bosc, 8 * hz, 4)) * 0.7;
+        + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, 8 * hz, 4)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
       o[1] += bass;
diff @ 2018-10-03 22:10:49 +0100
diff --git a/src/go.c b/src/go.c
index 1a03e078..e641e041 100644
--- a/src/go.c
+++ b/src/go.c
@@ -556,7 +556,7 @@ go(S *s, int channels, const float *in, float *out)
       double bass
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
-        + sin(4 * twopi * vcf(&s->vcf59[0], bosc, 4 * hz, 6))
+        + sin(4 * ceil(4 * t) * twopi * vcf(&s->vcf59[0], bosc, 4 * hz, 6))
         + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, 8 * hz, 4)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
diff @ 2018-10-03 22:11:06 +0100
diff --git a/src/go.c b/src/go.c
index e641e041..599d6a8a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -556,7 +556,7 @@ go(S *s, int channels, const float *in, float *out)
       double bass
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
-        + sin(4 * ceil(4 * t) * twopi * vcf(&s->vcf59[0], bosc, 4 * hz, 6))
+        + sin(4 * ceil(4 * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 6))
         + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, 8 * hz, 4)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
diff @ 2018-10-03 22:11:17 +0100
diff --git a/src/go.c b/src/go.c
index 599d6a8a..cf59ffa1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -557,7 +557,7 @@ go(S *s, int channels, const float *in, float *out)
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
         + sin(4 * ceil(4 * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 6))
-        + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, 8 * hz, 4)) * 0.7;
+        + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (t > 0.5 ? 6 : 8) * hz, 4)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
       o[1] += bass;
diff @ 2018-10-03 22:11:23 +0100
diff --git a/src/go.c b/src/go.c
index cf59ffa1..f40dc373 100644
--- a/src/go.c
+++ b/src/go.c
@@ -557,7 +557,7 @@ go(S *s, int channels, const float *in, float *out)
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
         + sin(4 * ceil(4 * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 6))
-        + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (t > 0.5 ? 6 : 8) * hz, 4)) * 0.7;
+        + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (wrap(2 * t) > 0.5 ? 6 : 8) * hz, 4)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
       o[1] += bass;
diff @ 2018-10-03 22:11:29 +0100
diff --git a/src/go.c b/src/go.c
index f40dc373..5a7629bc 100644
--- a/src/go.c
+++ b/src/go.c
@@ -556,7 +556,7 @@ go(S *s, int channels, const float *in, float *out)
       double bass
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
-        + sin(4 * ceil(4 * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 6))
+        + sin(4 * ceil(4 * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 9))
         + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (wrap(2 * t) > 0.5 ? 6 : 8) * hz, 4)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
diff @ 2018-10-03 22:11:36 +0100
diff --git a/src/go.c b/src/go.c
index 5a7629bc..2dbd0ad5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -557,7 +557,7 @@ go(S *s, int channels, const float *in, float *out)
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
         + sin(4 * ceil(4 * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 9))
-        + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (wrap(2 * t) > 0.5 ? 6 : 8) * hz, 4)) * 0.7;
+        + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (wrap(2 * t) > 0.5 ? 6 : 8) * hz, 6)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
       o[1] += bass;
diff @ 2018-10-03 22:11:46 +0100
diff --git a/src/go.c b/src/go.c
index 2dbd0ad5..4493df1b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -584,8 +584,8 @@ go(S *s, int channels, const float *in, float *out)
       bell += becho;
       bell *= 4;
       double lfo = 11 * sin(16 * twopi * t);
-      double l = 0.3 * delread4(&s->del59l, ms4 + lfo) + bell;
-      double r = 0.3 * delread4(&s->del59r, ms4 - lfo) + bell;
+      double l = 0.4 * delread4(&s->del59l, ms4 + lfo) + bell;
+      double r = 0.4 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2018-10-03 22:11:49 +0100
diff --git a/src/go.c b/src/go.c
index 4493df1b..888ac28d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -584,8 +584,8 @@ go(S *s, int channels, const float *in, float *out)
       bell += becho;
       bell *= 4;
       double lfo = 11 * sin(16 * twopi * t);
-      double l = 0.4 * delread4(&s->del59l, ms4 + lfo) + bell;
-      double r = 0.4 * delread4(&s->del59r, ms4 - lfo) + bell;
+      double l = 0.5 * delread4(&s->del59l, ms4 + lfo) + bell;
+      double r = 0.5 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2018-10-03 22:11:50 +0100
diff --git a/src/go.c b/src/go.c
index 888ac28d..4fc7f1a6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -583,7 +583,7 @@ go(S *s, int channels, const float *in, float *out)
       becho *= env2;
       bell += becho;
       bell *= 4;
-      double lfo = 11 * sin(16 * twopi * t);
+      double lfo = 1 * sin(16 * twopi * t);
       double l = 0.5 * delread4(&s->del59l, ms4 + lfo) + bell;
       double r = 0.5 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
diff @ 2018-10-03 22:11:55 +0100
diff --git a/src/go.c b/src/go.c
index 4fc7f1a6..7a00c4b0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -584,8 +584,8 @@ go(S *s, int channels, const float *in, float *out)
       bell += becho;
       bell *= 4;
       double lfo = 1 * sin(16 * twopi * t);
-      double l = 0.5 * delread4(&s->del59l, ms4 + lfo) + bell;
-      double r = 0.5 * delread4(&s->del59r, ms4 - lfo) + bell;
+      double l = 0.6 * delread4(&s->del59l, ms4 + lfo) + bell;
+      double r = 0.6 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2018-10-03 22:12:00 +0100
diff --git a/src/go.c b/src/go.c
index 7a00c4b0..76c98598 100644
--- a/src/go.c
+++ b/src/go.c
@@ -584,8 +584,8 @@ go(S *s, int channels, const float *in, float *out)
       bell += becho;
       bell *= 4;
       double lfo = 1 * sin(16 * twopi * t);
-      double l = 0.6 * delread4(&s->del59l, ms4 + lfo) + bell;
-      double r = 0.6 * delread4(&s->del59r, ms4 - lfo) + bell;
+      double l = 0.7 * delread4(&s->del59l, ms4 + lfo) + bell;
+      double r = 0.7 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2018-10-03 22:12:04 +0100
diff --git a/src/go.c b/src/go.c
index 76c98598..95887513 100644
--- a/src/go.c
+++ b/src/go.c
@@ -583,7 +583,7 @@ go(S *s, int channels, const float *in, float *out)
       becho *= env2;
       bell += becho;
       bell *= 4;
-      double lfo = 1 * sin(16 * twopi * t);
+      double lfo = 1 * sin(4 * twopi * t);
       double l = 0.7 * delread4(&s->del59l, ms4 + lfo) + bell;
       double r = 0.7 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
diff @ 2018-10-03 22:12:09 +0100
diff --git a/src/go.c b/src/go.c
index 95887513..e8a604fe 100644
--- a/src/go.c
+++ b/src/go.c
@@ -584,8 +584,8 @@ go(S *s, int channels, const float *in, float *out)
       bell += becho;
       bell *= 4;
       double lfo = 1 * sin(4 * twopi * t);
-      double l = 0.7 * delread4(&s->del59l, ms4 + lfo) + bell;
-      double r = 0.7 * delread4(&s->del59r, ms4 - lfo) + bell;
+      double l = 0.8 * delread4(&s->del59l, ms4 + lfo) + bell;
+      double r = 0.8 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2018-10-03 22:12:20 +0100
diff --git a/src/go.c b/src/go.c
index e8a604fe..6f3fabc4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -507,8 +507,8 @@ go(S *s, int channels, const float *in, float *out)
     double o[2] = { 0, 0 };
     if (1)
     { // kick
-      double peak = hz * 8;
-      double env = 1 - wrap(2 * t);
+      double peak = hz * 4;
+      double env = 1 - wrap(4 * t);
       double env2 = env * 2;
       env *= env;
       env *= env;
diff @ 2018-10-03 22:12:31 +0100
diff --git a/src/go.c b/src/go.c
index 6f3fabc4..2eddb818 100644
--- a/src/go.c
+++ b/src/go.c
@@ -584,8 +584,8 @@ go(S *s, int channels, const float *in, float *out)
       bell += becho;
       bell *= 4;
       double lfo = 1 * sin(4 * twopi * t);
-      double l = 0.8 * delread4(&s->del59l, ms4 + lfo) + bell;
-      double r = 0.8 * delread4(&s->del59r, ms4 - lfo) + bell;
+      double l = 0.9 * delread4(&s->del59l, ms4 + lfo) + bell;
+      double r = 0.9 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2018-10-03 22:12:40 +0100
diff --git a/src/go.c b/src/go.c
index 2eddb818..fcb5f504 100644
--- a/src/go.c
+++ b/src/go.c
@@ -582,7 +582,7 @@ go(S *s, int channels, const float *in, float *out)
       delwrite(&s->del59, bell3 + pitchshift(&s->ps59[3], 2, 100, 3, becho));
       becho *= env2;
       bell += becho;
-      bell *= 4;
+      bell *= 1;
       double lfo = 1 * sin(4 * twopi * t);
       double l = 0.9 * delread4(&s->del59l, ms4 + lfo) + bell;
       double r = 0.9 * delread4(&s->del59r, ms4 - lfo) + bell;
diff @ 2018-10-03 22:12:56 +0100
diff --git a/src/go.c b/src/go.c
index fcb5f504..6601ac5b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -586,6 +586,8 @@ go(S *s, int channels, const float *in, float *out)
       double lfo = 1 * sin(4 * twopi * t);
       double l = 0.9 * delread4(&s->del59l, ms4 + lfo) + bell;
       double r = 0.9 * delread4(&s->del59r, ms4 - lfo) + bell;
+      l = tanh(l);
+      r = tanh(r);
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2018-10-03 22:13:03 +0100
diff --git a/src/go.c b/src/go.c
index 6601ac5b..9bc1a0f1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -584,8 +584,8 @@ go(S *s, int channels, const float *in, float *out)
       bell += becho;
       bell *= 1;
       double lfo = 1 * sin(4 * twopi * t);
-      double l = 0.9 * delread4(&s->del59l, ms4 + lfo) + bell;
-      double r = 0.9 * delread4(&s->del59r, ms4 - lfo) + bell;
+      double l = 1 * delread4(&s->del59l, ms4 + lfo) + bell;
+      double r = 1 * delread4(&s->del59r, ms4 - lfo) + bell;
       l = tanh(l);
       r = tanh(r);
       delwrite(&s->del59l, -r);
diff @ 2018-10-03 22:13:12 +0100
diff --git a/src/go.c b/src/go.c
index 9bc1a0f1..b281f9b1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -529,10 +529,6 @@ go(S *s, int channels, const float *in, float *out)
       double open   = 1 - wrap(4 * t - 0.50);
       closed *= closed;
       closed *= closed;
-      open   *= open;
-      open   *= open;
-      closed *= closed;
-      closed *= closed;
       closed *= 1.3;
       open   *= 1.3;
       closed *= closed;
diff @ 2018-10-03 22:13:24 +0100
diff --git a/src/go.c b/src/go.c
index b281f9b1..df7c45b0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -552,7 +552,7 @@ go(S *s, int channels, const float *in, float *out)
       double bass
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
-        + sin(4 * ceil(4 * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 9))
+        + sin(4 / ceil(4 * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 9))
         + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (wrap(2 * t) > 0.5 ? 6 : 8) * hz, 6)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
diff @ 2018-10-03 22:13:33 +0100
diff --git a/src/go.c b/src/go.c
index df7c45b0..e1d41032 100644
--- a/src/go.c
+++ b/src/go.c
@@ -552,7 +552,7 @@ go(S *s, int channels, const float *in, float *out)
       double bass
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
-        + sin(4 / ceil(4 * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 9))
+        + sin(4 / ceil(1 +  * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 9))
         + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (wrap(2 * t) > 0.5 ? 6 : 8) * hz, 6)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
diff @ 2018-10-03 22:13:36 +0100
diff --git a/src/go.c b/src/go.c
index e1d41032..d1a0f2f7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -552,7 +552,7 @@ go(S *s, int channels, const float *in, float *out)
       double bass
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
-        + sin(4 / ceil(1 +  * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 9))
+        + sin(4 / ceil(1 +4  * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 9))
         + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (wrap(2 * t) > 0.5 ? 6 : 8) * hz, 6)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
diff @ 2018-10-03 22:13:39 +0100
diff --git a/src/go.c b/src/go.c
index d1a0f2f7..f04ca8ba 100644
--- a/src/go.c
+++ b/src/go.c
@@ -553,7 +553,7 @@ go(S *s, int channels, const float *in, float *out)
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
         + sin(4 / ceil(1 +4  * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 9))
-        + sin((2 * floor(4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (wrap(2 * t) > 0.5 ? 6 : 8) * hz, 6)) * 0.7;
+        + sin((2 * floor(1 + 4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (wrap(2 * t) > 0.5 ? 6 : 8) * hz, 6)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
       o[1] += bass;
diff @ 2018-10-03 22:13:46 +0100
diff --git a/src/go.c b/src/go.c
index f04ca8ba..39b8ac06 100644
--- a/src/go.c
+++ b/src/go.c
@@ -553,7 +553,7 @@ go(S *s, int channels, const float *in, float *out)
         = sub
         + lop(&s->lop59[1], lop(&s->lop59[2], bosc, 1000), 1000)
         + sin(4 / ceil(1 +4  * t) * twopi * vcf(&s->vcf59[0], bosc, (t > 0.5 ? 4 : 2) * hz, 9))
-        + sin((2 * floor(1 + 4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (wrap(2 * t) > 0.5 ? 6 : 8) * hz, 6)) * 0.7;
+        + sin((2 / floor(1 + 4 * t)) * twopi * vcf(&s->vcf59[1], bosc, (wrap(2 * t) > 0.5 ? 6 : 8) * hz, 6)) * 0.7;
       bass *= 1.5;
       o[0] += bass;
       o[1] += bass;
diff @ 2018-10-03 22:13:56 +0100
diff --git a/src/go.c b/src/go.c
index 39b8ac06..e9c7b5a5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -578,7 +578,7 @@ go(S *s, int channels, const float *in, float *out)
       delwrite(&s->del59, bell3 + pitchshift(&s->ps59[3], 2, 100, 3, becho));
       becho *= env2;
       bell += becho;
-      bell *= 1;
+      bell *=2;
       double lfo = 1 * sin(4 * twopi * t);
       double l = 1 * delread4(&s->del59l, ms4 + lfo) + bell;
       double r = 1 * delread4(&s->del59r, ms4 - lfo) + bell;
diff @ 2018-10-03 22:14:07 +0100
diff --git a/src/go.c b/src/go.c
index e9c7b5a5..fad17089 100644
--- a/src/go.c
+++ b/src/go.c
@@ -505,7 +505,7 @@ go(S *s, int channels, const float *in, float *out)
     double t = phasor(&s->phase59, tempo);
     double osc = phasor(&s->osc59, hz);
     double o[2] = { 0, 0 };
-    if (1)
+    if (0)
     { // kick
       double peak = hz * 4;
       double env = 1 - wrap(4 * t);
@@ -523,7 +523,7 @@ go(S *s, int channels, const float *in, float *out)
       o[0] += kick;
       o[1] += kick;
     }
-    if (1)
+    if (0)
     { // hihat
       double closed = 1 - wrap(8 * t - 0.58);
       double open   = 1 - wrap(4 * t - 0.50);
diff @ 2018-10-03 22:14:21 +0100
diff --git a/src/go.c b/src/go.c
index fad17089..821a0ed8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -543,7 +543,7 @@ go(S *s, int channels, const float *in, float *out)
       o[1] += 4 * tanh(env * hip(&s->hip59[4],
                              hip(&s->hip59[5], h * noise(), 3000), 1500));
     }
-    if (1)
+    if (0)
     { // bass
       double lfo = lop(&s->lop59[0], wrap(8/3. * t), 5);
       double sub = sin(twopi * osc);
@@ -567,7 +567,7 @@ go(S *s, int channels, const float *in, float *out)
         * sin(5 * twopi * osc)
         * sin(7 * twopi * osc)
         * env * (t < 0.25)
-        * 4;
+        * 0;
       double bell1 = pitchshift(&s->ps59[0], 2, 100, 3, bell);
       double bell2 = pitchshift(&s->ps59[1], 2, 100, 4, bell1);
       double bell3 = pitchshift(&s->ps59[2], 2, 100, 5, bell2);
diff @ 2018-10-03 22:14:35 +0100
diff --git a/src/go.c b/src/go.c
index 821a0ed8..de0e76a3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -580,8 +580,8 @@ go(S *s, int channels, const float *in, float *out)
       bell += becho;
       bell *=2;
       double lfo = 1 * sin(4 * twopi * t);
-      double l = 1 * delread4(&s->del59l, ms4 + lfo) + bell;
-      double r = 1 * delread4(&s->del59r, ms4 - lfo) + bell;
+      double l = 0.6 * delread4(&s->del59l, ms4 + lfo) + bell;
+      double r = 0.6 * delread4(&s->del59r, ms4 - lfo) + bell;
       l = tanh(l);
       r = tanh(r);
       delwrite(&s->del59l, -r);
diff @ 2018-10-03 22:14:43 +0100
diff --git a/src/go.c b/src/go.c
index de0e76a3..e638c9ee 100644
--- a/src/go.c
+++ b/src/go.c
@@ -580,8 +580,8 @@ go(S *s, int channels, const float *in, float *out)
       bell += becho;
       bell *=2;
       double lfo = 1 * sin(4 * twopi * t);
-      double l = 0.6 * delread4(&s->del59l, ms4 + lfo) + bell;
-      double r = 0.6 * delread4(&s->del59r, ms4 - lfo) + bell;
+      double l = 0.2 * delread4(&s->del59l, ms4 + lfo) + bell;
+      double r = 0.2 * delread4(&s->del59r, ms4 - lfo) + bell;
       l = tanh(l);
       r = tanh(r);
       delwrite(&s->del59l, -r);

the end