session-2017-05-27-194503

clive

clive is a C audio live-coding skeleton. It allows you to hot-swap DSP processing callbacks, providing not much more than automatic C code recompilation, object code reloading, and state preservation.

diff @ 2017-05-27 20:45:22 +0100
diff --git a/src/go.c b/src/go.c
index 97b60ec7..cb865d93 100644
--- a/src/go.c
+++ b/src/go.c
@@ -220,7 +220,7 @@ go(S *s, int channels, const float *in, float *out)
   // ===================================================================
   // = 1 = sea organ 2.1
   {
-#if 1
+#if 0
     double impulse[2] = { s->reloaded, s->reloaded };
 #endif
     double p = phasor(&s->phase, 0.01);
diff @ 2017-05-27 20:45:26 +0100
diff --git a/src/go.c b/src/go.c
index cb865d93..4d6c9e80 100644
--- a/src/go.c
+++ b/src/go.c
@@ -245,7 +245,7 @@ go(S *s, int channels, const float *in, float *out)
       so2echo(&s->echo[c], 20, 500,
         tanh(
           so2[c] +
-#if 1
+#if 0
           impulse[c] +
 #endif
           biquad(highpass(&s->hi[c], 1000, flatq), 0 * pnoise[c])
diff @ 2017-05-27 20:45:33 +0100
diff --git a/src/go.c b/src/go.c
index 4d6c9e80..dfa9e02b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,7 +231,7 @@ go(S *s, int channels, const float *in, float *out)
       };
     for (int c = 0; c < 2; ++c)
     {
-      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0, fb[c]);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.1, fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, 0, down);
       fb[c] = fb[c] + down + up;
     }
diff @ 2017-05-27 20:45:42 +0100
diff --git a/src/go.c b/src/go.c
index dfa9e02b..b501e35b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.1, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, 0, down);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.1, down);
       fb[c] = fb[c] + down + up;
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:45:50 +0100
diff --git a/src/go.c b/src/go.c
index b501e35b..70c05e74 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,7 +231,7 @@ go(S *s, int channels, const float *in, float *out)
       };
     for (int c = 0; c < 2; ++c)
     {
-      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.1, fb[c]);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.2, fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.1, down);
       fb[c] = fb[c] + down + up;
     }
diff @ 2017-05-27 20:45:58 +0100
diff --git a/src/go.c b/src/go.c
index 70c05e74..4e04827f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,7 +231,7 @@ go(S *s, int channels, const float *in, float *out)
       };
     for (int c = 0; c < 2; ++c)
     {
-      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.2, fb[c]);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.3, fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.1, down);
       fb[c] = fb[c] + down + up;
     }
diff @ 2017-05-27 20:46:06 +0100
diff --git a/src/go.c b/src/go.c
index 4e04827f..fcad1061 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;
     for (int c = 0; c < 2; ++c)
     {
-      so2echo(&s->echo[c], 20, 500,
+      so2echo(&s->echo[c], 20, 1000,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-05-27 20:46:14 +0100
diff --git a/src/go.c b/src/go.c
index fcad1061..4931de81 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,7 +231,7 @@ go(S *s, int channels, const float *in, float *out)
       };
     for (int c = 0; c < 2; ++c)
     {
-      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.3, fb[c]);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.5, fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.1, down);
       fb[c] = fb[c] + down + up;
     }
diff @ 2017-05-27 20:46:21 +0100
diff --git a/src/go.c b/src/go.c
index 4931de81..ba49e002 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.5, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.1, down);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.3, down);
       fb[c] = fb[c] + down + up;
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:46:28 +0100
diff --git a/src/go.c b/src/go.c
index ba49e002..6fe2313e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.5, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.3, down);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.4, down);
       fb[c] = fb[c] + down + up;
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:46:47 +0100
diff --git a/src/go.c b/src/go.c
index 6fe2313e..a9cf2078 100644
--- a/src/go.c
+++ b/src/go.c
@@ -233,7 +233,7 @@ go(S *s, int channels, const float *in, float *out)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.5, fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.4, down);
-      fb[c] = fb[c] + down + up;
+      fb[c] = sin(fb[c] + down + up);
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:46:55 +0100
diff --git a/src/go.c b/src/go.c
index a9cf2078..10788862 100644
--- a/src/go.c
+++ b/src/go.c
@@ -233,7 +233,7 @@ go(S *s, int channels, const float *in, float *out)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.5, fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.4, down);
-      fb[c] = sin(fb[c] + down + up);
+      fb[c] = sin(fb[c] - down - up);
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:47:03 +0100
diff --git a/src/go.c b/src/go.c
index 10788862..2d2d759b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,7 +231,7 @@ go(S *s, int channels, const float *in, float *out)
       };
     for (int c = 0; c < 2; ++c)
     {
-      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.5, fb[c]);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.7, fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.4, down);
       fb[c] = sin(fb[c] - down - up);
     }
diff @ 2017-05-27 20:47:22 +0100
diff --git a/src/go.c b/src/go.c
index 2d2d759b..427ab8f7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -226,8 +226,8 @@ go(S *s, int channels, const float *in, float *out)
     double p = phasor(&s->phase, 0.01);
     double modulation = 10 * cos(twopi * p);
     double fb[2] =
-      { delread4(&s->echo[1].del, 683/6. - modulation)
-      , delread4(&s->echo[0].del, 683/6. + modulation)
+      { delread4(&s->echo[1].del, 683/12. - modulation)
+      , delread4(&s->echo[0].del, 683/12. + modulation)
       };
     for (int c = 0; c < 2; ++c)
     {
diff @ 2017-05-27 20:47:32 +0100
diff --git a/src/go.c b/src/go.c
index 427ab8f7..c4e0be55 100644
--- a/src/go.c
+++ b/src/go.c
@@ -226,8 +226,8 @@ go(S *s, int channels, const float *in, float *out)
     double p = phasor(&s->phase, 0.01);
     double modulation = 10 * cos(twopi * p);
     double fb[2] =
-      { delread4(&s->echo[1].del, 683/12. - modulation)
-      , delread4(&s->echo[0].del, 683/12. + modulation)
+      { delread4(&s->echo[1].del, 683/24. - modulation)
+      , delread4(&s->echo[0].del, 683/24. + modulation)
       };
     for (int c = 0; c < 2; ++c)
     {
diff @ 2017-05-27 20:47:49 +0100
diff --git a/src/go.c b/src/go.c
index c4e0be55..d01a00e0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -223,8 +223,8 @@ go(S *s, int channels, const float *in, float *out)
 #if 0
     double impulse[2] = { s->reloaded, s->reloaded };
 #endif
-    double p = phasor(&s->phase, 0.01);
-    double modulation = 10 * cos(twopi * p);
+    double p = phasor(&s->phase, 0.1);
+    double modulation = 1 * cos(twopi * p);
     double fb[2] =
       { delread4(&s->echo[1].del, 683/24. - modulation)
       , delread4(&s->echo[0].del, 683/24. + modulation)
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.7, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.4, down);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.6, down);
       fb[c] = sin(fb[c] - down - up);
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:48:01 +0100
diff --git a/src/go.c b/src/go.c
index d01a00e0..8a3b8d72 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,7 +231,7 @@ go(S *s, int channels, const float *in, float *out)
       };
     for (int c = 0; c < 2; ++c)
     {
-      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 0.7, fb[c]);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 1.1, fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.6, down);
       fb[c] = sin(fb[c] - down - up);
     }
diff @ 2017-05-27 20:48:08 +0100
diff --git a/src/go.c b/src/go.c
index 8a3b8d72..2149667e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 1.1, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.6, down);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -1.1, down);
       fb[c] = sin(fb[c] - down - up);
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:48:20 +0100
diff --git a/src/go.c b/src/go.c
index 2149667e..1fd8f345 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,8 +231,8 @@ go(S *s, int channels, const float *in, float *out)
       };
     for (int c = 0; c < 2; ++c)
     {
-      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 1.1, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -1.1, down);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125/2., 1.1, fb[c]);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125/2., -1.1, down);
       fb[c] = sin(fb[c] - down - up);
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:48:30 +0100
diff --git a/src/go.c b/src/go.c
index 1fd8f345..1d769fb5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,8 +231,8 @@ go(S *s, int channels, const float *in, float *out)
       };
     for (int c = 0; c < 2; ++c)
     {
-      double down = pitchshift(&s->shift[2 * c + 0], 2, 125/2., 1.1, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125/2., -1.1, down);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125/2., 1.2, fb[c]);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125/2., -1.2, down);
       fb[c] = sin(fb[c] - down - up);
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:48:46 +0100
diff --git a/src/go.c b/src/go.c
index 1d769fb5..c0851f0f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,7 +231,7 @@ go(S *s, int channels, const float *in, float *out)
       };
     for (int c = 0; c < 2; ++c)
     {
-      double down = pitchshift(&s->shift[2 * c + 0], 2, 125/2., 1.2, fb[c]);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125/2., 1.2 + 0.1 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2, 125/2., -1.2, down);
       fb[c] = sin(fb[c] - down - up);
     }
diff @ 2017-05-27 20:48:59 +0100
diff --git a/src/go.c b/src/go.c
index c0851f0f..42df2117 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2, 125/2., 1.2 + 0.1 * wrap(4 * p), fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125/2., -1.2, down);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125/2., -1.2 + 0.1 * wrap(4 * p + 0.5), down);
       fb[c] = sin(fb[c] - down - up);
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:49:19 +0100
diff --git a/src/go.c b/src/go.c
index 42df2117..4f86f02a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,8 +231,10 @@ go(S *s, int channels, const float *in, float *out)
       };
     for (int c = 0; c < 2; ++c)
     {
-      double down = pitchshift(&s->shift[2 * c + 0], 2, 125/2., 1.2 + 0.1 * wrap(4 * p), fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125/2., -1.2 + 0.1 * wrap(4 * p + 0.5), down);
+      double down = pitchshift(&s->shift[2 * c + 0], 2
+      , 125/2., 1.2 + 0.2 * wrap(4 * p), fb[c]);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2
+      , 125/2., -1.2 + 0.2 * wrap(4 * p + 0.5), down);
       fb[c] = sin(fb[c] - down - up);
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:49:42 +0100
diff --git a/src/go.c b/src/go.c
index 4f86f02a..2db1a396 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,9 +232,9 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2
-      , 125/2., 1.2 + 0.2 * wrap(4 * p), fb[c]);
+      , 125/2., 1.2 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
-      , 125/2., -1.2 + 0.2 * wrap(4 * p + 0.5), down);
+      , 125/2., -1.2 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = sin(fb[c] - down - up);
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:49:50 +0100
diff --git a/src/go.c b/src/go.c
index 2db1a396..39c5c87c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,9 +232,9 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2
-      , 125/2., 1.2 + 0.5 * wrap(4 * p), fb[c]);
+      , 125/2., 1.5 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
-      , 125/2., -1.2 + 0.5 * wrap(4 * p + 0.5), down);
+      , 125/2., -1.5 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = sin(fb[c] - down - up);
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:49:57 +0100
diff --git a/src/go.c b/src/go.c
index 39c5c87c..59954453 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,9 +232,9 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2
-      , 125/2., 1.5 + 0.5 * wrap(4 * p), fb[c]);
+      , 125/2., 2.5 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
-      , 125/2., -1.5 + 0.5 * wrap(4 * p + 0.5), down);
+      , 125/2., -2.5 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = sin(fb[c] - down - up);
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:50:03 +0100
diff --git a/src/go.c b/src/go.c
index 59954453..9a63137b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -235,7 +235,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/2., 2.5 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/2., -2.5 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(fb[c] - down - up);
+      fb[c] = sin(1.1 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:50:10 +0100
diff --git a/src/go.c b/src/go.c
index 9a63137b..0f934f3b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -235,7 +235,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/2., 2.5 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/2., -2.5 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(1.1 * (fb[c] - down - up));
+      fb[c] = sin(1.2 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:50:18 +0100
diff --git a/src/go.c b/src/go.c
index 0f934f3b..8f702128 100644
--- a/src/go.c
+++ b/src/go.c
@@ -235,7 +235,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/2., 2.5 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/2., -2.5 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(1.2 * (fb[c] - down - up));
+      fb[c] = sin(1.3 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:50:29 +0100
diff --git a/src/go.c b/src/go.c
index 8f702128..0d20f002 100644
--- a/src/go.c
+++ b/src/go.c
@@ -226,8 +226,8 @@ go(S *s, int channels, const float *in, float *out)
     double p = phasor(&s->phase, 0.1);
     double modulation = 1 * cos(twopi * p);
     double fb[2] =
-      { delread4(&s->echo[1].del, 683/24. - modulation)
-      , delread4(&s->echo[0].del, 683/24. + modulation)
+      { delread4(&s->echo[1].del, 683/48. - modulation)
+      , delread4(&s->echo[0].del, 683/48. + modulation)
       };
     for (int c = 0; c < 2; ++c)
     {
diff @ 2017-05-27 20:50:38 +0100
diff --git a/src/go.c b/src/go.c
index 0d20f002..ea233304 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,9 +232,9 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2
-      , 125/2., 2.5 + 0.5 * wrap(4 * p), fb[c]);
+      , 125/3., 2.5 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
-      , 125/2., -2.5 + 0.5 * wrap(4 * p + 0.5), down);
+      , 125/3., -2.5 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = sin(1.3 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:50:46 +0100
diff --git a/src/go.c b/src/go.c
index ea233304..a1f151b6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,9 +232,9 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2
-      , 125/3., 2.5 + 0.5 * wrap(4 * p), fb[c]);
+      , 125/3., 2.7 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
-      , 125/3., -2.5 + 0.5 * wrap(4 * p + 0.5), down);
+      , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = sin(1.3 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:50:54 +0100
diff --git a/src/go.c b/src/go.c
index a1f151b6..fe0961e0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -244,7 +244,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     for (int c = 0; c < 2; ++c)
     {
-      so2echo(&s->echo[c], 20, 1000,
+      so2echo(&s->echo[c], 20, 1500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-05-27 20:51:01 +0100
diff --git a/src/go.c b/src/go.c
index fe0961e0..017b2234 100644
--- a/src/go.c
+++ b/src/go.c
@@ -235,7 +235,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., 2.7 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(1.3 * (fb[c] - down - up));
+      fb[c] = sin(1.5 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:51:52 +0100
diff --git a/src/go.c b/src/go.c
index 017b2234..74649db2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -53,6 +53,10 @@ typedef struct
   float tcomb2buf[SR];
   SAMPHOLD tgate[4];
   BIQUAD hi[2];
+  
+  
+  SAMPHOLD sosh[2];
+  
 } S;
 
 // =====================================================================
@@ -235,7 +239,9 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., 2.7 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(1.5 * (fb[c] - down - up));
+      fb[c] = samphold(&s->sosh[c]
+      , sin(1.5 * (fb[c] - down - up))
+      , wrap(240000 * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:52:03 +0100
diff --git a/src/go.c b/src/go.c
index 74649db2..21396dd1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -241,7 +241,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
       , sin(1.5 * (fb[c] - down - up))
-      , wrap(240000 * p));
+      , wrap(160000 * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:52:12 +0100
diff --git a/src/go.c b/src/go.c
index 21396dd1..c708d33c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,7 +240,7 @@ go(S *s, int channels, const float *in, float *out)
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
-      , sin(1.5 * (fb[c] - down - up))
+      , sin(1.7 * (fb[c] - down - up))
       , wrap(160000 * p));
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:52:17 +0100
diff --git a/src/go.c b/src/go.c
index c708d33c..4d928e0c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -241,7 +241,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
       , sin(1.7 * (fb[c] - down - up))
-      , wrap(160000 * p));
+      , wrap(120000 * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:53:04 +0100
diff --git a/src/go.c b/src/go.c
index 4d928e0c..a8788997 100644
--- a/src/go.c
+++ b/src/go.c
@@ -56,6 +56,7 @@ typedef struct
   
   
   SAMPHOLD sosh[2];
+  LOP shlag;
   
 } S;
 
@@ -241,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
       , sin(1.7 * (fb[c] - down - up))
-      , wrap(120000 * p));
+      , wrap((120000 - 80000 * lop(&s->shlag, 1, 0.1)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:53:20 +0100
diff --git a/src/go.c b/src/go.c
index a8788997..32e27c69 100644
--- a/src/go.c
+++ b/src/go.c
@@ -241,7 +241,7 @@ go(S *s, int channels, const float *in, float *out)
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
-      , sin(1.7 * (fb[c] - down - up))
+      , sin(1.8 * (fb[c] - down - up))
       , wrap((120000 - 80000 * lop(&s->shlag, 1, 0.1)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:53:22 +0100
diff --git a/src/go.c b/src/go.c
index 32e27c69..2f9f820e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -241,7 +241,7 @@ go(S *s, int channels, const float *in, float *out)
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
-      , sin(1.8 * (fb[c] - down - up))
+      , sin(1.9 * (fb[c] - down - up))
       , wrap((120000 - 80000 * lop(&s->shlag, 1, 0.1)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:53:24 +0100
diff --git a/src/go.c b/src/go.c
index 2f9f820e..ac681533 100644
--- a/src/go.c
+++ b/src/go.c
@@ -241,7 +241,7 @@ go(S *s, int channels, const float *in, float *out)
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
-      , sin(1.9 * (fb[c] - down - up))
+      , sin(2 * (fb[c] - down - up))
       , wrap((120000 - 80000 * lop(&s->shlag, 1, 0.1)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:53:38 +0100
diff --git a/src/go.c b/src/go.c
index ac681533..4cdb39cb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
       , sin(2 * (fb[c] - down - up))
-      , wrap((120000 - 80000 * lop(&s->shlag, 1, 0.1)) * p));
+      , wrap((120000 - 80000 * lop(&s->shlag, 0, 0.01)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:53:53 +0100
diff --git a/src/go.c b/src/go.c
index 4cdb39cb..6ff0e6ab 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
       , sin(2 * (fb[c] - down - up))
-      , wrap((120000 - 80000 * lop(&s->shlag, 0, 0.01)) * p));
+      , wrap((120000 - 80000 * lop(&s->shlag, wrap(p) > 0.5, 0.001)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:54:09 +0100
diff --git a/src/go.c b/src/go.c
index 6ff0e6ab..86535f5b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
       , sin(2 * (fb[c] - down - up))
-      , wrap((120000 - 80000 * lop(&s->shlag, wrap(p) > 0.5, 0.001)) * p));
+      , wrap((120000 - 80000 * lop(&s->shlag, wrap(p) > 0.5, 0.01)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:54:15 +0100
diff --git a/src/go.c b/src/go.c
index 86535f5b..9a04e72c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
       , sin(2 * (fb[c] - down - up))
-      , wrap((120000 - 80000 * lop(&s->shlag, wrap(p) > 0.5, 0.01)) * p));
+      , wrap((120000 - 80000 * lop(&s->shlag, wrap(2 * p) > 0.5, 0.01)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:54:30 +0100
diff --git a/src/go.c b/src/go.c
index 9a04e72c..faba7770 100644
--- a/src/go.c
+++ b/src/go.c
@@ -251,7 +251,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     for (int c = 0; c < 2; ++c)
     {
-      so2echo(&s->echo[c], 20, 1500,
+      so2echo(&s->echo[c], 100, 1500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-05-27 20:54:45 +0100
diff --git a/src/go.c b/src/go.c
index faba7770..0d6ca26b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -186,7 +186,7 @@ go(S *s, int channels, const float *in, float *out)
   // = 2 = going deep
   double pnoise[2];
   {
-#if 1
+#if 0
     if (s->reloaded)
     {
       pink_init(&s->pink[0], 10, 0xCafe070+0);
@@ -215,7 +215,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];
@@ -251,7 +251,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     for (int c = 0; c < 2; ++c)
     {
-      so2echo(&s->echo[c], 100, 1500,
+      so2echo(&s->echo[c], 200, 1500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-05-27 20:54:55 +0100
diff --git a/src/go.c b/src/go.c
index 0d6ca26b..13640c9d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -195,7 +195,7 @@ go(S *s, int channels, const float *in, float *out)
 #endif
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 10;
+    double q = 20;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2017-05-27 20:55:11 +0100
diff --git a/src/go.c b/src/go.c
index 13640c9d..de583402 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
       , sin(2 * (fb[c] - down - up))
-      , wrap((120000 - 80000 * lop(&s->shlag, wrap(2 * p) > 0.5, 0.01)) * p));
+      , wrap((120000 - 80000 * lop(&s->shlag, wrap(8 * p) > 0.5, 0.001)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:55:22 +0100
diff --git a/src/go.c b/src/go.c
index de583402..13372df9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -195,7 +195,7 @@ go(S *s, int channels, const float *in, float *out)
 #endif
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 20;
+    double q = 50;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2017-05-27 20:55:30 +0100
diff --git a/src/go.c b/src/go.c
index 13372df9..7925b2e9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -195,7 +195,7 @@ go(S *s, int channels, const float *in, float *out)
 #endif
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 50;
+    double q = 70;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2017-05-27 20:55:35 +0100
diff --git a/src/go.c b/src/go.c
index 7925b2e9..50dee27e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -195,7 +195,7 @@ go(S *s, int channels, const float *in, float *out)
 #endif
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 70;
+    double q = 100;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2017-05-27 20:55:43 +0100
diff --git a/src/go.c b/src/go.c
index 50dee27e..63c15bd1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -210,8 +210,8 @@ go(S *s, int channels, const float *in, float *out)
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
     double na2 = na;
     double nb2 = nb;
-    na += 0*samphold(&s->psh[0], nb2, wrap(3 * pa[0]));
-    nb += 0*samphold(&s->psh[1], na2, wrap(3 * pb[0]));
+    na += 0*samphold(&s->psh[0], na2, wrap(3 * pa[0]));
+    nb += 0*samphold(&s->psh[1], nb2, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2017-05-27 20:55:50 +0100
diff --git a/src/go.c b/src/go.c
index 63c15bd1..fc6bd21a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -210,8 +210,8 @@ go(S *s, int channels, const float *in, float *out)
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
     double na2 = na;
     double nb2 = nb;
-    na += 0*samphold(&s->psh[0], na2, wrap(3 * pa[0]));
-    nb += 0*samphold(&s->psh[1], nb2, wrap(3 * pb[0]));
+    na += 0.1*samphold(&s->psh[0], na2, wrap(3 * pa[0]));
+    nb += 0.1*samphold(&s->psh[1], nb2, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2017-05-27 20:55:55 +0100
diff --git a/src/go.c b/src/go.c
index fc6bd21a..4f73233a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -210,8 +210,8 @@ go(S *s, int channels, const float *in, float *out)
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
     double na2 = na;
     double nb2 = nb;
-    na += 0.1*samphold(&s->psh[0], na2, wrap(3 * pa[0]));
-    nb += 0.1*samphold(&s->psh[1], nb2, wrap(3 * pb[0]));
+    na += 0.2*samphold(&s->psh[0], na2, wrap(3 * pa[0]));
+    nb += 0.2*samphold(&s->psh[1], nb2, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2017-05-27 20:56:01 +0100
diff --git a/src/go.c b/src/go.c
index 4f73233a..38ec22be 100644
--- a/src/go.c
+++ b/src/go.c
@@ -210,8 +210,8 @@ go(S *s, int channels, const float *in, float *out)
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
     double na2 = na;
     double nb2 = nb;
-    na += 0.2*samphold(&s->psh[0], na2, wrap(3 * pa[0]));
-    nb += 0.2*samphold(&s->psh[1], nb2, wrap(3 * pb[0]));
+    na += 0.4*samphold(&s->psh[0], na2, wrap(3 * pa[0]));
+    nb += 0.4*samphold(&s->psh[1], nb2, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2017-05-27 20:56:11 +0100
diff --git a/src/go.c b/src/go.c
index 38ec22be..aed0e23d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -210,8 +210,8 @@ go(S *s, int channels, const float *in, float *out)
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
     double na2 = na;
     double nb2 = nb;
-    na += 0.4*samphold(&s->psh[0], na2, wrap(3 * pa[0]));
-    nb += 0.4*samphold(&s->psh[1], nb2, wrap(3 * pb[0]));
+    na += 0.4*samphold(&s->psh[0], na2, wrap(5 * pa[0]));
+    nb += 0.4*samphold(&s->psh[1], nb2, wrap(5 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2017-05-27 20:56:17 +0100
diff --git a/src/go.c b/src/go.c
index aed0e23d..2579eefe 100644
--- a/src/go.c
+++ b/src/go.c
@@ -257,7 +257,7 @@ go(S *s, int channels, const float *in, float *out)
 #if 0
           impulse[c] +
 #endif
-          biquad(highpass(&s->hi[c], 1000, flatq), 0 * pnoise[c])
+          biquad(highpass(&s->hi[c], 1000, flatq), 1 * pnoise[c])
         ));
     }
     mixdown[0] += so2[0];
diff @ 2017-05-27 20:56:26 +0100
diff --git a/src/go.c b/src/go.c
index 2579eefe..0016ec04 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
       , sin(2 * (fb[c] - down - up))
-      , wrap((120000 - 80000 * lop(&s->shlag, wrap(8 * p) > 0.5, 0.001)) * p));
+      , wrap((120000 - 80000 * lop(&s->shlag, wrap(8 * p) > 1.5, 0.001)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:56:35 +0100
diff --git a/src/go.c b/src/go.c
index 0016ec04..00cd4f59 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
       , sin(2 * (fb[c] - down - up))
-      , wrap((120000 - 80000 * lop(&s->shlag, wrap(8 * p) > 1.5, 0.001)) * p));
+      , wrap((120000 - 0 * lop(&s->shlag, wrap(8 * p) > 1.5, 0.001)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:56:40 +0100
diff --git a/src/go.c b/src/go.c
index 00cd4f59..dae2fdde 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,7 +242,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
       , sin(2 * (fb[c] - down - up))
-      , wrap((120000 - 0 * lop(&s->shlag, wrap(8 * p) > 1.5, 0.001)) * p));
+      , wrap((240000 - 0 * lop(&s->shlag, wrap(8 * p) > 1.5, 0.001)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 20:56:50 +0100
diff --git a/src/go.c b/src/go.c
index dae2fdde..eb90594d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -210,8 +210,8 @@ go(S *s, int channels, const float *in, float *out)
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
     double na2 = na;
     double nb2 = nb;
-    na += 0.4*samphold(&s->psh[0], na2, wrap(5 * pa[0]));
-    nb += 0.4*samphold(&s->psh[1], nb2, wrap(5 * pb[0]));
+    na += 0.6*samphold(&s->psh[0], na2, wrap(5 * pa[0]));
+    nb += 0.6*samphold(&s->psh[1], nb2, wrap(5 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2017-05-27 20:56:55 +0100
diff --git a/src/go.c b/src/go.c
index eb90594d..735cc96c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -210,8 +210,8 @@ go(S *s, int channels, const float *in, float *out)
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
     double na2 = na;
     double nb2 = nb;
-    na += 0.6*samphold(&s->psh[0], na2, wrap(5 * pa[0]));
-    nb += 0.6*samphold(&s->psh[1], nb2, wrap(5 * pb[0]));
+    na += 1*samphold(&s->psh[0], na2, wrap(5 * pa[0]));
+    nb += 1*samphold(&s->psh[1], nb2, wrap(5 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2017-05-27 20:57:04 +0100
diff --git a/src/go.c b/src/go.c
index 735cc96c..6a4b0025 100644
--- a/src/go.c
+++ b/src/go.c
@@ -210,8 +210,8 @@ go(S *s, int channels, const float *in, float *out)
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
     double na2 = na;
     double nb2 = nb;
-    na += 1*samphold(&s->psh[0], na2, wrap(5 * pa[0]));
-    nb += 1*samphold(&s->psh[1], nb2, wrap(5 * pb[0]));
+    na = 1*samphold(&s->psh[0], na2, wrap(3 * pa[0]));
+    nb = 1*samphold(&s->psh[1], nb2, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2017-05-27 20:57:14 +0100
diff --git a/src/go.c b/src/go.c
index 6a4b0025..943333f9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -169,7 +169,7 @@ go(S *s, int channels, const float *in, float *out)
     s->ctzn = (s->ctzn + 1) & ((1 << 16) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, 16);
     double probability = pow(0.5, 16 - zeroes);
-    probability = (0.5 + 0 * (s->ctzn >= 0xC001)) * probability - 0.5;
+    probability = (1.5 + 0 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-05-27 20:57:29 +0100
diff --git a/src/go.c b/src/go.c
index 943333f9..e53d8c9d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -179,8 +179,6 @@ go(S *s, int channels, const float *in, float *out)
     freq = 10 * samphold(&s->ctzs, harmonic, 1 - trigger);
     freq = lop(&s->ctzf, freq, 20);
   }
-  env = 0.5;
-  freq = 50;
 
   // ===================================================================
   // = 2 = going deep
@@ -241,7 +239,7 @@ go(S *s, int channels, const float *in, float *out)
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = samphold(&s->sosh[c]
-      , sin(2 * (fb[c] - down - up))
+      , sin(0.2 * (fb[c] - down - up))
       , wrap((240000 - 0 * lop(&s->shlag, wrap(8 * p) > 1.5, 0.001)) * p));
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 20:57:54 +0100
diff --git a/src/go.c b/src/go.c
index e53d8c9d..d2738c5b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -169,7 +169,7 @@ go(S *s, int channels, const float *in, float *out)
     s->ctzn = (s->ctzn + 1) & ((1 << 16) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, 16);
     double probability = pow(0.5, 16 - zeroes);
-    probability = (1.5 + 0 * (s->ctzn >= 0xC001)) * probability - 0.5;
+    probability = (2.5 + 0 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
@@ -244,7 +244,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double so2[2] = { fb[0], fb[1] };
     compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
-    double gain = 1;
+    double gain = 0;
     so2[0] *= gain;
     so2[1] *= gain;
     for (int c = 0; c < 2; ++c)
diff @ 2017-05-27 20:58:27 +0100
diff --git a/src/go.c b/src/go.c
index d2738c5b..cda0beaa 100644
--- a/src/go.c
+++ b/src/go.c
@@ -166,16 +166,17 @@ go(S *s, int channels, const float *in, float *out)
   double env;
   double freq;
   {
-    s->ctzn = (s->ctzn + 1) & ((1 << 16) - 1);
-    double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, 16);
-    double probability = pow(0.5, 16 - zeroes);
-    probability = (2.5 + 0 * (s->ctzn >= 0xC001)) * probability - 0.5;
+    int z = 16;
+    s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
+    double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
+    double probability = pow(0.5, z - zeroes);
+    probability = (3.5 + 0 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
     s->ctze.y += trigger;
     env = lop(&s->ctze, 0, 5);
-    double harmonic = 5 + clamp(16 - zeroes, 0, 20);
+    double harmonic = 5 + clamp(z - zeroes, 0, 20);
     freq = 10 * samphold(&s->ctzs, harmonic, 1 - trigger);
     freq = lop(&s->ctzf, freq, 20);
   }
diff @ 2017-05-27 20:58:33 +0100
diff --git a/src/go.c b/src/go.c
index cda0beaa..9c1ead4c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -166,7 +166,7 @@ go(S *s, int channels, const float *in, float *out)
   double env;
   double freq;
   {
-    int z = 16;
+    int z = 17;
     s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
     double probability = pow(0.5, z - zeroes);
diff @ 2017-05-27 20:58:44 +0100
diff --git a/src/go.c b/src/go.c
index 9c1ead4c..77ce7f8d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -170,7 +170,7 @@ go(S *s, int channels, const float *in, float *out)
     s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
     double probability = pow(0.5, z - zeroes);
-    probability = (3.5 + 0 * (s->ctzn >= 0xC001)) * probability - 0.5;
+    probability = (3.5 + 4 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-05-27 20:59:00 +0100
diff --git a/src/go.c b/src/go.c
index 77ce7f8d..ed4c3e10 100644
--- a/src/go.c
+++ b/src/go.c
@@ -170,7 +170,7 @@ go(S *s, int channels, const float *in, float *out)
     s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
     double probability = pow(0.5, z - zeroes);
-    probability = (3.5 + 4 * (s->ctzn >= 0xC001)) * probability - 0.5;
+    probability = (3.5 + 4 * (s->ctzn >= (0xC001 << (z - 16)))) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-05-27 20:59:07 +0100
diff --git a/src/go.c b/src/go.c
index ed4c3e10..f27a475a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -170,7 +170,7 @@ go(S *s, int channels, const float *in, float *out)
     s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
     double probability = pow(0.5, z - zeroes);
-    probability = (3.5 + 4 * (s->ctzn >= (0xC001 << (z - 16)))) * probability - 0.5;
+    probability = (8 + 4 * (s->ctzn >= (0xC001 << (z - 16)))) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-05-27 20:59:22 +0100
diff --git a/src/go.c b/src/go.c
index f27a475a..294cb33d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -170,7 +170,7 @@ go(S *s, int channels, const float *in, float *out)
     s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
     double probability = pow(0.5, z - zeroes);
-    probability = (8 + 4 * (s->ctzn >= (0xC001 << (z - 16)))) * probability - 0.5;
+    probability = (8 + 8 * (s->ctzn >= (0xC001 << (z - 16)))) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
@@ -194,7 +194,7 @@ go(S *s, int channels, const float *in, float *out)
 #endif
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 100;
+    double q = 50;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2017-05-27 20:59:33 +0100
diff --git a/src/go.c b/src/go.c
index 294cb33d..0b9d3e0d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -166,7 +166,7 @@ go(S *s, int channels, const float *in, float *out)
   double env;
   double freq;
   {
-    int z = 17;
+    int z = 16;
     s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
     double probability = pow(0.5, z - zeroes);
diff @ 2017-05-27 21:00:00 +0100
diff --git a/src/go.c b/src/go.c
index 0b9d3e0d..79e516a5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -166,11 +166,11 @@ go(S *s, int channels, const float *in, float *out)
   double env;
   double freq;
   {
-    int z = 16;
+    int z = 15;
     s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
     double probability = pow(0.5, z - zeroes);
-    probability = (8 + 8 * (s->ctzn >= (0xC001 << (z - 16)))) * probability - 0.5;
+    probability = (8 + 8 * (s->ctzn >= (0xC001 >> (16 - z)))) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-05-27 21:00:05 +0100
diff --git a/src/go.c b/src/go.c
index 79e516a5..b26e5dc9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -170,7 +170,7 @@ go(S *s, int channels, const float *in, float *out)
     s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
     double probability = pow(0.5, z - zeroes);
-    probability = (8 + 8 * (s->ctzn >= (0xC001 >> (16 - z)))) * probability - 0.5;
+    probability = (8 + 4 * (s->ctzn >= (0xC001 >> (16 - z)))) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-05-27 21:00:09 +0100
diff --git a/src/go.c b/src/go.c
index b26e5dc9..0def406f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -170,7 +170,7 @@ go(S *s, int channels, const float *in, float *out)
     s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
     double probability = pow(0.5, z - zeroes);
-    probability = (8 + 4 * (s->ctzn >= (0xC001 >> (16 - z)))) * probability - 0.5;
+    probability = (4 + 4 * (s->ctzn >= (0xC001 >> (16 - z)))) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-05-27 21:00:23 +0100
diff --git a/src/go.c b/src/go.c
index 0def406f..126f6479 100644
--- a/src/go.c
+++ b/src/go.c
@@ -194,7 +194,7 @@ go(S *s, int channels, const float *in, float *out)
 #endif
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 50;
+    double q = 40;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2017-05-27 21:00:29 +0100
diff --git a/src/go.c b/src/go.c
index 126f6479..a0403c12 100644
--- a/src/go.c
+++ b/src/go.c
@@ -194,7 +194,7 @@ go(S *s, int channels, const float *in, float *out)
 #endif
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 40;
+    double q = 20;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2017-05-27 21:00:34 +0100
diff --git a/src/go.c b/src/go.c
index a0403c12..f03f4291 100644
--- a/src/go.c
+++ b/src/go.c
@@ -194,7 +194,7 @@ go(S *s, int channels, const float *in, float *out)
 #endif
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 20;
+    double q = 10;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2017-05-27 21:00:58 +0100
diff --git a/src/go.c b/src/go.c
index f03f4291..8b80fc54 100644
--- a/src/go.c
+++ b/src/go.c
@@ -209,8 +209,8 @@ go(S *s, int channels, const float *in, float *out)
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
     double na2 = na;
     double nb2 = nb;
-    na = 1*samphold(&s->psh[0], na2, wrap(3 * pa[0]));
-    nb = 1*samphold(&s->psh[1], nb2, wrap(3 * pb[0]));
+    na = 1*samphold(&s->psh[0], na2, wrap(5 * pa[0]));
+    nb = 1*samphold(&s->psh[1], nb2, wrap(5 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2017-05-27 21:01:48 +0100
diff --git a/src/go.c b/src/go.c
index 8b80fc54..ba07da6e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,13 +239,11 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., 2.7 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = samphold(&s->sosh[c]
-      , sin(0.2 * (fb[c] - down - up))
-      , wrap((240000 - 0 * lop(&s->shlag, wrap(8 * p) > 1.5, 0.001)) * p));
+      fb[c] = sin(0.1 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
-    compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
-    double gain = 0;
+    //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
+    double gain = 1;
     so2[0] *= gain;
     so2[1] *= gain;
     for (int c = 0; c < 2; ++c)
diff @ 2017-05-27 21:01:58 +0100
diff --git a/src/go.c b/src/go.c
index ba07da6e..49401f75 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,7 +239,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., 2.7 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(0.1 * (fb[c] - down - up));
+      fb[c] = sin(0.2 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 21:02:04 +0100
diff --git a/src/go.c b/src/go.c
index 49401f75..44d6bdc7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,7 +239,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., 2.7 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(0.2 * (fb[c] - down - up));
+      fb[c] = sin(0.3 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 21:02:11 +0100
diff --git a/src/go.c b/src/go.c
index 44d6bdc7..707ef6b9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,7 +239,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., 2.7 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(0.3 * (fb[c] - down - up));
+      fb[c] = sin(0.4 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 21:02:15 +0100
diff --git a/src/go.c b/src/go.c
index 707ef6b9..e9cdfd7d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,7 +239,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., 2.7 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(0.4 * (fb[c] - down - up));
+      fb[c] = sin(0.5 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 21:02:25 +0100
diff --git a/src/go.c b/src/go.c
index e9cdfd7d..b279ade2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -236,9 +236,9 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2
-      , 125/3., 2.7 + 0.5 * wrap(4 * p), fb[c]);
+      , 125/3., 12 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
-      , 125/3., -2.7 + 0.5 * wrap(4 * p + 0.5), down);
+      , 125/3., -24 + 0.5 * wrap(4 * p + 0.5), down);
       fb[c] = sin(0.5 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 21:02:44 +0100
diff --git a/src/go.c b/src/go.c
index b279ade2..54667607 100644
--- a/src/go.c
+++ b/src/go.c
@@ -153,7 +153,7 @@ go(S *s, int channels, const float *in, float *out)
     tilex[0] += gain * kick;
     tilex[1] += gain * kick;
     compress(tilex, &s->tcompress2, 5, 10, 25, 48, tilex);
-    gain = 0;
+    gain = 1;
     gain = samphold(&s->tgate[1], gain, p);
     tilex[0] *= gain;
     tilex[1] *= gain;
diff @ 2017-05-27 21:02:58 +0100
diff --git a/src/go.c b/src/go.c
index 54667607..ff975d36 100644
--- a/src/go.c
+++ b/src/go.c
@@ -135,7 +135,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0);
     double fb2 = mix(sfb2, -sfb1, 0);
-    double fb = samphold(&s->tgate[2], 0, wrap(4 * p));
+    double fb = samphold(&s->tgate[2], p, wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick += 3*(fb1 + fb2);
diff @ 2017-05-27 21:03:07 +0100
diff --git a/src/go.c b/src/go.c
index ff975d36..f2529063 100644
--- a/src/go.c
+++ b/src/go.c
@@ -135,7 +135,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0);
     double fb2 = mix(sfb2, -sfb1, 0);
-    double fb = samphold(&s->tgate[2], p, wrap(16 * p));
+    double fb = samphold(&s->tgate[2], 1 - pow(p, 16), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick += 3*(fb1 + fb2);
diff @ 2017-05-27 21:03:18 +0100
diff --git a/src/go.c b/src/go.c
index f2529063..d07209c2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -133,8 +133,8 @@ go(S *s, int channels, const float *in, float *out)
     double hz2 = 2 * khz * floor(pow(2, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1);
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
-    double fb1 = mix(sfb1, -sfb2, 0);
-    double fb2 = mix(sfb2, -sfb1, 0);
+    double fb1 = mix(sfb1, -sfb2, 0.1);
+    double fb2 = mix(sfb2, -sfb1, 0.1);
     double fb = samphold(&s->tgate[2], 1 - pow(p, 16), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
diff @ 2017-05-27 21:03:26 +0100
diff --git a/src/go.c b/src/go.c
index d07209c2..f3e89a51 100644
--- a/src/go.c
+++ b/src/go.c
@@ -107,7 +107,7 @@ go(S *s, int channels, const float *in, float *out)
   {
     if (s->ctzn == 0)
     {
-      s->tphase.phase = 0;
+//      s->tphase.phase = 0;
       s->ttempo = SR * 1.0 / (1 << 18);
     }
     double p = phasor(&s->tphase, s->ttempo);
diff @ 2017-05-27 21:03:40 +0100
diff --git a/src/go.c b/src/go.c
index f3e89a51..9c92982e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -135,7 +135,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0.1);
     double fb2 = mix(sfb2, -sfb1, 0.1);
-    double fb = samphold(&s->tgate[2], 1 - pow(p, 16), wrap(16 * p));
+    double fb = samphold(&s->tgate[2], 1 - pow(p, 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick += 3*(fb1 + fb2);
diff @ 2017-05-27 21:03:51 +0100
diff --git a/src/go.c b/src/go.c
index 9c92982e..3e298a5d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -135,7 +135,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0.1);
     double fb2 = mix(sfb2, -sfb1, 0.1);
-    double fb = samphold(&s->tgate[2], 1 - pow(p, 3), wrap(16 * p));
+    double fb = samphold(&s->tgate[2], 1 - pow(wrap(3 * p), 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick += 3*(fb1 + fb2);
diff @ 2017-05-27 21:03:53 +0100
diff --git a/src/go.c b/src/go.c
index 3e298a5d..ed00a2bd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -135,7 +135,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0.1);
     double fb2 = mix(sfb2, -sfb1, 0.1);
-    double fb = samphold(&s->tgate[2], 1 - pow(wrap(3 * p), 3), wrap(16 * p));
+    double fb = samphold(&s->tgate[2], 1 - pow(wrap(7 * p), 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick += 3*(fb1 + fb2);
diff @ 2017-05-27 21:04:11 +0100
diff --git a/src/go.c b/src/go.c
index ed00a2bd..24358684 100644
--- a/src/go.c
+++ b/src/go.c
@@ -130,12 +130,12 @@ go(S *s, int channels, const float *in, float *out)
     s->tcomb2.length = SR;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     double hz1 = 2 * khz * floor(pow(2, wrap(4 * p + 0.0)));
-    double hz2 = 2 * khz * floor(pow(2, wrap(4 * p + 0.5)));
+    double hz2 = 3 * khz * floor(pow(2, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1);
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0.1);
     double fb2 = mix(sfb2, -sfb1, 0.1);
-    double fb = samphold(&s->tgate[2], 1 - pow(wrap(7 * p), 3), wrap(16 * p));
+    double fb = samphold(&s->tgate[2], 1 - pow(wrap(17 * p), 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick += 3*(fb1 + fb2);
diff @ 2017-05-27 21:04:23 +0100
diff --git a/src/go.c b/src/go.c
index 24358684..71d5aba4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -133,8 +133,8 @@ go(S *s, int channels, const float *in, float *out)
     double hz2 = 3 * khz * floor(pow(2, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1);
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
-    double fb1 = mix(sfb1, -sfb2, 0.1);
-    double fb2 = mix(sfb2, -sfb1, 0.1);
+    double fb1 = mix(sfb1, -sfb2, 0.2);
+    double fb2 = mix(sfb2, -sfb1, 0.2);
     double fb = samphold(&s->tgate[2], 1 - pow(wrap(17 * p), 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
diff @ 2017-05-27 21:04:31 +0100
diff --git a/src/go.c b/src/go.c
index 71d5aba4..a90eff93 100644
--- a/src/go.c
+++ b/src/go.c
@@ -134,7 +134,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1);
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0.2);
-    double fb2 = mix(sfb2, -sfb1, 0.2);
+    double fb2 = mix(sfb2, sfb1, 0.2);
     double fb = samphold(&s->tgate[2], 1 - pow(wrap(17 * p), 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
diff @ 2017-05-27 21:04:42 +0100
diff --git a/src/go.c b/src/go.c
index a90eff93..b0692f95 100644
--- a/src/go.c
+++ b/src/go.c
@@ -129,8 +129,8 @@ go(S *s, int channels, const float *in, float *out)
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
-    double hz1 = 2 * khz * floor(pow(2, wrap(4 * p + 0.0)));
-    double hz2 = 3 * khz * floor(pow(2, wrap(4 * p + 0.5)));
+    double hz1 = 2 * khz * floor(pow(16, wrap(4 * p + 0.0)));
+    double hz2 = 3 * khz * floor(pow(16, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1);
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0.2);
diff @ 2017-05-27 21:05:01 +0100
diff --git a/src/go.c b/src/go.c
index b0692f95..3acaf306 100644
--- a/src/go.c
+++ b/src/go.c
@@ -138,7 +138,6 @@ go(S *s, int channels, const float *in, float *out)
     double fb = samphold(&s->tgate[2], 1 - pow(wrap(17 * p), 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
-    kick += 3*(fb1 + fb2);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 5)*5)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
@@ -148,7 +147,7 @@ go(S *s, int channels, const float *in, float *out)
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
     tilex[0] *= 5;
     tilex[1] *= 5;
-    double gain = 0;
+    double gain = 1;
     gain = samphold(&s->tgate[0], gain, p);
     tilex[0] += gain * kick;
     tilex[1] += gain * kick;
diff @ 2017-05-27 21:05:26 +0100
diff --git a/src/go.c b/src/go.c
index 3acaf306..acbdf8b3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -169,7 +169,7 @@ go(S *s, int channels, const float *in, float *out)
     s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
     double probability = pow(0.5, z - zeroes);
-    probability = (4 + 4 * (s->ctzn >= (0xC001 >> (16 - z)))) * probability - 0.5;
+    probability = (0 + 4 * (s->ctzn >= (0xC001 >> (16 - z)))) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-05-27 21:05:41 +0100
diff --git a/src/go.c b/src/go.c
index acbdf8b3..f178398b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -138,7 +138,7 @@ go(S *s, int channels, const float *in, float *out)
     double fb = samphold(&s->tgate[2], 1 - pow(wrap(17 * p), 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
-    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 @ 2017-05-27 21:05:54 +0100
diff --git a/src/go.c b/src/go.c
index f178398b..4fa4d8e9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -140,8 +140,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     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);
+    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 100)*100)
+         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 100)*100);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2017-05-27 21:06:15 +0100
diff --git a/src/go.c b/src/go.c
index 4fa4d8e9..11b5aa12 100644
--- a/src/go.c
+++ b/src/go.c
@@ -140,8 +140,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     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, 100)*100)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 100)*100);
+    kick += sin(vcf(&s->tkick[2], kick, khz*4-(20 + p), 100)*100)
+         *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - p), 100)*100);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2017-05-27 21:06:23 +0100
diff --git a/src/go.c b/src/go.c
index 11b5aa12..92344e57 100644
--- a/src/go.c
+++ b/src/go.c
@@ -140,8 +140,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     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 + p), 100)*100)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - p), 100)*100);
+    kick += sin(vcf(&s->tkick[2], kick, khz*4-(20 + 5 * p), 100)*100)
+         *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - 5 * p), 100)*100);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2017-05-27 21:06:30 +0100
diff --git a/src/go.c b/src/go.c
index 92344e57..90d3ffa7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -140,8 +140,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     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 * p), 100)*100)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - 5 * p), 100)*100);
+    kick += sin(vcf(&s->tkick[2], kick, khz*4-(20 + 15 * p), 100)*100)
+         *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - 15 * p), 100)*100);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2017-05-27 21:06:48 +0100
diff --git a/src/go.c b/src/go.c
index 90d3ffa7..9bd5d7dd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -139,7 +139,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     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[1], kick, khz * 2, 50)*50);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-(20 + 15 * p), 100)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - 15 * p), 100)*100);
     tilex[0] = fb1;
diff @ 2017-05-27 21:06:59 +0100
diff --git a/src/go.c b/src/go.c
index 9bd5d7dd..61e10b6f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -128,7 +128,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= hat;
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
-    double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
+    double khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     double hz1 = 2 * khz * floor(pow(16, wrap(4 * p + 0.0)));
     double hz2 = 3 * khz * floor(pow(16, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1);
diff @ 2017-05-27 21:07:21 +0100
diff --git a/src/go.c b/src/go.c
index 61e10b6f..90c3c40e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -121,14 +121,14 @@ go(S *s, int channels, const float *in, float *out)
     kick *= 1 + kickenv;
     kick *= 2;
     kick = tanh(kick);
-    double hat = 1 - wrap(32 * p + 0.0);
+    double hat = 1 - wrap(64 * p + 0.);
     hat *= hat;
     hat *= hat;
     hat *= hat;
     hat *= hat;
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
-    double khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
+    double khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 0.75);
     double hz1 = 2 * khz * floor(pow(16, wrap(4 * p + 0.0)));
     double hz2 = 3 * khz * floor(pow(16, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1);
diff @ 2017-05-27 21:07:51 +0100
diff --git a/src/go.c b/src/go.c
index 90c3c40e..e9d18987 100644
--- a/src/go.c
+++ b/src/go.c
@@ -128,7 +128,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= hat;
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
-    double khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 0.75);
+    double khz = 40 + 10 * (wrap(8 * p) > 0.75) + 30 * (wrap(2 * p) > 0.75);
     double hz1 = 2 * khz * floor(pow(16, wrap(4 * p + 0.0)));
     double hz2 = 3 * khz * floor(pow(16, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1);
diff @ 2017-05-27 21:08:09 +0100
diff --git a/src/go.c b/src/go.c
index e9d18987..ba3abacc 100644
--- a/src/go.c
+++ b/src/go.c
@@ -138,7 +138,7 @@ go(S *s, int channels, const float *in, float *out)
     double fb = samphold(&s->tgate[2], 1 - pow(wrap(17 * p), 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*20;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-(20 + 15 * p), 100)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - 15 * p), 100)*100);
diff @ 2017-05-27 21:08:19 +0100
diff --git a/src/go.c b/src/go.c
index ba3abacc..a465f2e7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -145,7 +145,7 @@ go(S *s, int channels, const float *in, float *out)
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
-    tilex[0] *= 5;
+    tilex[0] *= 1;
     tilex[1] *= 5;
     double gain = 1;
     gain = samphold(&s->tgate[0], gain, p);
diff @ 2017-05-27 21:08:20 +0100
diff --git a/src/go.c b/src/go.c
index a465f2e7..053a8d11 100644
--- a/src/go.c
+++ b/src/go.c
@@ -146,7 +146,7 @@ go(S *s, int channels, const float *in, float *out)
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
     tilex[0] *= 1;
-    tilex[1] *= 5;
+    tilex[1] *= 1;
     double gain = 1;
     gain = samphold(&s->tgate[0], gain, p);
     tilex[0] += gain * kick;
diff @ 2017-05-27 21:08:34 +0100
diff --git a/src/go.c b/src/go.c
index 053a8d11..39a07423 100644
--- a/src/go.c
+++ b/src/go.c
@@ -138,7 +138,7 @@ go(S *s, int channels, const float *in, float *out)
     double fb = samphold(&s->tgate[2], 1 - pow(wrap(17 * p), 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*20;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*0;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-(20 + 15 * p), 100)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - 15 * p), 100)*100);
diff @ 2017-05-27 21:08:45 +0100
diff --git a/src/go.c b/src/go.c
index 39a07423..22561caf 100644
--- a/src/go.c
+++ b/src/go.c
@@ -140,8 +140,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*0;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
-    kick += sin(vcf(&s->tkick[2], kick, khz*4-(20 + 15 * p), 100)*100)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - 15 * p), 100)*100);
+    kick += sin(vcf(&s->tkick[2], kick, khz*4-(20 + 15 * p), 1000)*1000)
+         *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - 15 * p), 1000)*1000);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2017-05-27 21:09:01 +0100
diff --git a/src/go.c b/src/go.c
index 22561caf..aa0e4c60 100644
--- a/src/go.c
+++ b/src/go.c
@@ -140,8 +140,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*0;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
-    kick += sin(vcf(&s->tkick[2], kick, khz*4-(20 + 15 * p), 1000)*1000)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - 15 * p), 1000)*1000);
+    kick += sin(vcf(&s->tkick[2], kick, khz*4-(20 + 15 * p), 1000)*500)
+         *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - 15 * p), 1000)*500);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2017-05-27 21:09:07 +0100
diff --git a/src/go.c b/src/go.c
index aa0e4c60..92b7fceb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -140,8 +140,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*0;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
-    kick += sin(vcf(&s->tkick[2], kick, khz*4-(20 + 15 * p), 1000)*500)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+(20 - 15 * p), 1000)*500);
+    kick += sin(vcf(&s->tkick[2], kick, khz*6-(20 + 15 * p), 1000)*500)
+         *  sin(vcf(&s->tkick[3], kick, khz*6+(20 - 15 * p), 1000)*500);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2017-05-27 21:09:32 +0100
diff --git a/src/go.c b/src/go.c
index 92b7fceb..cdc6d1a8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -140,8 +140,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*0;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
-    kick += sin(vcf(&s->tkick[2], kick, khz*6-(20 + 15 * p), 1000)*500)
-         *  sin(vcf(&s->tkick[3], kick, khz*6+(20 - 15 * p), 1000)*500);
+    kick += sin(vcf(&s->tkick[2], kick, khz*(8 + floor(16 * p))-(20 + 15 * p), 1000)*500)
+         *  sin(vcf(&s->tkick[3], kick, khz*(8 + floor(16 * p))+(20 - 15 * p), 1000)*500);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2017-05-27 21:09:52 +0100
diff --git a/src/go.c b/src/go.c
index cdc6d1a8..b13a67d8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -140,7 +140,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*0;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
-    kick += sin(vcf(&s->tkick[2], kick, khz*(8 + floor(16 * p))-(20 + 15 * p), 1000)*500)
+    kick += sin(vcf(&s->tkick[2], kick, khz*(8 + floor(16 * wrap(4 * p)))-(20 + 15 * p), 1000)*500)
          *  sin(vcf(&s->tkick[3], kick, khz*(8 + floor(16 * p))+(20 - 15 * p), 1000)*500);
     tilex[0] = fb1;
     tilex[1] = fb2;
diff @ 2017-05-27 21:09:59 +0100
diff --git a/src/go.c b/src/go.c
index b13a67d8..a6b024c3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -141,7 +141,7 @@ go(S *s, int channels, const float *in, float *out)
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*0;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
     kick += sin(vcf(&s->tkick[2], kick, khz*(8 + floor(16 * wrap(4 * p)))-(20 + 15 * p), 1000)*500)
-         *  sin(vcf(&s->tkick[3], kick, khz*(8 + floor(16 * p))+(20 - 15 * p), 1000)*500);
+         *  sin(vcf(&s->tkick[3], kick, khz*(8 + floor(16 * wrap(8 * p)))+(20 - 15 * p), 1000)*500);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2017-05-27 21:10:01 +0100
diff --git a/src/go.c b/src/go.c
index a6b024c3..f703a869 100644
--- a/src/go.c
+++ b/src/go.c
@@ -140,7 +140,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*0;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
-    kick += sin(vcf(&s->tkick[2], kick, khz*(8 + floor(16 * wrap(4 * p)))-(20 + 15 * p), 1000)*500)
+    kick += sin(vcf(&s->tkick[2], kick, khz*(8 + floor(16 * wrap(8 * p)))-(20 + 15 * p), 1000)*500)
          *  sin(vcf(&s->tkick[3], kick, khz*(8 + floor(16 * wrap(8 * p)))+(20 - 15 * p), 1000)*500);
     tilex[0] = fb1;
     tilex[1] = fb2;
diff @ 2017-05-27 21:10:08 +0100
diff --git a/src/go.c b/src/go.c
index f703a869..9994a50e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -138,7 +138,7 @@ go(S *s, int channels, const float *in, float *out)
     double fb = samphold(&s->tgate[2], 1 - pow(wrap(17 * p), 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*0;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*5;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
     kick += sin(vcf(&s->tkick[2], kick, khz*(8 + floor(16 * wrap(8 * p)))-(20 + 15 * p), 1000)*500)
          *  sin(vcf(&s->tkick[3], kick, khz*(8 + floor(16 * wrap(8 * p)))+(20 - 15 * p), 1000)*500);
diff @ 2017-05-27 21:10:25 +0100
diff --git a/src/go.c b/src/go.c
index 9994a50e..be4c01d8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,7 +253,7 @@ go(S *s, int channels, const float *in, float *out)
 #if 0
           impulse[c] +
 #endif
-          biquad(highpass(&s->hi[c], 1000, flatq), 1 * pnoise[c])
+          biquad(highpass(&s->hi[c], 1000, flatq), 1 * tilex[c])
         ));
     }
     mixdown[0] += so2[0];
diff @ 2017-05-27 21:10:51 +0100
diff --git a/src/go.c b/src/go.c
index be4c01d8..bce10a2b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -108,7 +108,8 @@ go(S *s, int channels, const float *in, float *out)
     if (s->ctzn == 0)
     {
 //      s->tphase.phase = 0;
-      s->ttempo = SR * 1.0 / (1 << 18);
+      //s->ttempo = SR * 1.0 / (1 << 18);
+      s->ttempo *= noise() < 0 ? 0.5 : 2;
     }
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(16 * p);
diff @ 2017-05-27 21:11:14 +0100
diff --git a/src/go.c b/src/go.c
index bce10a2b..0ae960cd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -108,7 +108,7 @@ go(S *s, int channels, const float *in, float *out)
     if (s->ctzn == 0)
     {
 //      s->tphase.phase = 0;
-      //s->ttempo = SR * 1.0 / (1 << 18);
+      s->ttempo = SR * 1.0 / (1 << 18);
       s->ttempo *= noise() < 0 ? 0.5 : 2;
     }
     double p = phasor(&s->tphase, s->ttempo);
diff @ 2017-05-27 21:11:16 +0100
diff --git a/src/go.c b/src/go.c
index 0ae960cd..39af4f7d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -108,7 +108,7 @@ go(S *s, int channels, const float *in, float *out)
     if (s->ctzn == 0)
     {
 //      s->tphase.phase = 0;
-      s->ttempo = SR * 1.0 / (1 << 18);
+      /s->ttempo = SR * 1.0 / (1 << 18);
       s->ttempo *= noise() < 0 ? 0.5 : 2;
     }
     double p = phasor(&s->tphase, s->ttempo);
diff @ 2017-05-27 21:11:16 +0100
diff --git a/src/go.c b/src/go.c
index 39af4f7d..bce10a2b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -108,7 +108,7 @@ go(S *s, int channels, const float *in, float *out)
     if (s->ctzn == 0)
     {
 //      s->tphase.phase = 0;
-      /s->ttempo = SR * 1.0 / (1 << 18);
+      //s->ttempo = SR * 1.0 / (1 << 18);
       s->ttempo *= noise() < 0 ? 0.5 : 2;
     }
     double p = phasor(&s->tphase, s->ttempo);
diff @ 2017-05-27 21:11:26 +0100
diff --git a/src/go.c b/src/go.c
index bce10a2b..60853b86 100644
--- a/src/go.c
+++ b/src/go.c
@@ -108,8 +108,8 @@ go(S *s, int channels, const float *in, float *out)
     if (s->ctzn == 0)
     {
 //      s->tphase.phase = 0;
-      //s->ttempo = SR * 1.0 / (1 << 18);
-      s->ttempo *= noise() < 0 ? 0.5 : 2;
+      s->ttempo = SR * 1.0 / (1 << 18);
+      //s->ttempo *= noise() < 0 ? 0.5 : 2;
     }
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(16 * p);
diff @ 2017-05-27 21:11:39 +0100
diff --git a/src/go.c b/src/go.c
index 60853b86..1ea72a21 100644
--- a/src/go.c
+++ b/src/go.c
@@ -108,7 +108,7 @@ go(S *s, int channels, const float *in, float *out)
     if (s->ctzn == 0)
     {
 //      s->tphase.phase = 0;
-      s->ttempo = SR * 1.0 / (1 << 18);
+      s->ttempo = SR * 1.0 / (1 << 18) * 2.0/3;
       //s->ttempo *= noise() < 0 ? 0.5 : 2;
     }
     double p = phasor(&s->tphase, s->ttempo);
diff @ 2017-05-27 21:11:49 +0100
diff --git a/src/go.c b/src/go.c
index 1ea72a21..46632baf 100644
--- a/src/go.c
+++ b/src/go.c
@@ -107,9 +107,9 @@ go(S *s, int channels, const float *in, float *out)
   {
     if (s->ctzn == 0)
     {
-//      s->tphase.phase = 0;
-      s->ttempo = SR * 1.0 / (1 << 18) * 2.0/3;
-      //s->ttempo *= noise() < 0 ? 0.5 : 2;
+      s->tphase.phase = 0;
+//      s->ttempo = SR * 1.0 / (1 << 18) * 2.0/3;
+      s->ttempo *= noise() < 0 ? 0.5 : 2;
     }
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(16 * p);
diff @ 2017-05-27 21:11:56 +0100
diff --git a/src/go.c b/src/go.c
index 46632baf..2bc69b17 100644
--- a/src/go.c
+++ b/src/go.c
@@ -166,7 +166,7 @@ go(S *s, int channels, const float *in, float *out)
   double env;
   double freq;
   {
-    int z = 15;
+    int z = 12;
     s->ctzn = (s->ctzn + 1) & ((1 << z) - 1);
     double zeroes = clamp(count_trailing_zeroes(s->ctzn), 0, z);
     double probability = pow(0.5, z - zeroes);
diff @ 2017-05-27 21:12:05 +0100
diff --git a/src/go.c b/src/go.c
index 2bc69b17..a0717b0c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -116,6 +116,8 @@ go(S *s, int channels, const float *in, float *out)
     kick *= kick;
     kick *= kick;
     kick *= kick;
+    kick *= kick;
+    kick *= kick;
     double kickenv = kick;
     kick *= 12;
     kick = sin(twopi * kick);
diff @ 2017-05-27 21:12:13 +0100
diff --git a/src/go.c b/src/go.c
index a0717b0c..c202cf1a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -129,6 +129,10 @@ go(S *s, int channels, const float *in, float *out)
     hat *= hat;
     hat *= hat;
     hat *= hat;
+    hat *= hat;
+    hat *= hat;
+    hat *= hat;
+    hat *= hat;
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
     double khz = 40 + 10 * (wrap(8 * p) > 0.75) + 30 * (wrap(2 * p) > 0.75);
diff @ 2017-05-27 21:12:19 +0100
diff --git a/src/go.c b/src/go.c
index c202cf1a..28a4aa11 100644
--- a/src/go.c
+++ b/src/go.c
@@ -124,7 +124,7 @@ go(S *s, int channels, const float *in, float *out)
     kick *= 1 + kickenv;
     kick *= 2;
     kick = tanh(kick);
-    double hat = 1 - wrap(64 * p + 0.);
+    double hat = 1 - wrap(12 * p + 0.);
     hat *= hat;
     hat *= hat;
     hat *= hat;
diff @ 2017-05-27 21:12:28 +0100
diff --git a/src/go.c b/src/go.c
index 28a4aa11..c132e1e8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -135,7 +135,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= hat;
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
-    double khz = 40 + 10 * (wrap(8 * p) > 0.75) + 30 * (wrap(2 * p) > 0.75);
+    double khz = 40 + 10 * (wrap(8 * p) > 1) + 30 * (wrap(2 * p) > 1);
     double hz1 = 2 * khz * floor(pow(16, wrap(4 * p + 0.0)));
     double hz2 = 3 * khz * floor(pow(16, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1);
diff @ 2017-05-27 21:12:34 +0100
diff --git a/src/go.c b/src/go.c
index c132e1e8..c9be436c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -136,8 +136,8 @@ go(S *s, int channels, const float *in, float *out)
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
     double khz = 40 + 10 * (wrap(8 * p) > 1) + 30 * (wrap(2 * p) > 1);
-    double hz1 = 2 * khz * floor(pow(16, wrap(4 * p + 0.0)));
-    double hz2 = 3 * khz * floor(pow(16, wrap(4 * p + 0.5)));
+    double hz1 = 2 * khz * floor(pow(2, wrap(4 * p + 0.0)));
+    double hz2 = 3 * khz * floor(pow(2, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1);
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0.2);
diff @ 2017-05-27 21:12:43 +0100
diff --git a/src/go.c b/src/go.c
index c9be436c..30457b67 100644
--- a/src/go.c
+++ b/src/go.c
@@ -145,7 +145,7 @@ go(S *s, int channels, const float *in, float *out)
     double fb = samphold(&s->tgate[2], 1 - pow(wrap(17 * p), 3), wrap(16 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*5;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*1;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
     kick += sin(vcf(&s->tkick[2], kick, khz*(8 + floor(16 * wrap(8 * p)))-(20 + 15 * p), 1000)*500)
          *  sin(vcf(&s->tkick[3], kick, khz*(8 + floor(16 * wrap(8 * p)))+(20 - 15 * p), 1000)*500);
diff @ 2017-05-27 21:12:48 +0100
diff --git a/src/go.c b/src/go.c
index 30457b67..c9d8800a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -146,7 +146,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*1;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 150)*150);
     kick += sin(vcf(&s->tkick[2], kick, khz*(8 + floor(16 * wrap(8 * p)))-(20 + 15 * p), 1000)*500)
          *  sin(vcf(&s->tkick[3], kick, khz*(8 + floor(16 * wrap(8 * p)))+(20 - 15 * p), 1000)*500);
     tilex[0] = fb1;
diff @ 2017-05-27 21:13:06 +0100
diff --git a/src/go.c b/src/go.c
index c9d8800a..29a7abcd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -245,7 +245,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., 12 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -24 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(0.5 * (fb[c] - down - up));
+      fb[c] = sin(0.6 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 21:13:12 +0100
diff --git a/src/go.c b/src/go.c
index 29a7abcd..8c492f59 100644
--- a/src/go.c
+++ b/src/go.c
@@ -245,7 +245,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., 12 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -24 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(0.6 * (fb[c] - down - up));
+      fb[c] = sin(0.7 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 21:13:19 +0100
diff --git a/src/go.c b/src/go.c
index 8c492f59..670323ff 100644
--- a/src/go.c
+++ b/src/go.c
@@ -245,7 +245,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., 12 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -24 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(0.7 * (fb[c] - down - up));
+      fb[c] = sin(0.8 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 21:13:27 +0100
diff --git a/src/go.c b/src/go.c
index 670323ff..7b7e5095 100644
--- a/src/go.c
+++ b/src/go.c
@@ -245,7 +245,7 @@ go(S *s, int channels, const float *in, float *out)
       , 125/3., 12 + 0.5 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
       , 125/3., -24 + 0.5 * wrap(4 * p + 0.5), down);
-      fb[c] = sin(0.8 * (fb[c] - down - up));
+      fb[c] = sin(0.75 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
     //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
diff @ 2017-05-27 21:13:44 +0100
diff --git a/src/go.c b/src/go.c
index 7b7e5095..a944b8cd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -260,7 +260,7 @@ go(S *s, int channels, const float *in, float *out)
 #if 0
           impulse[c] +
 #endif
-          biquad(highpass(&s->hi[c], 1000, flatq), 1 * tilex[c])
+          biquad(highpass(&s->hi[c], 250, 5), 1 * tilex[c])
         ));
     }
     mixdown[0] += so2[0];
diff @ 2017-05-27 21:13:52 +0100
diff --git a/src/go.c b/src/go.c
index a944b8cd..9748112d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -260,7 +260,7 @@ go(S *s, int channels, const float *in, float *out)
 #if 0
           impulse[c] +
 #endif
-          biquad(highpass(&s->hi[c], 250, 5), 1 * tilex[c])
+          biquad(highpass(&s->hi[c], 50, 5), 1 * tilex[c])
         ));
     }
     mixdown[0] += so2[0];
diff @ 2017-05-27 21:14:02 +0100
diff --git a/src/go.c b/src/go.c
index 9748112d..f78b5b4c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -254,7 +254,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     for (int c = 0; c < 2; ++c)
     {
-      so2echo(&s->echo[c], 200, 1500,
+      so2echo(&s->echo[c], 100, 1500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-05-27 21:14:08 +0100
diff --git a/src/go.c b/src/go.c
index f78b5b4c..2f715e6a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -254,7 +254,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     for (int c = 0; c < 2; ++c)
     {
-      so2echo(&s->echo[c], 100, 1500,
+      so2echo(&s->echo[c], 50, 1500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-05-27 21:14:13 +0100
diff --git a/src/go.c b/src/go.c
index 2f715e6a..875c75a6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -254,7 +254,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     for (int c = 0; c < 2; ++c)
     {
-      so2echo(&s->echo[c], 50, 1500,
+      so2echo(&s->echo[c], 25, 1500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-05-27 21:14:26 +0100
diff --git a/src/go.c b/src/go.c
index 875c75a6..89b7648e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -236,8 +236,8 @@ go(S *s, int channels, const float *in, float *out)
     double p = phasor(&s->phase, 0.1);
     double modulation = 1 * cos(twopi * p);
     double fb[2] =
-      { delread4(&s->echo[1].del, 683/48. - modulation)
-      , delread4(&s->echo[0].del, 683/48. + modulation)
+      { delread4(&s->echo[1].del, 683/96. - modulation)
+      , delread4(&s->echo[0].del, 683/96. + modulation)
       };
     for (int c = 0; c < 2; ++c)
     {
diff @ 2017-05-27 21:14:37 +0100
diff --git a/src/go.c b/src/go.c
index 89b7648e..c402303b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -234,7 +234,7 @@ go(S *s, int channels, const float *in, float *out)
     double impulse[2] = { s->reloaded, s->reloaded };
 #endif
     double p = phasor(&s->phase, 0.1);
-    double modulation = 1 * cos(twopi * p);
+    double modulation = 2 * cos(twopi * p);
     double fb[2] =
       { delread4(&s->echo[1].del, 683/96. - modulation)
       , delread4(&s->echo[0].del, 683/96. + modulation)
diff @ 2017-05-27 21:14:43 +0100
diff --git a/src/go.c b/src/go.c
index c402303b..6e8bcd84 100644
--- a/src/go.c
+++ b/src/go.c
@@ -234,7 +234,7 @@ go(S *s, int channels, const float *in, float *out)
     double impulse[2] = { s->reloaded, s->reloaded };
 #endif
     double p = phasor(&s->phase, 0.1);
-    double modulation = 2 * cos(twopi * p);
+    double modulation = 4 * cos(twopi * p);
     double fb[2] =
       { delread4(&s->echo[1].del, 683/96. - modulation)
       , delread4(&s->echo[0].del, 683/96. + modulation)
diff @ 2017-05-27 21:14:51 +0100
diff --git a/src/go.c b/src/go.c
index 6e8bcd84..a129f89a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -234,7 +234,7 @@ go(S *s, int channels, const float *in, float *out)
     double impulse[2] = { s->reloaded, s->reloaded };
 #endif
     double p = phasor(&s->phase, 0.1);
-    double modulation = 4 * cos(twopi * p);
+    double modulation = 5 * cos(twopi * p);
     double fb[2] =
       { delread4(&s->echo[1].del, 683/96. - modulation)
       , delread4(&s->echo[0].del, 683/96. + modulation)
diff @ 2017-05-27 21:14:56 +0100
diff --git a/src/go.c b/src/go.c
index a129f89a..de6d5434 100644
--- a/src/go.c
+++ b/src/go.c
@@ -233,7 +233,7 @@ go(S *s, int channels, const float *in, float *out)
 #if 0
     double impulse[2] = { s->reloaded, s->reloaded };
 #endif
-    double p = phasor(&s->phase, 0.1);
+    double p = phasor(&s->phase, 0.5);
     double modulation = 5 * cos(twopi * p);
     double fb[2] =
       { delread4(&s->echo[1].del, 683/96. - modulation)
diff @ 2017-05-27 21:15:02 +0100
diff --git a/src/go.c b/src/go.c
index de6d5434..9f15634f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -233,7 +233,7 @@ go(S *s, int channels, const float *in, float *out)
 #if 0
     double impulse[2] = { s->reloaded, s->reloaded };
 #endif
-    double p = phasor(&s->phase, 0.5);
+    double p = phasor(&s->phase, 0.25);
     double modulation = 5 * cos(twopi * p);
     double fb[2] =
       { delread4(&s->echo[1].del, 683/96. - modulation)
diff @ 2017-05-27 21:15:12 +0100
diff --git a/src/go.c b/src/go.c
index 9f15634f..57ad0d26 100644
--- a/src/go.c
+++ b/src/go.c
@@ -242,9 +242,9 @@ go(S *s, int channels, const float *in, float *out)
     for (int c = 0; c < 2; ++c)
     {
       double down = pitchshift(&s->shift[2 * c + 0], 2
-      , 125/3., 12 + 0.5 * wrap(4 * p), fb[c]);
+      , 125/3., 12 + 3 * wrap(4 * p), fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2
-      , 125/3., -24 + 0.5 * wrap(4 * p + 0.5), down);
+      , 125/3., -24 + 3 * wrap(4 * p + 0.5), down);
       fb[c] = sin(0.75 * (fb[c] - down - up));
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-05-27 21:15:24 +0100
diff --git a/src/go.c b/src/go.c
index 57ad0d26..7bd1210a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -233,7 +233,7 @@ go(S *s, int channels, const float *in, float *out)
 #if 0
     double impulse[2] = { s->reloaded, s->reloaded };
 #endif
-    double p = phasor(&s->phase, 0.25);
+    double p = phasor(&s->phase, 0.5);
     double modulation = 5 * cos(twopi * p);
     double fb[2] =
       { delread4(&s->echo[1].del, 683/96. - modulation)
diff @ 2017-05-27 21:15:28 +0100
diff --git a/src/go.c b/src/go.c
index 7bd1210a..58473411 100644
--- a/src/go.c
+++ b/src/go.c
@@ -233,7 +233,7 @@ go(S *s, int channels, const float *in, float *out)
 #if 0
     double impulse[2] = { s->reloaded, s->reloaded };
 #endif
-    double p = phasor(&s->phase, 0.5);
+    double p = phasor(&s->phase, 1);
     double modulation = 5 * cos(twopi * p);
     double fb[2] =
       { delread4(&s->echo[1].del, 683/96. - modulation)
diff @ 2017-05-27 21:15:43 +0100
diff --git a/src/go.c b/src/go.c
index 58473411..81ed7ff3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -159,7 +159,7 @@ go(S *s, int channels, const float *in, float *out)
     tilex[0] += gain * kick;
     tilex[1] += gain * kick;
     compress(tilex, &s->tcompress2, 5, 10, 25, 48, tilex);
-    gain = 1;
+    gain = 0;
     gain = samphold(&s->tgate[1], gain, p);
     tilex[0] *= gain;
     tilex[1] *= gain;
diff @ 2017-05-27 21:16:01 +0100
diff --git a/src/go.c b/src/go.c
index 81ed7ff3..fe29c2eb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -249,7 +249,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double so2[2] = { fb[0], fb[1] };
     //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
-    double gain = 1;
+    double gain = 0.9;
     so2[0] *= gain;
     so2[1] *= gain;
     for (int c = 0; c < 2; ++c)
diff @ 2017-05-27 21:16:08 +0100
diff --git a/src/go.c b/src/go.c
index fe29c2eb..630976f5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -220,7 +220,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 = 1;
+    double gain = 0;
     pnoise[0] *= gain;
     pnoise[1] *= gain;
     mixdown[0] += pnoise[0];
diff @ 2017-05-27 21:16:14 +0100
diff --git a/src/go.c b/src/go.c
index 630976f5..21f91392 100644
--- a/src/go.c
+++ b/src/go.c
@@ -249,7 +249,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double so2[2] = { fb[0], fb[1] };
     //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
-    double gain = 0.9;
+    double gain = 0.8;
     so2[0] *= gain;
     so2[1] *= gain;
     for (int c = 0; c < 2; ++c)

the end