session-2017-06-03-183355

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-06-03 19:34:13 +0100
diff --git a/src/go.c b/src/go.c
index fc1dd19e..3ebb3bc9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,7 +253,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);
@@ -278,7 +278,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 * wwave[c])
diff @ 2017-06-03 19:34:28 +0100
diff --git a/src/go.c b/src/go.c
index 3ebb3bc9..c074c065 100644
--- a/src/go.c
+++ b/src/go.c
@@ -264,7 +264,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;
     }
@@ -275,7 +275,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, 1500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-06-03 19:34:32 +0100
diff --git a/src/go.c b/src/go.c
index c074c065..d4786c2f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -265,7 +265,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-06-03 19:34:33 +0100
diff --git a/src/go.c b/src/go.c
index d4786c2f..bb0872de 100644
--- a/src/go.c
+++ b/src/go.c
@@ -264,7 +264,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-06-03 19:34:36 +0100
diff --git a/src/go.c b/src/go.c
index bb0872de..d10e74ac 100644
--- a/src/go.c
+++ b/src/go.c
@@ -264,7 +264,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-06-03 19:34:55 +0100
diff --git a/src/go.c b/src/go.c
index d10e74ac..b82b263c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -264,7 +264,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.4, fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.1, down);
       fb[c] = fb[c] - down - up;
     }
diff @ 2017-06-03 19:34:59 +0100
diff --git a/src/go.c b/src/go.c
index b82b263c..46f80cf6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -265,7 +265,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.4, 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.2, down);
       fb[c] = fb[c] - down - up;
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-06-03 19:35:32 +0100
diff --git a/src/go.c b/src/go.c
index 46f80cf6..c830eb6e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -141,7 +141,8 @@ go(S *s, int channels, const float *in, float *out)
       s->ttempo = SR * 1.0 / (1 << 18);
     }
     double p = phasor(&s->tphase, s->ttempo);
-    double kick = 1 - wrap(16 * p);
+    double kick = 1 - wrap(8 * p);
+    kick *= kick;
     kick *= kick;
     kick *= kick;
     kick *= kick;
@@ -178,10 +179,10 @@ 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;
+    tilex[0] = gain * kick;
+    tilex[1] = gain * kick;
     compress(tilex, &s->tcompress2, 5, 10, 25, 48, tilex);
     gain = 0;
     gain = samphold(&s->tgate[1], gain, p);
diff @ 2017-06-03 19:36:01 +0100
diff --git a/src/go.c b/src/go.c
index c830eb6e..6e59e50f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -265,7 +265,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.4, 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.2, down);
       fb[c] = fb[c] - down - up;
     }
diff @ 2017-06-03 19:36:07 +0100
diff --git a/src/go.c b/src/go.c
index 6e59e50f..f72ff05d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -265,7 +265,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.6, fb[c]);
       double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.2, down);
       fb[c] = fb[c] - down - up;
     }
diff @ 2017-06-03 19:36:08 +0100
diff --git a/src/go.c b/src/go.c
index f72ff05d..c0830636 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,7 +266,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.6, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.2, 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-06-03 19:36:13 +0100
diff --git a/src/go.c b/src/go.c
index c0830636..e3ea9dbc 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,7 +266,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.6, 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.5, down);
       fb[c] = fb[c] - down - up;
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-06-03 19:36:16 +0100
diff --git a/src/go.c b/src/go.c
index e3ea9dbc..8eaf10c7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,7 +266,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.6, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.5, down);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.6, down);
       fb[c] = fb[c] - down - up;
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-06-03 19:36:22 +0100
diff --git a/src/go.c b/src/go.c
index 8eaf10c7..04e1d850 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,7 +266,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.6, 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, -0.7, down);
       fb[c] = fb[c] - down - up;
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-06-03 19:36:34 +0100
diff --git a/src/go.c b/src/go.c
index 04e1d850..2040caf2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -184,7 +184,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-06-03 19:36:45 +0100
diff --git a/src/go.c b/src/go.c
index 2040caf2..4785d038 100644
--- a/src/go.c
+++ b/src/go.c
@@ -170,7 +170,7 @@ go(S *s, int channels, const float *in, float *out)
     fb = samphold(&s->tgate[2], fb, wrap(4 * 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-06-03 19:36:55 +0100
diff --git a/src/go.c b/src/go.c
index 4785d038..84b8b07b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -170,7 +170,7 @@ go(S *s, int channels, const float *in, float *out)
     fb = samphold(&s->tgate[2], fb, wrap(4 * 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, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
diff @ 2017-06-03 19:37:06 +0100
diff --git a/src/go.c b/src/go.c
index 84b8b07b..df983c5f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -170,7 +170,7 @@ go(S *s, int channels, const float *in, float *out)
     fb = samphold(&s->tgate[2], fb, wrap(4 * 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, 25)*25)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 35)*35)*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-06-03 19:37:17 +0100
diff --git a/src/go.c b/src/go.c
index df983c5f..714fc7d7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -171,7 +171,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, 35)*35)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
     tilex[0] = fb1;
diff @ 2017-06-03 19:37:28 +0100
diff --git a/src/go.c b/src/go.c
index 714fc7d7..5824710e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -159,7 +159,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.5) + 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 sfb1 = delread4(&s->tcomb1, 1000 / hz1);
diff @ 2017-06-03 19:37:35 +0100
diff --git a/src/go.c b/src/go.c
index 5824710e..535f91fd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -159,7 +159,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.5) + 25 * (wrap(2 * p) > 1);
+    double khz = 50 - 10 * (wrap(4 * p) > 0.75) + 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 sfb1 = delread4(&s->tcomb1, 1000 / hz1);
diff @ 2017-06-03 19:37:43 +0100
diff --git a/src/go.c b/src/go.c
index 535f91fd..a4d29e2a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -159,7 +159,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(4 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
+    double khz = 50 - 10 * (wrap(2 * p) > 0.75) + 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 sfb1 = delread4(&s->tcomb1, 1000 / hz1);
diff @ 2017-06-03 19:38:03 +0100
diff --git a/src/go.c b/src/go.c
index a4d29e2a..a66774d2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -166,7 +166,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 = 0;
+    double fb = 0.1;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
diff @ 2017-06-03 19:38:12 +0100
diff --git a/src/go.c b/src/go.c
index a66774d2..b428ef35 100644
--- a/src/go.c
+++ b/src/go.c
@@ -181,8 +181,8 @@ go(S *s, int channels, const float *in, float *out)
     tilex[1] *= 5;
     double gain = 1;
     gain = samphold(&s->tgate[0], gain, p);
-    tilex[0] = gain * kick;
-    tilex[1] = gain * kick;
+    tilex[0] += gain * kick;
+    tilex[1] += gain * kick;
     compress(tilex, &s->tcompress2, 5, 10, 25, 48, tilex);
     gain = 1;
     gain = samphold(&s->tgate[1], gain, p);
diff @ 2017-06-03 19:38:21 +0100
diff --git a/src/go.c b/src/go.c
index b428ef35..489fa8b2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -166,7 +166,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 = 0.1;
+    double fb = 0.5;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
diff @ 2017-06-03 19:38:23 +0100
diff --git a/src/go.c b/src/go.c
index 489fa8b2..8de46209 100644
--- a/src/go.c
+++ b/src/go.c
@@ -166,7 +166,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 = 0.5;
+    double fb = 0.75;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
diff @ 2017-06-03 19:38:30 +0100
diff --git a/src/go.c b/src/go.c
index 8de46209..f8687378 100644
--- a/src/go.c
+++ b/src/go.c
@@ -164,8 +164,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.01);
+    double fb2 = mix(sfb2, -sfb1, 0.01);
     double fb = 0.75;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
diff @ 2017-06-03 19:38:40 +0100
diff --git a/src/go.c b/src/go.c
index f8687378..b5c0e572 100644
--- a/src/go.c
+++ b/src/go.c
@@ -161,7 +161,7 @@ go(S *s, int channels, const float *in, float *out)
     s->tcomb2.length = SR;
     double khz = 50 - 10 * (wrap(2 * p) > 0.75) + 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.01);
diff @ 2017-06-03 19:38:45 +0100
diff --git a/src/go.c b/src/go.c
index b5c0e572..bb91332f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -166,7 +166,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0.01);
     double fb2 = mix(sfb2, -sfb1, 0.01);
-    double fb = 0.75;
+    double fb = 0.875;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
diff @ 2017-06-03 19:38:52 +0100
diff --git a/src/go.c b/src/go.c
index bb91332f..37d354e3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -160,8 +160,8 @@ go(S *s, int channels, const float *in, float *out)
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
     double khz = 50 - 10 * (wrap(2 * p) > 0.75) + 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.01);
diff @ 2017-06-03 19:38:58 +0100
diff --git a/src/go.c b/src/go.c
index 37d354e3..993cb1bf 100644
--- a/src/go.c
+++ b/src/go.c
@@ -166,7 +166,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0.01);
     double fb2 = mix(sfb2, -sfb1, 0.01);
-    double fb = 0.875;
+    double fb = 0.9875;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
diff @ 2017-06-03 19:39:05 +0100
diff --git a/src/go.c b/src/go.c
index 993cb1bf..2b877246 100644
--- a/src/go.c
+++ b/src/go.c
@@ -164,8 +164,8 @@ go(S *s, int channels, const float *in, float *out)
     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.01);
-    double fb2 = mix(sfb2, -sfb1, 0.01);
+    double fb1 = mix(sfb1, -sfb2, 0.1);
+    double fb2 = mix(sfb2, -sfb1, 0.1);
     double fb = 0.9875;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
diff @ 2017-06-03 19:39:11 +0100
diff --git a/src/go.c b/src/go.c
index 2b877246..40b0b90f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -164,8 +164,8 @@ go(S *s, int channels, const float *in, float *out)
     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.1);
-    double fb2 = mix(sfb2, -sfb1, 0.1);
+    double fb1 = mix(sfb1, -sfb2, 0.05);
+    double fb2 = mix(sfb2, -sfb1, 0.05);
     double fb = 0.9875;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
diff @ 2017-06-03 19:39:47 +0100
diff --git a/src/go.c b/src/go.c
index 40b0b90f..d8844a56 100644
--- a/src/go.c
+++ b/src/go.c
@@ -141,7 +141,7 @@ go(S *s, int channels, const float *in, float *out)
       s->ttempo = SR * 1.0 / (1 << 18);
     }
     double p = phasor(&s->tphase, s->ttempo);
-    double kick = 1 - wrap(8 * p);
+    double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 8) * p);
     kick *= kick;
     kick *= kick;
     kick *= kick;
@@ -299,6 +299,4 @@ go(S *s, int channels, const float *in, float *out)
   {
     out[c] = tanh(mixdown[c]);
   }
-  s->reloaded = 0;
-  return 0;
-}
+  s
\ No newline at end of file
diff @ 2017-06-03 19:39:47 +0100
diff --git a/src/go.c b/src/go.c
index d8844a56..96b968ef 100644
--- a/src/go.c
+++ b/src/go.c
@@ -299,4 +299,6 @@ go(S *s, int channels, const float *in, float *out)
   {
     out[c] = tanh(mixdown[c]);
   }
-  s
\ No newline at end of file
+  s->reloaded = 0;
+  return 0;
+}
diff @ 2017-06-03 19:40:09 +0100
diff --git a/src/go.c b/src/go.c
index 96b968ef..838198b7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -142,6 +142,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 8) * p);
+    kick *= wrap(2 * p) < 0.75;
     kick *= kick;
     kick *= kick;
     kick *= kick;
diff @ 2017-06-03 19:40:16 +0100
diff --git a/src/go.c b/src/go.c
index 838198b7..f669d73a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -142,7 +142,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 8) * p);
-    kick *= wrap(2 * p) < 0.75;
+    kick *= wrap(2 * p) < 0.5;
     kick *= kick;
     kick *= kick;
     kick *= kick;
diff @ 2017-06-03 19:40:22 +0100
diff --git a/src/go.c b/src/go.c
index f669d73a..52c32b01 100644
--- a/src/go.c
+++ b/src/go.c
@@ -142,7 +142,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 8) * p);
-    kick *= wrap(2 * p) < 0.5;
+    kick *= wrap(2 * p) < 0.25;
     kick *= kick;
     kick *= kick;
     kick *= kick;
diff @ 2017-06-03 19:40:58 +0100
diff --git a/src/go.c b/src/go.c
index 52c32b01..97ee48cf 100644
--- a/src/go.c
+++ b/src/go.c
@@ -128,8 +128,6 @@ go(S *s, int channels, const float *in, float *out)
     wwave[0] = os[0];
     wwave[1] = os[1];
   }
-  mixdown[0] += wwave[0];
-  mixdown[1] += wwave[1];
 
   // ===================================================================
   // = 4 = total intraliminal extraction
@@ -143,6 +141,8 @@ go(S *s, int channels, const float *in, float *out)
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 8) * p);
     kick *= wrap(2 * p) < 0.25;
+    wwave[0] *= wrap(2 * p) > 0.5;
+    wwave[1] *= wrap(2 * p) > 0.5;
     kick *= kick;
     kick *= kick;
     kick *= kick;
@@ -193,6 +193,9 @@ go(S *s, int channels, const float *in, float *out)
   mixdown[0] += tilex[0];
   mixdown[1] += tilex[1];
 
+  mixdown[0] += wwave[0];
+  mixdown[1] += wwave[1];
+
   // ===================================================================
   // = 3 = contain the zebra
   double env;
diff @ 2017-06-03 19:41:15 +0100
diff --git a/src/go.c b/src/go.c
index 97ee48cf..7db1ed53 100644
--- a/src/go.c
+++ b/src/go.c
@@ -115,11 +115,11 @@ go(S *s, int channels, const float *in, float *out)
     double q = wrap(60 * 64 / 2 * p);
     double o = sin(twopi *
       ( q
-      + 0.0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
+      + 1.0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       + 0.0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + 0.0 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
-    double gain = 0;
+    double gain = 0.1;
     o *= gain;
     double os[2] =
       { samphold(&s->wwsh[0], o, wrap(400 * q + 0.25))
diff @ 2017-06-03 19:41:28 +0100
diff --git a/src/go.c b/src/go.c
index 7db1ed53..f7941ab2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -119,7 +119,7 @@ go(S *s, int channels, const float *in, float *out)
       + 0.0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + 0.0 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
-    double gain = 0.1;
+    double gain = 0.5;
     o *= gain;
     double os[2] =
       { samphold(&s->wwsh[0], o, wrap(400 * q + 0.25))
diff @ 2017-06-03 19:41:37 +0100
diff --git a/src/go.c b/src/go.c
index f7941ab2..f0fe96c7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -119,7 +119,7 @@ go(S *s, int channels, const float *in, float *out)
       + 0.0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + 0.0 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
-    double gain = 0.5;
+    double gain = 1;
     o *= gain;
     double os[2] =
       { samphold(&s->wwsh[0], o, wrap(400 * q + 0.25))
diff @ 2017-06-03 19:41:45 +0100
diff --git a/src/go.c b/src/go.c
index f0fe96c7..caa937f4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -116,7 +116,7 @@ go(S *s, int channels, const float *in, float *out)
     double o = sin(twopi *
       ( q
       + 1.0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
-      + 0.0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
+      + 1.0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + 0.0 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
diff @ 2017-06-03 19:41:57 +0100
diff --git a/src/go.c b/src/go.c
index caa937f4..651ecc2e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -112,7 +112,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     s->wtempo = SR * 1.0 / (1 << 21);
     double p = phasor(&s->wave, s->wtempo);
-    double q = wrap(60 * 64 / 2 * p);
+    double q = wrap(60 * 64 * p);
     double o = sin(twopi *
       ( q
       + 1.0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
diff @ 2017-06-03 19:42:06 +0100
diff --git a/src/go.c b/src/go.c
index 651ecc2e..2b66c9fa 100644
--- a/src/go.c
+++ b/src/go.c
@@ -141,8 +141,8 @@ go(S *s, int channels, const float *in, float *out)
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 8) * p);
     kick *= wrap(2 * p) < 0.25;
-    wwave[0] *= wrap(2 * p) > 0.5;
-    wwave[1] *= wrap(2 * p) > 0.5;
+    wwave[0] *= wrap(2 * p) > 0.25;
+    wwave[1] *= wrap(2 * p) > 0.25;
     kick *= kick;
     kick *= kick;
     kick *= kick;
diff @ 2017-06-03 19:42:18 +0100
diff --git a/src/go.c b/src/go.c
index 2b66c9fa..c054f4cd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -116,7 +116,7 @@ go(S *s, int channels, const float *in, float *out)
     double o = sin(twopi *
       ( q
       + 1.0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
-      + 1.0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
+      - 1.0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + 0.0 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
diff @ 2017-06-03 19:42:27 +0100
diff --git a/src/go.c b/src/go.c
index c054f4cd..3f3ad9fd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -115,7 +115,7 @@ go(S *s, int channels, const float *in, float *out)
     double q = wrap(60 * 64 * p);
     double o = sin(twopi *
       ( q
-      + 1.0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
+      + 0.5 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 1.0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + 0.0 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
diff @ 2017-06-03 19:42:33 +0100
diff --git a/src/go.c b/src/go.c
index 3f3ad9fd..efe61a64 100644
--- a/src/go.c
+++ b/src/go.c
@@ -115,7 +115,7 @@ go(S *s, int channels, const float *in, float *out)
     double q = wrap(60 * 64 * p);
     double o = sin(twopi *
       ( q
-      + 0.5 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
+      + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 1.0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + 0.0 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
diff @ 2017-06-03 19:42:40 +0100
diff --git a/src/go.c b/src/go.c
index efe61a64..a6e92ce1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -116,7 +116,7 @@ go(S *s, int channels, const float *in, float *out)
     double o = sin(twopi *
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
-      - 1.0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
+      - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + 0.0 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
diff @ 2017-06-03 19:42:48 +0100
diff --git a/src/go.c b/src/go.c
index a6e92ce1..d2ecc965 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + 0.0 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + 0.1 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:42:53 +0100
diff --git a/src/go.c b/src/go.c
index d2ecc965..c9aeda6d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + 0.1 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + 0.2 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:42:56 +0100
diff --git a/src/go.c b/src/go.c
index c9aeda6d..95fdb206 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + 0.2 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + 0.3 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:42:59 +0100
diff --git a/src/go.c b/src/go.c
index 95fdb206..af3c52d8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + 0.3 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + 0.5 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:43:02 +0100
diff --git a/src/go.c b/src/go.c
index af3c52d8..9e2ad68f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + 0.5 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + 0.7 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:43:04 +0100
diff --git a/src/go.c b/src/go.c
index 9e2ad68f..c9aeda6d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + 0.7 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + 0.2 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:43:14 +0100
diff --git a/src/go.c b/src/go.c
index c9aeda6d..070cb70f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + 0.2 * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + wrap(16 * p) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:43:33 +0100
diff --git a/src/go.c b/src/go.c
index 070cb70f..6aaf5e1d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + wrap(16 * p) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + pow(2, wrap(16 * p)) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:43:40 +0100
diff --git a/src/go.c b/src/go.c
index 6aaf5e1d..094d5a68 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(2, wrap(16 * p)) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + pow(2, wrap(4 * p)) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:43:44 +0100
diff --git a/src/go.c b/src/go.c
index 094d5a68..d41839e3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(2, wrap(4 * p)) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + pow(0.5, wrap(4 * p)) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:43:56 +0100
diff --git a/src/go.c b/src/go.c
index d41839e3..2e021c23 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.5, wrap(4 * p)) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + pow(0.5, wrap(2* p)) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:44:02 +0100
diff --git a/src/go.c b/src/go.c
index 2e021c23..ee659c33 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.5, wrap(2* p)) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + pow(0.5, wrap(p)) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:44:19 +0100
diff --git a/src/go.c b/src/go.c
index ee659c33..e17fd629 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.5, wrap(p)) * cos(twopi * 24 * p) * sin(twopi * 5 * q)
+      + pow(0.5, wrap(p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:44:26 +0100
diff --git a/src/go.c b/src/go.c
index e17fd629..293bbdf8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.5, wrap(p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * 5 * q)
+      + pow(0.5, wrap(p)) * pow(4, cos(twopi * 24 * p)) * sin(twopi * 5 * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:44:39 +0100
diff --git a/src/go.c b/src/go.c
index 293bbdf8..2b7ce723 100644
--- a/src/go.c
+++ b/src/go.c
@@ -116,7 +116,7 @@ go(S *s, int channels, const float *in, float *out)
     double o = sin(twopi *
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
-      - 0.5 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
+      - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + pow(0.5, wrap(p)) * pow(4, cos(twopi * 24 * p)) * sin(twopi * 5 * q)
       ));
     double gain = 1;
diff @ 2017-06-03 19:44:55 +0100
diff --git a/src/go.c b/src/go.c
index 2b7ce723..cd91c566 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.5, wrap(p)) * pow(4, cos(twopi * 24 * p)) * sin(twopi * 5 * q)
+      + pow(0.5, wrap(p)) * pow(4, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:45:01 +0100
diff --git a/src/go.c b/src/go.c
index cd91c566..6a37b6fa 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->wave.phase = 0;
+..      s->wave.phase = 0;
     }
     s->wtempo = SR * 1.0 / (1 << 21);
     double p = phasor(&s->wave, s->wtempo);
diff @ 2017-06-03 19:45:04 +0100
diff --git a/src/go.c b/src/go.c
index 6a37b6fa..2035bd2c 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->wave.phase = 0;
+      //      s->wave.phase = 0;
     }
     s->wtempo = SR * 1.0 / (1 << 21);
     double p = phasor(&s->wave, s->wtempo);
diff @ 2017-06-03 19:45:35 +0100
diff --git a/src/go.c b/src/go.c
index 2035bd2c..5d62dd6f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -122,8 +122,8 @@ go(S *s, int channels, const float *in, float *out)
     double gain = 1;
     o *= gain;
     double os[2] =
-      { samphold(&s->wwsh[0], o, wrap(400 * q + 0.25))
-      , samphold(&s->wwsh[1], o, wrap(400 * q + 0.75))
+      { samphold(&s->wwsh[0], o, wrap(40 * q + 0.25))
+      , samphold(&s->wwsh[1], o, wrap(40 * q + 0.75))
       };
     wwave[0] = os[0];
     wwave[1] = os[1];
diff @ 2017-06-03 19:45:43 +0100
diff --git a/src/go.c b/src/go.c
index 5d62dd6f..0e345d15 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.5, wrap(p)) * pow(4, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+      + pow(0.5, wrap(p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:45:47 +0100
diff --git a/src/go.c b/src/go.c
index 0e345d15..3912b497 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.5, wrap(p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+      + pow(0.25, wrap(p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:45:55 +0100
diff --git a/src/go.c b/src/go.c
index 3912b497..7ba9dc04 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.25, wrap(p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+      + pow(0.25, wrap(16 * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:46:00 +0100
diff --git a/src/go.c b/src/go.c
index 7ba9dc04..86476859 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.25, wrap(16 * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+      + pow(0.25, wrap(64 * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:46:05 +0100
diff --git a/src/go.c b/src/go.c
index 86476859..403cd633 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.25, wrap(64 * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+      + pow(0.25, wrap(128 * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:46:10 +0100
diff --git a/src/go.c b/src/go.c
index 403cd633..205667e3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.25, wrap(128 * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+      + pow(0.25, wrap(256 * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:46:25 +0100
diff --git a/src/go.c b/src/go.c
index 205667e3..c22bedf5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.25, wrap(256 * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+      + pow(0.25, wrap((p > 0.5) ? 128 : 256) * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:46:34 +0100
diff --git a/src/go.c b/src/go.c
index c22bedf5..c55d9085 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.25, wrap((p > 0.5) ? 128 : 256) * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+      + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:46:53 +0100
diff --git a/src/go.c b/src/go.c
index c55d9085..b2bd6d78 100644
--- a/src/go.c
+++ b/src/go.c
@@ -171,8 +171,8 @@ go(S *s, int channels, const float *in, float *out)
     fb = samphold(&s->tgate[2], fb, wrap(4 * 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, 35)*35)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 5)*5)*2;
+    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 25)*25);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
     tilex[0] = fb1;
diff @ 2017-06-03 19:47:01 +0100
diff --git a/src/go.c b/src/go.c
index b2bd6d78..11695b2c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -173,8 +173,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, 5)*5)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 25)*25);
-    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, 50)*50)
+         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 50)*50);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2017-06-03 19:47:05 +0100
diff --git a/src/go.c b/src/go.c
index 11695b2c..faf96930 100644
--- a/src/go.c
+++ b/src/go.c
@@ -171,7 +171,7 @@ go(S *s, int channels, const float *in, float *out)
     fb = samphold(&s->tgate[2], fb, wrap(4 * 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, 25)*25);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 50)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 50)*50);
diff @ 2017-06-03 19:47:15 +0100
diff --git a/src/go.c b/src/go.c
index faf96930..dc090c8a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -173,8 +173,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, 25)*25);
-    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 50)*50)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 50)*50);
+    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 150)*150)
+         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 150)*150);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2017-06-03 19:47:38 +0100
diff --git a/src/go.c b/src/go.c
index dc090c8a..a1736c28 100644
--- a/src/go.c
+++ b/src/go.c
@@ -160,7 +160,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(2 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
+    double khz = 50 - 10 * (wrap(2 * p) > 0.75) + 20 * (wrap(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-06-03 19:48:08 +0100
diff --git a/src/go.c b/src/go.c
index a1736c28..17ed4365 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) * pow(2, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+      + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) * pow(0.25, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:48:16 +0100
diff --git a/src/go.c b/src/go.c
index 17ed4365..eafa64b7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) * pow(0.25, cos(twopi * 24 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+      + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) * pow(0.25, cos(twopi * 96 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:48:27 +0100
diff --git a/src/go.c b/src/go.c
index eafa64b7..10ecee1b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,9 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) * pow(0.25, cos(twopi * 96 * p)) * sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+      + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) *
+        pow(0.25, cos(twopi * 96 * p)) *
+        sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:48:31 +0100
diff --git a/src/go.c b/src/go.c
index 10ecee1b..51bc1141 100644
--- a/src/go.c
+++ b/src/go.c
@@ -114,7 +114,7 @@ go(S *s, int channels, const float *in, float *out)
     double p = phasor(&s->wave, s->wtempo);
     double q = wrap(60 * 64 * p);
     double o = sin(twopi *
-      ( q
+      ( 0
       + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) *
diff @ 2017-06-03 19:48:45 +0100
diff --git a/src/go.c b/src/go.c
index 51bc1141..c10da75d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -115,8 +115,8 @@ go(S *s, int channels, const float *in, float *out)
     double q = wrap(60 * 64 * p);
     double o = sin(twopi *
       ( 0
-      + 0.25 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
-      - 0.25 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
+      + 0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
+      - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) *
         pow(0.25, cos(twopi * 96 * p)) *
         sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
diff @ 2017-06-03 19:49:07 +0100
diff --git a/src/go.c b/src/go.c
index c10da75d..3be9bb28 100644
--- a/src/go.c
+++ b/src/go.c
@@ -142,7 +142,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 8) * p);
-    kick *= wrap(2 * p) < 0.25;
+    kick *= wrap(2 * p) < 0.5;
     wwave[0] *= wrap(2 * p) > 0.25;
     wwave[1] *= wrap(2 * p) > 0.25;
     kick *= kick;
diff @ 2017-06-03 19:49:13 +0100
diff --git a/src/go.c b/src/go.c
index 3be9bb28..001b9169 100644
--- a/src/go.c
+++ b/src/go.c
@@ -142,7 +142,6 @@ go(S *s, int channels, const float *in, float *out)
     }
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 8) * p);
-    kick *= wrap(2 * p) < 0.5;
     wwave[0] *= wrap(2 * p) > 0.25;
     wwave[1] *= wrap(2 * p) > 0.25;
     kick *= kick;
diff @ 2017-06-03 19:49:23 +0100
diff --git a/src/go.c b/src/go.c
index 001b9169..7b7f3c15 100644
--- a/src/go.c
+++ b/src/go.c
@@ -119,7 +119,7 @@ go(S *s, int channels, const float *in, float *out)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) *
         pow(0.25, cos(twopi * 96 * p)) *
-        sin(twopi * (wrap(p) < 0.5 ? 5 : 17) * q)
+        sin(twopi * (wrap(p) < 0.5 ? 5 : 6) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:49:39 +0100
diff --git a/src/go.c b/src/go.c
index 7b7f3c15..3c9faa33 100644
--- a/src/go.c
+++ b/src/go.c
@@ -118,7 +118,7 @@ go(S *s, int channels, const float *in, float *out)
       + 0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) *
-        pow(0.25, cos(twopi * 96 * p)) *
+        pow(0.25, cos(twopi * 128 * p)) *
         sin(twopi * (wrap(p) < 0.5 ? 5 : 6) * q)
       ));
     double gain = 1;
diff @ 2017-06-03 19:49:43 +0100
diff --git a/src/go.c b/src/go.c
index 3c9faa33..555ce022 100644
--- a/src/go.c
+++ b/src/go.c
@@ -118,7 +118,7 @@ go(S *s, int channels, const float *in, float *out)
       + 0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) *
-        pow(0.25, cos(twopi * 128 * p)) *
+        pow(0.25, cos(twopi * 3 * 128 * p)) *
         sin(twopi * (wrap(p) < 0.5 ? 5 : 6) * q)
       ));
     double gain = 1;
diff @ 2017-06-03 19:49:46 +0100
diff --git a/src/go.c b/src/go.c
index 555ce022..c508cac9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -118,7 +118,7 @@ go(S *s, int channels, const float *in, float *out)
       + 0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) *
-        pow(0.25, cos(twopi * 3 * 128 * p)) *
+        pow(0.25, cos(twopi * 3 * 64 * p)) *
         sin(twopi * (wrap(p) < 0.5 ? 5 : 6) * q)
       ));
     double gain = 1;
diff @ 2017-06-03 19:50:05 +0100
diff --git a/src/go.c b/src/go.c
index c508cac9..6d083ee7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -118,7 +118,7 @@ go(S *s, int channels, const float *in, float *out)
       + 0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) *
-        pow(0.25, cos(twopi * 3 * 64 * p)) *
+        pow(0.25, cos(twopi * (3 + 2 * (wrap(16 * p) > 0.5)) * 64 * p)) *
         sin(twopi * (wrap(p) < 0.5 ? 5 : 6) * q)
       ));
     double gain = 1;
diff @ 2017-06-03 19:50:18 +0100
diff --git a/src/go.c b/src/go.c
index 6d083ee7..a9643e45 100644
--- a/src/go.c
+++ b/src/go.c
@@ -119,7 +119,7 @@ go(S *s, int channels, const float *in, float *out)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) *
         pow(0.25, cos(twopi * (3 + 2 * (wrap(16 * p) > 0.5)) * 64 * p)) *
-        sin(twopi * (wrap(p) < 0.5 ? 5 : 6) * q)
+        sin(twopi * (wrap(4 * p) < 0.5 ? 5 : 6) * q)
       ));
     double gain = 1;
     o *= gain;
diff @ 2017-06-03 19:50:32 +0100
diff --git a/src/go.c b/src/go.c
index a9643e45..b560ff26 100644
--- a/src/go.c
+++ b/src/go.c
@@ -114,7 +114,7 @@ go(S *s, int channels, const float *in, float *out)
     double p = phasor(&s->wave, s->wtempo);
     double q = wrap(60 * 64 * p);
     double o = sin(twopi *
-      ( 0
+      ( q
       + 0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
       + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) *
diff @ 2017-06-03 19:50:40 +0100
diff --git a/src/go.c b/src/go.c
index b560ff26..78788c66 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.25, wrap((p > 0.5 ? 128 : 256) * p)) *
+      + pow(0.125, wrap((p > 0.5 ? 128 : 256) * p)) *
         pow(0.25, cos(twopi * (3 + 2 * (wrap(16 * p) > 0.5)) * 64 * p)) *
         sin(twopi * (wrap(4 * p) < 0.5 ? 5 : 6) * q)
       ));
diff @ 2017-06-03 19:50:47 +0100
diff --git a/src/go.c b/src/go.c
index 78788c66..6cba467b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.125, wrap((p > 0.5 ? 128 : 256) * p)) *
+      + pow(0.125, wrap((p > 0.5 ? 512 : 256) * p)) *
         pow(0.25, cos(twopi * (3 + 2 * (wrap(16 * p) > 0.5)) * 64 * p)) *
         sin(twopi * (wrap(4 * p) < 0.5 ? 5 : 6) * q)
       ));
diff @ 2017-06-03 19:50:54 +0100
diff --git a/src/go.c b/src/go.c
index 6cba467b..fc95c5fb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.125, wrap((p > 0.5 ? 512 : 256) * p)) *
+      + pow(0.125, wrap((p > 0.5 ? 260 : 256) * p)) *
         pow(0.25, cos(twopi * (3 + 2 * (wrap(16 * p) > 0.5)) * 64 * p)) *
         sin(twopi * (wrap(4 * p) < 0.5 ? 5 : 6) * q)
       ));
diff @ 2017-06-03 19:50:56 +0100
diff --git a/src/go.c b/src/go.c
index fc95c5fb..85804328 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.125, wrap((p > 0.5 ? 260 : 256) * p)) *
+      + pow(0.125, wrap((p > 0.5 ? 360 : 256) * p)) *
         pow(0.25, cos(twopi * (3 + 2 * (wrap(16 * p) > 0.5)) * 64 * p)) *
         sin(twopi * (wrap(4 * p) < 0.5 ? 5 : 6) * q)
       ));
diff @ 2017-06-03 19:51:06 +0100
diff --git a/src/go.c b/src/go.c
index 85804328..8179d077 100644
--- a/src/go.c
+++ b/src/go.c
@@ -141,7 +141,7 @@ go(S *s, int channels, const float *in, float *out)
       s->ttempo = SR * 1.0 / (1 << 18);
     }
     double p = phasor(&s->tphase, s->ttempo);
-    double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 8) * p);
+    double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 16) * p);
     wwave[0] *= wrap(2 * p) > 0.25;
     wwave[1] *= wrap(2 * p) > 0.25;
     kick *= kick;
diff @ 2017-06-03 19:51:16 +0100
diff --git a/src/go.c b/src/go.c
index 8179d077..7da47b00 100644
--- a/src/go.c
+++ b/src/go.c
@@ -142,8 +142,8 @@ go(S *s, int channels, const float *in, float *out)
     }
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 16) * p);
-    wwave[0] *= wrap(2 * p) > 0.25;
-    wwave[1] *= wrap(2 * p) > 0.25;
+    wwave[0] *= wrap(2 * p) > 0.125;
+    wwave[1] *= wrap(2 * p) > 0.125;
     kick *= kick;
     kick *= kick;
     kick *= kick;
diff @ 2017-06-03 19:51:20 +0100
diff --git a/src/go.c b/src/go.c
index 7da47b00..8179d077 100644
--- a/src/go.c
+++ b/src/go.c
@@ -142,8 +142,8 @@ go(S *s, int channels, const float *in, float *out)
     }
     double p = phasor(&s->tphase, s->ttempo);
     double kick = 1 - wrap(((wrap(2 * p) < 0.25) ? 16 : 16) * p);
-    wwave[0] *= wrap(2 * p) > 0.125;
-    wwave[1] *= wrap(2 * p) > 0.125;
+    wwave[0] *= wrap(2 * p) > 0.25;
+    wwave[1] *= wrap(2 * p) > 0.25;
     kick *= kick;
     kick *= kick;
     kick *= kick;
diff @ 2017-06-03 19:51:40 +0100
diff --git a/src/go.c b/src/go.c
index 8179d077..d5f74fb9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -287,7 +287,7 @@ go(S *s, int channels, const float *in, float *out)
 #if 0
           impulse[c] +
 #endif
-          biquad(highpass(&s->hi[c], 1000, flatq), 0 * wwave[c])
+          biquad(highpass(&s->hi[c], 1000, flatq), 1 * wwave[c])
         ));
     }
     mixdown[0] += so2[0];
diff @ 2017-06-03 19:51:50 +0100
diff --git a/src/go.c b/src/go.c
index d5f74fb9..b5e814e1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -270,8 +270,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, 0.6, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -0.7, down);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 3.1, fb[c]);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -3.1, down);
       fb[c] = fb[c] - down - up;
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-06-03 19:51:59 +0100
diff --git a/src/go.c b/src/go.c
index b5e814e1..ed4b3af8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -270,8 +270,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, 3.1, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -3.1, down);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 7.1, fb[c]);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -7.1, down);
       fb[c] = fb[c] - down - up;
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-06-03 19:52:04 +0100
diff --git a/src/go.c b/src/go.c
index ed4b3af8..e4c00daa 100644
--- a/src/go.c
+++ b/src/go.c
@@ -281,7 +281,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], 20, 2500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-06-03 19:52:07 +0100
diff --git a/src/go.c b/src/go.c
index e4c00daa..912d4ae8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -281,7 +281,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, 2500,
+      so2echo(&s->echo[c], 120, 2500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-06-03 19:52:12 +0100
diff --git a/src/go.c b/src/go.c
index 912d4ae8..b343a0cd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -270,8 +270,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, 7.1, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -7.1, down);
+      double down = pitchshift(&s->shift[2 * c + 0], 2, 125, 12.1, fb[c]);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -12.1, down);
       fb[c] = fb[c] - down - up;
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-06-03 19:52:16 +0100
diff --git a/src/go.c b/src/go.c
index b343a0cd..c25e0c56 100644
--- a/src/go.c
+++ b/src/go.c
@@ -271,7 +271,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, 12.1, fb[c]);
-      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -12.1, down);
+      double up   = pitchshift(&s->shift[2 * c + 1], 2, 125, -24.1, down);
       fb[c] = fb[c] - down - up;
     }
     double so2[2] = { fb[0], fb[1] };
diff @ 2017-06-03 19:52:39 +0100
diff --git a/src/go.c b/src/go.c
index c25e0c56..30b3486f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -265,8 +265,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/96. - modulation)
+      , delread4(&s->echo[0].del, 683/96. + modulation)
       };
     for (int c = 0; c < 2; ++c)
     {
diff @ 2017-06-03 19:52:49 +0100
diff --git a/src/go.c b/src/go.c
index 30b3486f..ad028aee 100644
--- a/src/go.c
+++ b/src/go.c
@@ -262,8 +262,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 = 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-06-03 19:53:03 +0100
diff --git a/src/go.c b/src/go.c
index ad028aee..6401efd7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -262,6 +262,8 @@ go(S *s, int channels, const float *in, float *out)
 #if 0
     double impulse[2] = { s->reloaded, s->reloaded };
 #endif
+    if (s->ctzn == 0)
+      s->phase = 0;
     double p = phasor(&s->phase, 0.1);
     double modulation = 4 * cos(twopi * p);
     double fb[2] =
diff @ 2017-06-03 19:53:11 +0100
diff --git a/src/go.c b/src/go.c
index 6401efd7..c90738ae 100644
--- a/src/go.c
+++ b/src/go.c
@@ -263,7 +263,9 @@ go(S *s, int channels, const float *in, float *out)
     double impulse[2] = { s->reloaded, s->reloaded };
 #endif
     if (s->ctzn == 0)
-      s->phase = 0;
+    {
+      s->phase.phase = 0;
+    }
     double p = phasor(&s->phase, 0.1);
     double modulation = 4 * cos(twopi * p);
     double fb[2] =
diff @ 2017-06-03 19:53:18 +0100
diff --git a/src/go.c b/src/go.c
index c90738ae..1127474f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,7 +266,7 @@ go(S *s, int channels, const float *in, float *out)
     {
       s->phase.phase = 0;
     }
-    double p = phasor(&s->phase, 0.1);
+    double p = phasor(&s->phase, 1);
     double modulation = 4 * cos(twopi * p);
     double fb[2] =
       { delread4(&s->echo[1].del, 683/96. - modulation)
diff @ 2017-06-03 19:53:27 +0100
diff --git a/src/go.c b/src/go.c
index 1127474f..00408c3b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -172,7 +172,7 @@ go(S *s, int channels, const float *in, float *out)
     fb = samphold(&s->tgate[2], fb, wrap(4 * 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, 1)*1)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 25)*25);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 150)*150)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 150)*150);
diff @ 2017-06-03 19:53:38 +0100
diff --git a/src/go.c b/src/go.c
index 00408c3b..76ae333a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -285,7 +285,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], 120, 2500,
+      so2echo(&s->echo[c],120, 2500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-06-03 19:53:38 +0100
diff --git a/src/go.c b/src/go.c
index 76ae333a..afe0fcd7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -285,7 +285,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],120, 2500,
+      so2echo(&s->echo[c],20, 2500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-06-03 19:53:43 +0100
diff --git a/src/go.c b/src/go.c
index afe0fcd7..ea7bf45f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -285,7 +285,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, 2500,
+      so2echo(&s->echo[c], 20, 500,
         tanh(
           so2[c] +
 #if 0
diff @ 2017-06-03 19:53:54 +0100
diff --git a/src/go.c b/src/go.c
index ea7bf45f..12533312 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,7 @@ go(S *s, int channels, const float *in, float *out)
       ( q
       + 0 * cos(twopi * 16 * p) * sin(twopi * 2 * q)
       - 0 * cos(twopi * 64 * p) * sin(twopi * 3 * q)
-      + pow(0.125, wrap((p > 0.5 ? 360 : 256) * p)) *
+      + pow(0.0125, wrap((p > 0.5 ? 360 : 256) * p)) *
         pow(0.25, cos(twopi * (3 + 2 * (wrap(16 * p) > 0.5)) * 64 * p)) *
         sin(twopi * (wrap(4 * p) < 0.5 ? 5 : 6) * q)
       ));
diff @ 2017-06-03 19:54:21 +0100
diff --git a/src/go.c b/src/go.c
index 12533312..80d5b2a1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -149,7 +149,7 @@ go(S *s, int channels, const float *in, float *out)
     kick *= kick;
     kick *= kick;
     double kickenv = kick;
-    kick *= 12;
+    kick *= 0;
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick *= 2;
diff @ 2017-06-03 19:54:33 +0100
diff --git a/src/go.c b/src/go.c
index 80d5b2a1..cdd7c2d9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -194,8 +194,6 @@ go(S *s, int channels, const float *in, float *out)
   mixdown[0] += tilex[0];
   mixdown[1] += tilex[1];
 
-  mixdown[0] += wwave[0];
-  mixdown[1] += wwave[1];
 
   // ===================================================================
   // = 3 = contain the zebra
diff @ 2017-06-03 19:54:54 +0100
diff --git a/src/go.c b/src/go.c
index cdd7c2d9..bb23449c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -203,7 +203,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 + 0 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-06-03 19:54:57 +0100
diff --git a/src/go.c b/src/go.c
index bb23449c..6602fe59 100644
--- a/src/go.c
+++ b/src/go.c
@@ -213,9 +213,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
   double pnoise[2];
diff @ 2017-06-03 19:54:57 +0100
diff --git a/src/go.c b/src/go.c
index 6602fe59..1461727e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -213,6 +213,7 @@ go(S *s, int channels, const float *in, float *out)
     freq = 10 * samphold(&s->ctzs, harmonic, 1 - trigger);
     freq = lop(&s->ctzf, freq, 20);
   }
+
   // ===================================================================
   // = 2 = going deep
   double pnoise[2];
diff @ 2017-06-03 19:55:01 +0100
diff --git a/src/go.c b/src/go.c
index 1461727e..e119a2de 100644
--- a/src/go.c
+++ b/src/go.c
@@ -218,7 +218,7 @@ go(S *s, int channels, const float *in, float *out)
   // = 2 = going deep
   double pnoise[2];
   {
-#if 1
+#if -
     if (s->reloaded)
     {
       pink_init(&s->pink[0], 10, 0x1cedCafe + 0);
diff @ 2017-06-03 19:55:01 +0100
diff --git a/src/go.c b/src/go.c
index e119a2de..1e3df780 100644
--- a/src/go.c
+++ b/src/go.c
@@ -218,7 +218,7 @@ go(S *s, int channels, const float *in, float *out)
   // = 2 = going deep
   double pnoise[2];
   {
-#if -
+#if 0
     if (s->reloaded)
     {
       pink_init(&s->pink[0], 10, 0x1cedCafe + 0);
diff @ 2017-06-03 19:55:15 +0100
diff --git a/src/go.c b/src/go.c
index 1e3df780..1fdfd82a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -227,7 +227,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 = 50;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
@@ -245,7 +245,7 @@ go(S *s, int channels, const float *in, float *out)
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
-    double gain = 0;
+    double gain = 1;
     pnoise[0] *= gain;
     pnoise[1] *= gain;
     mixdown[0] += pnoise[0];
diff @ 2017-06-03 19:55:27 +0100
diff --git a/src/go.c b/src/go.c
index 1fdfd82a..4169addd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -203,7 +203,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 + 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-06-03 19:55:37 +0100
diff --git a/src/go.c b/src/go.c
index 4169addd..8c22004b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -203,7 +203,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 + 0 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-06-03 19:55:46 +0100
diff --git a/src/go.c b/src/go.c
index 8c22004b..6e692de9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -203,7 +203,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 = (2 + 0 * (s->ctzn >= 0xC001)) * probability - 0.5;
+    probability = (2 + 2 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-06-03 19:55:58 +0100
diff --git a/src/go.c b/src/go.c
index 6e692de9..67733d81 100644
--- a/src/go.c
+++ b/src/go.c
@@ -137,7 +137,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-06-03 19:56:10 +0100
diff --git a/src/go.c b/src/go.c
index 67733d81..387fe5f2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -121,7 +121,7 @@ go(S *s, int channels, const float *in, float *out)
         pow(0.25, cos(twopi * (3 + 2 * (wrap(16 * p) > 0.5)) * 64 * p)) *
         sin(twopi * (wrap(4 * p) < 0.5 ? 5 : 6) * q)
       ));
-    double gain = 1;
+    double gain = 0;
     o *= gain;
     double os[2] =
       { samphold(&s->wwsh[0], o, wrap(40 * q + 0.25))
diff @ 2017-06-03 19:56:17 +0100
diff --git a/src/go.c b/src/go.c
index 387fe5f2..ade50723 100644
--- a/src/go.c
+++ b/src/go.c
@@ -203,7 +203,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 = (2 + 2 * (s->ctzn >= 0xC001)) * probability - 0.5;
+    probability = (4 + 2 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-06-03 19:56:20 +0100
diff --git a/src/go.c b/src/go.c
index ade50723..f71d3841 100644
--- a/src/go.c
+++ b/src/go.c
@@ -203,7 +203,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 = (4 + 2 * (s->ctzn >= 0xC001)) * probability - 0.5;
+    probability = (8 + 2 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-06-03 19:56:29 +0100
diff --git a/src/go.c b/src/go.c
index f71d3841..fc389762 100644
--- a/src/go.c
+++ b/src/go.c
@@ -203,7 +203,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 = (8 + 2 * (s->ctzn >= 0xC001)) * probability - 0.5;
+    probability = (8 + 8 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
@@ -227,7 +227,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 = 150;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2017-06-03 19:56:44 +0100
diff --git a/src/go.c b/src/go.c
index fc389762..e496bc1c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,8 +240,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na = samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb = samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2017-06-03 19:56:53 +0100
diff --git a/src/go.c b/src/go.c
index e496bc1c..19380b13 100644
--- a/src/go.c
+++ b/src/go.c
@@ -240,8 +240,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na = samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb = samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na = samphold(&s->psh[0], na, wrap(5 * pa[0]));
+    nb = samphold(&s->psh[1], nb, wrap(5 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2017-06-03 19:57:06 +0100
diff --git a/src/go.c b/src/go.c
index 19380b13..53cf0b6e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -209,7 +209,7 @@ go(S *s, int channels, const float *in, float *out)
     double trigger = uniform < probability;
     s->ctze.y += trigger;
     env = lop(&s->ctze, 0, 5);
-    double harmonic = 5 + clamp(16 - zeroes, 0, 20);
+    double harmonic = 15 + clamp(16 - zeroes, 0, 20);
     freq = 10 * samphold(&s->ctzs, harmonic, 1 - trigger);
     freq = lop(&s->ctzf, freq, 20);
   }
diff @ 2017-06-03 19:57:10 +0100
diff --git a/src/go.c b/src/go.c
index 53cf0b6e..9f72a18b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -209,7 +209,7 @@ go(S *s, int channels, const float *in, float *out)
     double trigger = uniform < probability;
     s->ctze.y += trigger;
     env = lop(&s->ctze, 0, 5);
-    double harmonic = 15 + clamp(16 - zeroes, 0, 20);
+    double harmonic = 20 + clamp(16 - zeroes, 0, 20);
     freq = 10 * samphold(&s->ctzs, harmonic, 1 - trigger);
     freq = lop(&s->ctzf, freq, 20);
   }
diff @ 2017-06-03 19:57:15 +0100
diff --git a/src/go.c b/src/go.c
index 9f72a18b..433fcbc3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -209,7 +209,7 @@ go(S *s, int channels, const float *in, float *out)
     double trigger = uniform < probability;
     s->ctze.y += trigger;
     env = lop(&s->ctze, 0, 5);
-    double harmonic = 20 + clamp(16 - zeroes, 0, 20);
+    double harmonic = 16 + clamp(16 - zeroes, 0, 20);
     freq = 10 * samphold(&s->ctzs, harmonic, 1 - trigger);
     freq = lop(&s->ctzf, freq, 20);
   }
diff @ 2017-06-03 19:57:21 +0100
diff --git a/src/go.c b/src/go.c
index 433fcbc3..3e5221fa 100644
--- a/src/go.c
+++ b/src/go.c
@@ -209,7 +209,7 @@ go(S *s, int channels, const float *in, float *out)
     double trigger = uniform < probability;
     s->ctze.y += trigger;
     env = lop(&s->ctze, 0, 5);
-    double harmonic = 16 + clamp(16 - zeroes, 0, 20);
+    double harmonic = 4 + clamp(16 - zeroes, 0, 20);
     freq = 10 * samphold(&s->ctzs, harmonic, 1 - trigger);
     freq = lop(&s->ctzf, freq, 20);
   }
diff @ 2017-06-03 19:57:25 +0100
diff --git a/src/go.c b/src/go.c
index 3e5221fa..3d10bb7c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -210,7 +210,7 @@ go(S *s, int channels, const float *in, float *out)
     s->ctze.y += trigger;
     env = lop(&s->ctze, 0, 5);
     double harmonic = 4 + clamp(16 - zeroes, 0, 20);
-    freq = 10 * samphold(&s->ctzs, harmonic, 1 - trigger);
+    freq = 20 * samphold(&s->ctzs, harmonic, 1 - trigger);
     freq = lop(&s->ctzf, freq, 20);
   }
 
diff @ 2017-06-03 19:57:33 +0100
diff --git a/src/go.c b/src/go.c
index 3d10bb7c..560b6641 100644
--- a/src/go.c
+++ b/src/go.c
@@ -203,7 +203,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 = (8 + 8 * (s->ctzn >= 0xC001)) * probability - 0.5;
+    probability = (8 + 16 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-06-03 19:57:42 +0100
diff --git a/src/go.c b/src/go.c
index 560b6641..bc8b38f1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -203,7 +203,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 = (8 + 16 * (s->ctzn >= 0xC001)) * probability - 0.5;
+    probability = (16 + 16 * (s->ctzn >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2017-06-03 19:57:54 +0100
diff --git a/src/go.c b/src/go.c
index bc8b38f1..4e8232e4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -275,8 +275,8 @@ go(S *s, int channels, const float *in, float *out)
       fb[c] = fb[c] - down - up;
     }
     double so2[2] = { fb[0], fb[1] };
-    compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
-    double gain = 1;
+    //compress(so2, &s->compress[0], 5, 15, 30, 48, so2);
+    double gain = 0.25;
     so2[0] *= gain;
     so2[1] *= gain;
     for (int c = 0; c < 2; ++c)
diff @ 2017-06-03 19:58:08 +0100
diff --git a/src/go.c b/src/go.c
index 4e8232e4..0c2ffb95 100644
--- a/src/go.c
+++ b/src/go.c
@@ -159,6 +159,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= hat;
     hat *= hat;
     hat *= hat;
+    hat *= 0;
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
     double khz = 50 - 10 * (wrap(2 * p) > 0.75) + 20 * (wrap(p) > 0.75);
diff @ 2017-06-03 19:58:20 +0100
diff --git a/src/go.c b/src/go.c
index 0c2ffb95..2717ede5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -228,7 +228,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 = 150;
+    double q = 100;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2017-06-03 19:58:24 +0100
diff --git a/src/go.c b/src/go.c
index 2717ede5..0eb4cdff 100644
--- a/src/go.c
+++ b/src/go.c
@@ -228,7 +228,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-06-03 19:58:27 +0100
diff --git a/src/go.c b/src/go.c
index 0eb4cdff..abfa951e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -228,7 +228,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 = 20;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);

the end