session-2018-05-12-203652

clive

a C audio live-coding skeleton

diff @ 2018-05-12 21:37:00 +0100
diff --git a/src/go.c b/src/go.c
index b00f0266..82c93ff3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -10,7 +10,7 @@
 // =====================================================================
 // =====================================================================
 
-#define RESET 1
+#define RESET 0
 #define SR 48000
 #include "dsp.h"
 
diff @ 2018-05-12 21:37:28 +0100
diff --git a/src/go.c b/src/go.c
index 82c93ff3..cca78f39 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,7 +253,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 10;
+    double q = 15;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-05-12 21:37:34 +0100
diff --git a/src/go.c b/src/go.c
index cca78f39..9424efc7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,7 +253,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 15;
+    double q = 20;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-05-12 21:37:41 +0100
diff --git a/src/go.c b/src/go.c
index 9424efc7..b503f674 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,7 +253,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 20;
+    double q = 25;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-05-12 21:37:45 +0100
diff --git a/src/go.c b/src/go.c
index b503f674..ca5c8c79 100644
--- a/src/go.c
+++ b/src/go.c
@@ -254,8 +254,8 @@ go(S *s, int channels, const float *in, float *out)
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
     double q = 25;
-    na *= 10;
-    nb *= 10;
+    na *= 9;
+    nb *= 9;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-05-12 21:37:48 +0100
diff --git a/src/go.c b/src/go.c
index ca5c8c79..282a3884 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,7 +253,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 25;
+    double q = 30;
     na *= 9;
     nb *= 9;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-05-12 21:37:54 +0100
diff --git a/src/go.c b/src/go.c
index 282a3884..d3a8e4ce 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,9 +253,9 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 30;
-    na *= 9;
-    nb *= 9;
+    double q = 40;
+    na *= 8;
+    nb *= 8;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-05-12 21:38:01 +0100
diff --git a/src/go.c b/src/go.c
index d3a8e4ce..7e291965 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,9 +253,9 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 40;
-    na *= 8;
-    nb *= 8;
+    double q = 60;
+    na *= 7;
+    nb *= 7;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-05-12 21:38:09 +0100
diff --git a/src/go.c b/src/go.c
index 7e291965..e86f9358 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,9 +253,9 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 60;
-    na *= 7;
-    nb *= 7;
+    double q = 80;
+    na *= 6;
+    nb *= 6;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-05-12 21:38:14 +0100
diff --git a/src/go.c b/src/go.c
index e86f9358..0637bfa2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,7 +253,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 80;
+    double q = 90;
     na *= 6;
     nb *= 6;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-05-12 21:38:20 +0100
diff --git a/src/go.c b/src/go.c
index 0637bfa2..923a37b9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,9 +253,9 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 90;
-    na *= 6;
-    nb *= 6;
+    double q = 100;
+    na *= 5;
+    nb *= 5;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-05-12 21:38:27 +0100
diff --git a/src/go.c b/src/go.c
index 923a37b9..258cbe76 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.01*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.01*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-05-12 21:38:33 +0100
diff --git a/src/go.c b/src/go.c
index 258cbe76..f3760e69 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,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.01*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.01*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.03*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.03*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-05-12 21:38:40 +0100
diff --git a/src/go.c b/src/go.c
index f3760e69..ab115333 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,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.03*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.03*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.05*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.05*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-05-12 21:38:44 +0100
diff --git a/src/go.c b/src/go.c
index ab115333..5d3b9147 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,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.05*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.05*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.1*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.1*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-05-12 21:38:49 +0100
diff --git a/src/go.c b/src/go.c
index 5d3b9147..1b30a807 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0.1*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.1*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.15*samphold(&s->psh[0], na, wrap(3 * pa[0]));
+    nb += 0.15*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
     pnoise[0] = na;
     pnoise[1] = nb;
     compress(pnoise, &s->pcompress, 5, 10, 25, 48, pnoise);
diff @ 2018-05-12 21:38:55 +0100
diff --git a/src/go.c b/src/go.c
index 1b30a807..b15229d4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,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.15*samphold(&s->psh[0], na, wrap(3 * pa[0]));
-    nb += 0.15*samphold(&s->psh[1], nb, wrap(3 * pb[0]));
+    na += 0.15*samphold(&s->psh[0], na, wrap(5 * pa[0]));
+    nb += 0.15*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 @ 2018-05-12 21:39:00 +0100
diff --git a/src/go.c b/src/go.c
index b15229d4..03c5c109 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,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.15*samphold(&s->psh[0], na, wrap(5 * pa[0]));
-    nb += 0.15*samphold(&s->psh[1], nb, wrap(5 * pb[0]));
+    na += 0.25*samphold(&s->psh[0], na, wrap(5 * pa[0]));
+    nb += 0.25*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 @ 2018-05-12 21:39:09 +0100
diff --git a/src/go.c b/src/go.c
index 03c5c109..8e4d0763 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,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.25*samphold(&s->psh[0], na, wrap(5 * pa[0]));
-    nb += 0.25*samphold(&s->psh[1], nb, wrap(5 * pb[0]));
+    na += 0.34*samphold(&s->psh[0], na, wrap(5 * pa[0]));
+    nb += 0.34*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 @ 2018-05-12 21:39:14 +0100
diff --git a/src/go.c b/src/go.c
index 8e4d0763..ee7463fd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,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.34*samphold(&s->psh[0], na, wrap(5 * pa[0]));
-    nb += 0.34*samphold(&s->psh[1], nb, wrap(5 * pb[0]));
+    na += 0.5*samphold(&s->psh[0], na, wrap(5 * pa[0]));
+    nb += 0.5*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 @ 2018-05-12 21:39:18 +0100
diff --git a/src/go.c b/src/go.c
index ee7463fd..ad276b8f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -254,8 +254,8 @@ go(S *s, int channels, const float *in, float *out)
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
     double q = 100;
-    na *= 5;
-    nb *= 5;
+    na *= 4;
+    nb *= 4;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-05-12 21:39:20 +0100
diff --git a/src/go.c b/src/go.c
index ad276b8f..198d7ee5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,7 +253,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 100;
+    double q = 120;
     na *= 4;
     nb *= 4;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-05-12 21:39:26 +0100
diff --git a/src/go.c b/src/go.c
index 198d7ee5..87d6c3ed 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0.5*samphold(&s->psh[0], na, wrap(5 * pa[0]));
-    nb += 0.5*samphold(&s->psh[1], nb, wrap(5 * pb[0]));
+    na += 0.6*samphold(&s->psh[0], na, wrap(5 * pa[0]));
+    nb += 0.6*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 @ 2018-05-12 21:39:29 +0100
diff --git a/src/go.c b/src/go.c
index 87d6c3ed..a4380ad9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,7 +253,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 120;
+    double q = 160;
     na *= 4;
     nb *= 4;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-05-12 21:39:36 +0100
diff --git a/src/go.c b/src/go.c
index a4380ad9..55a26b91 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,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.6*samphold(&s->psh[0], na, wrap(5 * pa[0]));
-    nb += 0.6*samphold(&s->psh[1], nb, wrap(5 * pb[0]));
+    na += 0.9*samphold(&s->psh[0], na, wrap(5 * pa[0]));
+    nb += 0.9*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 @ 2018-05-12 21:39:45 +0100
diff --git a/src/go.c b/src/go.c
index 55a26b91..aa9c37b4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -266,8 +266,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na += 0.9*samphold(&s->psh[0], na, wrap(5 * pa[0]));
-    nb += 0.9*samphold(&s->psh[1], nb, wrap(5 * pb[0]));
+    na -= 1*samphold(&s->psh[0], na, wrap(5 * pa[0]));
+    nb -= 1*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 @ 2018-05-12 21:39:52 +0100
diff --git a/src/go.c b/src/go.c
index aa9c37b4..72c8ea8e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -254,8 +254,8 @@ go(S *s, int channels, const float *in, float *out)
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
     double q = 160;
-    na *= 4;
-    nb *= 4;
+    na *= 8;
+    nb *= 8;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-05-12 21:39:57 +0100
diff --git a/src/go.c b/src/go.c
index 72c8ea8e..4de315e4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -254,8 +254,8 @@ go(S *s, int channels, const float *in, float *out)
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
     double q = 160;
-    na *= 8;
-    nb *= 8;
+    na *= 10;
+    nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-05-12 21:40:09 +0100
diff --git a/src/go.c b/src/go.c
index 4de315e4..dc05bf52 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,7 +253,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 160;
+    double q = 200;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-05-12 21:40:13 +0100
diff --git a/src/go.c b/src/go.c
index dc05bf52..86982c27 100644
--- a/src/go.c
+++ b/src/go.c
@@ -253,7 +253,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 200;
+    double q = 250;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-05-12 21:40:23 +0100
diff --git a/src/go.c b/src/go.c
index 86982c27..cc028317 100644
--- a/src/go.c
+++ b/src/go.c
@@ -169,7 +169,7 @@ go(S *s, int channels, const float *in, float *out)
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
     double probability = pow(0.5, N - zeroes);
-    probability = (0.5 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (4.5 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
@@ -179,7 +179,6 @@ go(S *s, int channels, const float *in, float *out)
     freq = 10 * samphold(&s->bsh, harmonic, 1 - trigger);
     freq = lop(&s->bfreq, freq, 20);
   }
-  env = 0.5;
   freq = 50;
 
   // ===================================================================
diff @ 2018-05-12 21:40:36 +0100
diff --git a/src/go.c b/src/go.c
index cc028317..790d6502 100644
--- a/src/go.c
+++ b/src/go.c
@@ -175,12 +175,11 @@ go(S *s, int channels, const float *in, float *out)
     double trigger = uniform < probability;
     s->benv.y += trigger;
     env = lop(&s->benv, 0, 5);
-    double harmonic = 5 + clamp(N - zeroes, 0, 20);
+    double harmonic = 5 + clamp(N - zeroes - 4, 0, 20);
     freq = 10 * samphold(&s->bsh, harmonic, 1 - trigger);
     freq = lop(&s->bfreq, freq, 20);
   }
-  freq = 50;
-
+  
   // ===================================================================
   // = 3 = total intraliminal extraction
   double tilex[2] = { 0, 0 };
diff @ 2018-05-12 21:40:41 +0100
diff --git a/src/go.c b/src/go.c
index 790d6502..11031aff 100644
--- a/src/go.c
+++ b/src/go.c
@@ -169,7 +169,7 @@ go(S *s, int channels, const float *in, float *out)
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
     double probability = pow(0.5, N - zeroes);
-    probability = (4.5 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (4.5 + 5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-05-12 21:40:48 +0100
diff --git a/src/go.c b/src/go.c
index 11031aff..7c4c457c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -175,7 +175,7 @@ go(S *s, int channels, const float *in, float *out)
     double trigger = uniform < probability;
     s->benv.y += trigger;
     env = lop(&s->benv, 0, 5);
-    double harmonic = 5 + clamp(N - zeroes - 4, 0, 20);
+    double harmonic = 5 + clamp(N - zeroes - 3, 0, 20);
     freq = 10 * samphold(&s->bsh, harmonic, 1 - trigger);
     freq = lop(&s->bfreq, freq, 20);
   }
diff @ 2018-05-12 21:41:02 +0100
diff --git a/src/go.c b/src/go.c
index 7c4c457c..e4d72952 100644
--- a/src/go.c
+++ b/src/go.c
@@ -264,8 +264,8 @@ go(S *s, int channels, const float *in, float *out)
     hilbert(pb, &s->philbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    na -= 1*samphold(&s->psh[0], na, wrap(5 * pa[0]));
-    nb -= 1*samphold(&s->psh[1], nb, wrap(5 * pb[0]));
+    na = 1*samphold(&s->psh[0], na, wrap(5 * pa[0]));
+    nb = 1*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 @ 2018-05-12 21:41:16 +0100
diff --git a/src/go.c b/src/go.c
index e4d72952..cfc124b7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -251,7 +251,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
-    double q = 250;
+    double q = 1250;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-05-12 21:41:26 +0100
diff --git a/src/go.c b/src/go.c
index cfc124b7..72ff84cb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -174,7 +174,7 @@ go(S *s, int channels, const float *in, float *out)
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
     s->benv.y += trigger;
-    env = lop(&s->benv, 0, 5);
+    env = lop(&s->benv, 0, 15);
     double harmonic = 5 + clamp(N - zeroes - 3, 0, 20);
     freq = 10 * samphold(&s->bsh, harmonic, 1 - trigger);
     freq = lop(&s->bfreq, freq, 20);
diff @ 2018-05-12 21:41:30 +0100
diff --git a/src/go.c b/src/go.c
index 72ff84cb..2ac5a73a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -174,7 +174,7 @@ go(S *s, int channels, const float *in, float *out)
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
     s->benv.y += trigger;
-    env = lop(&s->benv, 0, 15);
+    env = lop(&s->benv, 0, 25);
     double harmonic = 5 + clamp(N - zeroes - 3, 0, 20);
     freq = 10 * samphold(&s->bsh, harmonic, 1 - trigger);
     freq = lop(&s->bfreq, freq, 20);
diff @ 2018-05-12 21:41:39 +0100
diff --git a/src/go.c b/src/go.c
index 2ac5a73a..97f4e2ab 100644
--- a/src/go.c
+++ b/src/go.c
@@ -168,7 +168,7 @@ go(S *s, int channels, const float *in, float *out)
     int N = 16;
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    double probability = pow(0.5, N - zeroes);
+    double probability = pow(0.53, N - zeroes);
     probability = (4.5 + 5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
diff @ 2018-05-12 21:41:43 +0100
diff --git a/src/go.c b/src/go.c
index 97f4e2ab..2e720e44 100644
--- a/src/go.c
+++ b/src/go.c
@@ -168,7 +168,7 @@ go(S *s, int channels, const float *in, float *out)
     int N = 16;
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    double probability = pow(0.53, N - zeroes);
+    double probability = pow(0.55, N - zeroes);
     probability = (4.5 + 5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
diff @ 2018-05-12 21:41:57 +0100
diff --git a/src/go.c b/src/go.c
index 2e720e44..4cf9d8db 100644
--- a/src/go.c
+++ b/src/go.c
@@ -224,7 +224,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);
-    double hgain = 0;
+    double hgain = 1;
     tilex[0] *= hgain;
     tilex[1] *= hgain;
     double kgain = 0;
diff @ 2018-05-12 21:42:10 +0100
diff --git a/src/go.c b/src/go.c
index 4cf9d8db..7d6ea805 100644
--- a/src/go.c
+++ b/src/go.c
@@ -213,7 +213,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.7;
     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 @ 2018-05-12 21:42:17 +0100
diff --git a/src/go.c b/src/go.c
index 7d6ea805..3ec62a3d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -211,8 +211,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.7;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
diff @ 2018-05-12 21:42:20 +0100
diff --git a/src/go.c b/src/go.c
index 3ec62a3d..0cd128be 100644
--- a/src/go.c
+++ b/src/go.c
@@ -212,7 +212,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.01);
-    double fb2 = mix(sfb2, -sfb1, 0.01);
+    double fb2 = mix(sfb2,  sfb1, 0.01);
     double fb = 0.7;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
diff @ 2018-05-12 21:42:24 +0100
diff --git a/src/go.c b/src/go.c
index 0cd128be..06a41125 100644
--- a/src/go.c
+++ b/src/go.c
@@ -209,8 +209,8 @@ go(S *s, int channels, const float *in, float *out)
     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 sfb1 = delread4(&s->tcomb1, 1000 / hz1);
-    double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
+    double sfb1 = delread4(&s->tcomb1, 1000 / hz1 + 1);
+    double sfb2 = delread4(&s->tcomb2, 1000 / hz2 - 1);
     double fb1 = mix(sfb1, -sfb2, 0.01);
     double fb2 = mix(sfb2,  sfb1, 0.01);
     double fb = 0.7;
diff @ 2018-05-12 21:42:32 +0100
diff --git a/src/go.c b/src/go.c
index 06a41125..b34b7b24 100644
--- a/src/go.c
+++ b/src/go.c
@@ -206,7 +206,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 = freq;//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 sfb1 = delread4(&s->tcomb1, 1000 / hz1 + 1);
diff @ 2018-05-12 21:42:38 +0100
diff --git a/src/go.c b/src/go.c
index b34b7b24..f2244d45 100644
--- a/src/go.c
+++ b/src/go.c
@@ -207,13 +207,13 @@ go(S *s, int channels, const float *in, float *out)
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
     double khz = freq;//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 hz1 = 2 * khz * floor(pow(4, wrap(4 * p + 0.0)));
+    double hz2 = 2 * khz * floor(pow(4, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1 + 1);
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2 - 1);
     double fb1 = mix(sfb1, -sfb2, 0.01);
     double fb2 = mix(sfb2,  sfb1, 0.01);
-    double fb = 0.7;
+    double fb = 0.97;
     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 @ 2018-05-12 21:42:50 +0100
diff --git a/src/go.c b/src/go.c
index f2244d45..132b900e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -227,7 +227,7 @@ go(S *s, int channels, const float *in, float *out)
     double hgain = 1;
     tilex[0] *= hgain;
     tilex[1] *= hgain;
-    double kgain = 0;
+    double kgain = 1;
     kgain = samphold(&s->tgate[0], kgain, p);
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
diff @ 2018-05-12 21:43:00 +0100
diff --git a/src/go.c b/src/go.c
index 132b900e..b49cf40c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -218,7 +218,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, 5)*5)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 5)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
     tilex[0] = fb1;
diff @ 2018-05-12 21:43:07 +0100
diff --git a/src/go.c b/src/go.c
index b49cf40c..ac79ef9e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -218,7 +218,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, 5)*5)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 5)*5);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     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 @ 2018-05-12 21:43:13 +0100
diff --git a/src/go.c b/src/go.c
index ac79ef9e..6a940914 100644
--- a/src/go.c
+++ b/src/go.c
@@ -217,7 +217,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, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
diff @ 2018-05-12 21:43:22 +0100
diff --git a/src/go.c b/src/go.c
index 6a940914..2d554dd4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -219,8 +219,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, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
-    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*8-20, 5)*5)
+         *  sin(vcf(&s->tkick[3], kick, khz*8+20, 5)*5);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-05-12 21:43:33 +0100
diff --git a/src/go.c b/src/go.c
index 2d554dd4..54d0c0c4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -206,7 +206,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= hat;
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
-    double khz = freq;//50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
+    double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     double hz1 = 2 * khz * floor(pow(4, wrap(4 * p + 0.0)));
     double hz2 = 2 * khz * floor(pow(4, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1 + 1);
@@ -219,8 +219,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, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
-    kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 5)*5)
-         *  sin(vcf(&s->tkick[3], kick, khz*8+20, 5)*5);
+    kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*50)
+         *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*50);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-05-12 21:43:42 +0100
diff --git a/src/go.c b/src/go.c
index 54d0c0c4..e4cadcfe 100644
--- a/src/go.c
+++ b/src/go.c
@@ -219,8 +219,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, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
-    kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*50)
-         *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*50);
+    kick += sin(sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*50)
+         *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*50));
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-05-12 21:43:47 +0100
diff --git a/src/go.c b/src/go.c
index e4cadcfe..60df6524 100644
--- a/src/go.c
+++ b/src/go.c
@@ -219,7 +219,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, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
-    kick += sin(sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*50)
+    kick += sin(twopi * sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*50));
     tilex[0] = fb1;
     tilex[1] = fb2;
diff @ 2018-05-12 21:43:52 +0100
diff --git a/src/go.c b/src/go.c
index 60df6524..36a19cfd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -219,7 +219,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, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
-    kick += sin(twopi * sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*50)
+    kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*50));
     tilex[0] = fb1;
     tilex[1] = fb2;
diff @ 2018-05-12 21:44:00 +0100
diff --git a/src/go.c b/src/go.c
index 36a19cfd..eb454ceb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -219,8 +219,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, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
-    kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*50)
-         *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*50));
+    kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
+         *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-05-12 21:44:06 +0100
diff --git a/src/go.c b/src/go.c
index eb454ceb..36a921ab 100644
--- a/src/go.c
+++ b/src/go.c
@@ -206,7 +206,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(4, wrap(4 * p + 0.0)));
     double hz2 = 2 * khz * floor(pow(4, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1 + 1);
diff @ 2018-05-12 21:44:19 +0100
diff --git a/src/go.c b/src/go.c
index 36a921ab..a0a8e67d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -206,7 +206,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(8 * p) > 0.5) + 25 * (wrap(2 * p) > 0.75);
     double hz1 = 2 * khz * floor(pow(4, wrap(4 * p + 0.0)));
     double hz2 = 2 * khz * floor(pow(4, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1 + 1);
diff @ 2018-05-12 21:44:26 +0100
diff --git a/src/go.c b/src/go.c
index a0a8e67d..b28f0962 100644
--- a/src/go.c
+++ b/src/go.c
@@ -206,7 +206,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) > 0.75);
+    double khz = 50 + 10 * (wrap(8 * p) > 0.5) + 25 * (wrap(p) > 0.875);
     double hz1 = 2 * khz * floor(pow(4, wrap(4 * p + 0.0)));
     double hz2 = 2 * khz * floor(pow(4, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1 + 1);
diff @ 2018-05-12 21:44:39 +0100
diff --git a/src/go.c b/src/go.c
index b28f0962..ab4a6dff 100644
--- a/src/go.c
+++ b/src/go.c
@@ -213,7 +213,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2 - 1);
     double fb1 = mix(sfb1, -sfb2, 0.01);
     double fb2 = mix(sfb2,  sfb1, 0.01);
-    double fb = 0.97;
+    double fb = 0.997;
     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 @ 2018-05-12 21:44:57 +0100
diff --git a/src/go.c b/src/go.c
index ab4a6dff..0740caca 100644
--- a/src/go.c
+++ b/src/go.c
@@ -146,6 +146,8 @@ typedef struct
   SAMPHOLD msh[4];
   HIP mhip[4];
 
+  BIQUAD khip;
+
 } S;
 
 // =====================================================================
diff @ 2018-05-12 21:45:34 +0100
diff --git a/src/go.c b/src/go.c
index 0740caca..58d77843 100644
--- a/src/go.c
+++ b/src/go.c
@@ -223,6 +223,7 @@ go(S *s, int channels, const float *in, float *out)
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
+    kick = biquad(highpass(&s->khip, 100, flatq, kick));
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-05-12 21:45:41 +0100
diff --git a/src/go.c b/src/go.c
index 58d77843..189077d4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -223,7 +223,7 @@ go(S *s, int channels, const float *in, float *out)
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
-    kick = biquad(highpass(&s->khip, 100, flatq, kick));
+    kick = biquad(highpass(&s->khip, 100, flatq), kick);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-05-12 21:45:48 +0100
diff --git a/src/go.c b/src/go.c
index 189077d4..3715fa76 100644
--- a/src/go.c
+++ b/src/go.c
@@ -223,7 +223,7 @@ go(S *s, int channels, const float *in, float *out)
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
-    kick = biquad(highpass(&s->khip, 100, flatq), kick);
+    kick = biquad(highpass(&s->khip, 200, 10), kick);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-05-12 21:46:32 +0100
diff --git a/src/go.c b/src/go.c
index 3715fa76..0128b87e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -148,6 +148,8 @@ typedef struct
 
   BIQUAD khip;
 
+  LOP1 klop;
+  
 } S;
 
 // =====================================================================
@@ -223,7 +225,7 @@ go(S *s, int channels, const float *in, float *out)
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
-    kick = biquad(highpass(&s->khip, 200, 10), kick);
+    kick = biquad(highpass(&s->khip, 200 - 150 * lop1(&s->klop, 0, 0.01), 10), kick);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-05-12 21:46:37 +0100
diff --git a/src/go.c b/src/go.c
index 0128b87e..3a4e1344 100644
--- a/src/go.c
+++ b/src/go.c
@@ -225,7 +225,7 @@ go(S *s, int channels, const float *in, float *out)
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
-    kick = biquad(highpass(&s->khip, 200 - 150 * lop1(&s->klop, 0, 0.01), 10), kick);
+    kick = biquad(highpass(&s->khip, 200 - 150 * lop1(&s->klop, 1, 0.01), 10), kick);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-05-12 21:46:51 +0100
diff --git a/src/go.c b/src/go.c
index 3a4e1344..ff3a599e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -257,8 +257,8 @@ go(S *s, int channels, const float *in, float *out)
     double na = env * pink(&s->pink[0]);
     double nb = env * pink(&s->pink[1]);
     double q = 1250;
-    na *= 10;
-    nb *= 10;
+    na *= 1;
+    nb *= 1;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-05-12 21:47:06 +0100
diff --git a/src/go.c b/src/go.c
index ff3a599e..f3f35b0b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -172,7 +172,7 @@ go(S *s, int channels, const float *in, float *out)
     int N = 16;
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    double probability = pow(0.55, N - zeroes);
+    double probability = pow(0.3, N - zeroes);
     probability = (4.5 + 5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
diff @ 2018-05-12 21:47:18 +0100
diff --git a/src/go.c b/src/go.c
index f3f35b0b..b67d5134 100644
--- a/src/go.c
+++ b/src/go.c
@@ -223,9 +223,9 @@ 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, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
+    kick = biquad(highpass(&s->khip, 200 - 150 * lop1(&s->klop, 1, 0.01), 10), kick);
     kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
-    kick = biquad(highpass(&s->khip, 200 - 150 * lop1(&s->klop, 1, 0.01), 10), kick);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-05-12 21:47:25 +0100
diff --git a/src/go.c b/src/go.c
index b67d5134..017b3b9b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -222,8 +222,8 @@ 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, 25)*25)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick = biquad(highpass(&s->khip, 200 - 150 * lop1(&s->klop, 1, 0.01), 10), kick);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
     tilex[0] = fb1;
diff @ 2018-05-12 21:47:32 +0100
diff --git a/src/go.c b/src/go.c
index 017b3b9b..8536a6ae 100644
--- a/src/go.c
+++ b/src/go.c
@@ -223,7 +223,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, 25)*25)*2;
     kick = biquad(highpass(&s->khip, 200 - 150 * lop1(&s->klop, 1, 0.01), 10), kick);
-    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
+    kick += tanh(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
     tilex[0] = fb1;
diff @ 2018-05-12 21:47:39 +0100
diff --git a/src/go.c b/src/go.c
index 8536a6ae..b26831be 100644
--- a/src/go.c
+++ b/src/go.c
@@ -222,7 +222,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, 25)*25)*2;
-    kick = biquad(highpass(&s->khip, 200 - 150 * lop1(&s->klop, 1, 0.01), 10), kick);
+    kick = biquad(highpass(&s->khip, 200 - 100 * lop1(&s->klop, 1, 0.01), 10), kick);
     kick += tanh(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
diff @ 2018-05-12 21:47:44 +0100
diff --git a/src/go.c b/src/go.c
index b26831be..8536a6ae 100644
--- a/src/go.c
+++ b/src/go.c
@@ -222,7 +222,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, 25)*25)*2;
-    kick = biquad(highpass(&s->khip, 200 - 100 * lop1(&s->klop, 1, 0.01), 10), kick);
+    kick = biquad(highpass(&s->khip, 200 - 150 * lop1(&s->klop, 1, 0.01), 10), kick);
     kick += tanh(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
diff @ 2018-05-12 21:47:47 +0100
diff --git a/src/go.c b/src/go.c
index 8536a6ae..32422fc0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -222,7 +222,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, 25)*25)*2;
-    kick = biquad(highpass(&s->khip, 200 - 150 * lop1(&s->klop, 1, 0.01), 10), kick);
+    kick = biquad(highpass(&s->khip, 200 - 150 * lop1(&s->klop, 0.9, 0.01), 10), kick);
     kick += tanh(vcf(&s->tkick[1], kick, khz * 3, 50)*45);
     kick += sin(4 * sin(vcf(&s->tkick[2], kick, khz*8-2, 150)*50)
          *  sin(vcf(&s->tkick[3], kick, khz*8+2, 150)*50));
diff @ 2018-05-12 21:48:03 +0100
diff --git a/src/go.c b/src/go.c
index 32422fc0..074dc741 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
     double hgain = 1;
     tilex[0] *= hgain;
     tilex[1] *= hgain;
-    double kgain = 1;
+    double kgain = 0;
     kgain = samphold(&s->tgate[0], kgain, p);
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
diff @ 2018-05-12 21:48:17 +0100
diff --git a/src/go.c b/src/go.c
index 074dc741..83ff86cb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -290,7 +290,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
-    double hz = 0 * bpm / 60;
+    double hz = 0.125 * bpm / 60;
     double p = phasor(&s->ephase, hz);
     double t = twopi * p;
     double co = cos(t);
diff @ 2018-05-12 21:48:25 +0100
diff --git a/src/go.c b/src/go.c
index 83ff86cb..2b4738d1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -286,7 +286,7 @@ go(S *s, int channels, const float *in, float *out)
   {
     if (phase_reset)
     {
-      s->ephase.phase = 0;
+      //s->ephase.phase = 0;
     }
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
diff @ 2018-05-12 21:48:40 +0100
diff --git a/src/go.c b/src/go.c
index 2b4738d1..b04d705c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -303,8 +303,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.1, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.1, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-05-12 21:48:45 +0100
diff --git a/src/go.c b/src/go.c
index b04d705c..a5eafae5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -303,8 +303,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.1, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.1, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.25, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.25, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-05-12 21:49:12 +0100
diff --git a/src/go.c b/src/go.c
index a5eafae5..099fdebf 100644
--- a/src/go.c
+++ b/src/go.c
@@ -172,7 +172,7 @@ go(S *s, int channels, const float *in, float *out)
     int N = 16;
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    double probability = pow(0.3, N - zeroes);
+    double probability = pow(0.6, N - zeroes);
     probability = (4.5 + 5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
diff @ 2018-05-12 21:49:27 +0100
diff --git a/src/go.c b/src/go.c
index 099fdebf..a58d03df 100644
--- a/src/go.c
+++ b/src/go.c
@@ -303,8 +303,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.25, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.25, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-05-12 21:49:35 +0100
diff --git a/src/go.c b/src/go.c
index a58d03df..e2ce1e43 100644
--- a/src/go.c
+++ b/src/go.c
@@ -295,7 +295,7 @@ go(S *s, int channels, const float *in, float *out)
     double t = twopi * p;
     double co = cos(t);
     double si = sin(t);
-    double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 2);
+    double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./16);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2018-05-12 21:49:45 +0100
diff --git a/src/go.c b/src/go.c
index e2ce1e43..4eee1d96 100644
--- a/src/go.c
+++ b/src/go.c
@@ -303,8 +303,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.75, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.75, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-05-12 21:50:02 +0100
diff --git a/src/go.c b/src/go.c
index 4eee1d96..ad8f1e48 100644
--- a/src/go.c
+++ b/src/go.c
@@ -303,8 +303,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.75, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.75, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-05-12 21:50:53 +0100
diff --git a/src/go.c b/src/go.c
index ad8f1e48..464790ae 100644
--- a/src/go.c
+++ b/src/go.c
@@ -150,6 +150,9 @@ typedef struct
 
   LOP1 klop;
   
+  HIP1 dhip[2][2];
+  LOP1 dlop[2][2];
+  
 } S;
 
 // =====================================================================
@@ -301,6 +304,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 5);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
+    el = hip1(&s->dhip1[0][0], el, 10);
+    er = hip1(&s->dhip1[0][1], er, 10);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.25), 0));
diff @ 2018-05-12 21:50:56 +0100
diff --git a/src/go.c b/src/go.c
index 464790ae..884e8966 100644
--- a/src/go.c
+++ b/src/go.c
@@ -304,8 +304,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 5);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
-    el = hip1(&s->dhip1[0][0], el, 10);
-    er = hip1(&s->dhip1[0][1], er, 10);
+    el = hip1(&s->dhip[0][0], el, 10);
+    er = hip1(&s->dhip[0][1], er, 10);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.25), 0));
diff @ 2018-05-12 21:51:16 +0100
diff --git a/src/go.c b/src/go.c
index 884e8966..6cb37d93 100644
--- a/src/go.c
+++ b/src/go.c
@@ -306,6 +306,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     el = hip1(&s->dhip[0][0], el, 10);
     er = hip1(&s->dhip[0][1], er, 10);
+    el = lop1(&s->dlop[0][0], el, 1000);
+    er = lop1(&s->dlop[0][1], er, 1000);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.25), 0));
diff @ 2018-05-12 21:51:29 +0100
diff --git a/src/go.c b/src/go.c
index 6cb37d93..40f96819 100644
--- a/src/go.c
+++ b/src/go.c
@@ -299,7 +299,7 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./16);
-    double rdelms = ldelms;
+    double rdelms = 60000 / bpm * (p < 0.75 ? 1 : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-05-12 21:51:34 +0100
diff --git a/src/go.c b/src/go.c
index 40f96819..912fb518 100644
--- a/src/go.c
+++ b/src/go.c
@@ -299,7 +299,7 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./16);
-    double rdelms = 60000 / bpm * (p < 0.75 ? 1 : 1./16);
+    double rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-05-12 21:51:41 +0100
diff --git a/src/go.c b/src/go.c
index 912fb518..e8289358 100644
--- a/src/go.c
+++ b/src/go.c
@@ -300,8 +300,8 @@ go(S *s, int channels, const float *in, float *out)
     double si = sin(t);
     double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./16);
     double rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./32);
-    ldelms = lop(&s->elop[0], ldelms, 5);
-    rdelms = lop(&s->elop[1], rdelms, 5);
+    ldelms = lop(&s->elop[0], ldelms, 15);
+    rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
     el = hip1(&s->dhip[0][0], el, 10);
diff @ 2018-05-12 21:51:57 +0100
diff --git a/src/go.c b/src/go.c
index e8289358..6f46dd54 100644
--- a/src/go.c
+++ b/src/go.c
@@ -304,6 +304,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
+    el = sin(el);
+    er = sin(er);
     el = hip1(&s->dhip[0][0], el, 10);
     er = hip1(&s->dhip[0][1], er, 10);
     el = lop1(&s->dlop[0][0], el, 1000);
diff @ 2018-05-12 21:52:04 +0100
diff --git a/src/go.c b/src/go.c
index 6f46dd54..2e5672cd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -304,8 +304,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
-    el = sin(el);
-    er = sin(er);
+    el = sin(2 * el);
+    er = sin(2 * er);
     el = hip1(&s->dhip[0][0], el, 10);
     er = hip1(&s->dhip[0][1], er, 10);
     el = lop1(&s->dlop[0][0], el, 1000);
diff @ 2018-05-12 21:52:11 +0100
diff --git a/src/go.c b/src/go.c
index 2e5672cd..589cd339 100644
--- a/src/go.c
+++ b/src/go.c
@@ -304,8 +304,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
-    el = sin(2 * el);
-    er = sin(2 * er);
+    el = sin(4 * el);
+    er = sin(4 * er);
     el = hip1(&s->dhip[0][0], el, 10);
     er = hip1(&s->dhip[0][1], er, 10);
     el = lop1(&s->dlop[0][0], el, 1000);
diff @ 2018-05-12 21:52:28 +0100
diff --git a/src/go.c b/src/go.c
index 589cd339..b93fbcfa 100644
--- a/src/go.c
+++ b/src/go.c
@@ -299,7 +299,7 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./16);
-    double rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./32);
+    double rdelms = 60000 / bpm * (p < 0.5 ? 1./(1 << 2) : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-05-12 21:53:14 +0100
diff --git a/src/go.c b/src/go.c
index b93fbcfa..25434c6e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -152,6 +152,7 @@ typedef struct
   
   HIP1 dhip[2][2];
   LOP1 dlop[2][2];
+  SAMPHOLD dish[2][2];
   
 } S;
 
@@ -299,7 +300,7 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./16);
-    double rdelms = 60000 / bpm * (p < 0.5 ? 1./(1 << 2) : 1./32);
+    double rdelms = 60000 / bpm * (p < 0.5 ? 1./(1 << samphold(&s->dish[1][0], rand() & 7, p)) : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-05-12 21:53:18 +0100
diff --git a/src/go.c b/src/go.c
index 25434c6e..446b37a5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -300,7 +300,7 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./16);
-    double rdelms = 60000 / bpm * (p < 0.5 ? 1./(1 << samphold(&s->dish[1][0], rand() & 7, p)) : 1./32);
+    double rdelms = 60000 / bpm * (p < 0.5 ? 1./(1 << (int)samphold(&s->dish[1][0], rand() & 7, p)) : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-05-12 21:53:40 +0100
diff --git a/src/go.c b/src/go.c
index 446b37a5..0f78ff9e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -299,8 +299,10 @@ go(S *s, int channels, const float *in, float *out)
     double t = twopi * p;
     double co = cos(t);
     double si = sin(t);
-    double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./16);
-    double rdelms = 60000 / bpm * (p < 0.5 ? 1./(1 << (int)samphold(&s->dish[1][0], rand() & 7, p)) : 1./32);
+    double ldelms = 60000 / bpm *
+      (p < 0.75 ? 1./(1 << (int)samphold(&s->dish[0][0], rand() & 7, p)) : 1./32);
+    double rdelms = 60000 / bpm *
+      (p < 0.5 ? 1./(1 << (int)samphold(&s->dish[1][0], rand() & 7, p)) : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-05-12 21:54:13 +0100
diff --git a/src/go.c b/src/go.c
index 0f78ff9e..00edacc0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -300,7 +300,8 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm *
-      (p < 0.75 ? 1./(1 << (int)samphold(&s->dish[0][0], rand() & 7, p)) : 1./32);
+      (p < 0.75 ? 1./(1 << (int)samphold(&s->dish[0][0], rand() & 7, p))
+                :  1./(8 << (int)samphold(&s->dish[0][1], rand() & 7, p)));
     double rdelms = 60000 / bpm *
       (p < 0.5 ? 1./(1 << (int)samphold(&s->dish[1][0], rand() & 7, p)) : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 15);
diff @ 2018-05-12 21:54:29 +0100
diff --git a/src/go.c b/src/go.c
index 00edacc0..d4bf4ac7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -303,7 +303,8 @@ go(S *s, int channels, const float *in, float *out)
       (p < 0.75 ? 1./(1 << (int)samphold(&s->dish[0][0], rand() & 7, p))
                 :  1./(8 << (int)samphold(&s->dish[0][1], rand() & 7, p)));
     double rdelms = 60000 / bpm *
-      (p < 0.5 ? 1./(1 << (int)samphold(&s->dish[1][0], rand() & 7, p)) : 1./32);
+      (p < 0.5 ? 1./(1 << (int)samphold(&s->dish[1][0], rand() & 7, p))
+                      :  1./(8 << (int)samphold(&s->dish[1][1], rand() & 7, p)));
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-05-12 21:54:36 +0100
diff --git a/src/go.c b/src/go.c
index d4bf4ac7..3e321f6c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -313,8 +313,8 @@ go(S *s, int channels, const float *in, float *out)
     er = sin(4 * er);
     el = hip1(&s->dhip[0][0], el, 10);
     er = hip1(&s->dhip[0][1], er, 10);
-    el = lop1(&s->dlop[0][0], el, 1000);
-    er = lop1(&s->dlop[0][1], er, 1000);
+    el = lop1(&s->dlop[0][0], el, 10000);
+    er = lop1(&s->dlop[0][1], er, 10000);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.25), 0));
diff @ 2018-05-12 21:54:47 +0100
diff --git a/src/go.c b/src/go.c
index 3e321f6c..3ca79c3f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -309,8 +309,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
-    el = sin(4 * el);
-    er = sin(4 * er);
+    el = sin(6 * el);
+    er = sin(6 * er);
     el = hip1(&s->dhip[0][0], el, 10);
     er = hip1(&s->dhip[0][1], er, 10);
     el = lop1(&s->dlop[0][0], el, 10000);
diff @ 2018-05-12 21:54:59 +0100
diff --git a/src/go.c b/src/go.c
index 3ca79c3f..39e5f1fd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -309,8 +309,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
-    el = sin(6 * el);
-    er = sin(6 * er);
+    el = sin(3 * tanh(6 * el));
+    er = sin(3 * tanh(6 * er)P);
     el = hip1(&s->dhip[0][0], el, 10);
     er = hip1(&s->dhip[0][1], er, 10);
     el = lop1(&s->dlop[0][0], el, 10000);
diff @ 2018-05-12 21:55:03 +0100
diff --git a/src/go.c b/src/go.c
index 39e5f1fd..0be462e3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -310,7 +310,7 @@ go(S *s, int channels, const float *in, float *out)
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
     el = sin(3 * tanh(6 * el));
-    er = sin(3 * tanh(6 * er)P);
+    er = sin(3 * tanh(6 * er));
     el = hip1(&s->dhip[0][0], el, 10);
     er = hip1(&s->dhip[0][1], er, 10);
     el = lop1(&s->dlop[0][0], el, 10000);
diff @ 2018-05-12 21:55:13 +0100
diff --git a/src/go.c b/src/go.c
index 0be462e3..7897d044 100644
--- a/src/go.c
+++ b/src/go.c
@@ -278,7 +278,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 @ 2018-05-12 21:55:17 +0100
diff --git a/src/go.c b/src/go.c
index 7897d044..dc09ff06 100644
--- a/src/go.c
+++ b/src/go.c
@@ -233,7 +233,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);
-    double hgain = 1;
+    double hgain = 0;
     tilex[0] *= hgain;
     tilex[1] *= hgain;
     double kgain = 0;
diff @ 2018-05-12 21:55:21 +0100
diff --git a/src/go.c b/src/go.c
index dc09ff06..0ed6e79a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -241,7 +241,8 @@ go(S *s, int channels, const float *in, float *out)
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
     compress(tilex, &s->tcompress2, 5, 10, 25, 48, tilex);
-    double gain = 1;
+    double gain = 
+    0;
     gain = samphold(&s->tgate[1], gain, p);
     tilex[0] *= gain;
     tilex[1] *= gain;
diff @ 2018-05-12 21:55:22 +0100
diff --git a/src/go.c b/src/go.c
index 0ed6e79a..14e02eec 100644
--- a/src/go.c
+++ b/src/go.c
@@ -241,8 +241,7 @@ go(S *s, int channels, const float *in, float *out)
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
     compress(tilex, &s->tcompress2, 5, 10, 25, 48, tilex);
-    double gain = 
-    0;
+    double gain = 0;
     gain = samphold(&s->tgate[1], gain, p);
     tilex[0] *= gain;
     tilex[1] *= gain;
diff @ 2018-05-12 21:56:07 +0100
diff --git a/src/go.c b/src/go.c
index 14e02eec..c76c3801 100644
--- a/src/go.c
+++ b/src/go.c
@@ -322,8 +322,10 @@ go(S *s, int channels, const float *in, float *out)
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
-    mixdown[0] = es[0];
-    mixdown[1] = es[1];
+    double q = wrap(30 * 8 * p);
+    double w = sin(twopi * q);
+    mixdown[0] = es[0] + w;
+    mixdown[1] = es[1] + w;
   }
 
   // ===================================================================
diff @ 2018-05-12 21:56:13 +0100
diff --git a/src/go.c b/src/go.c
index c76c3801..97ba693c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -324,8 +324,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->edelay2, es[1]);
     double q = wrap(30 * 8 * p);
     double w = sin(twopi * q);
-    mixdown[0] = es[0] + w;
-    mixdown[1] = es[1] + w;
+    mixdown[0] = es[0] + 0.5 * w;
+    mixdown[1] = es[1] + 0.5 8 w;
   }
 
   // ===================================================================
diff @ 2018-05-12 21:56:16 +0100
diff --git a/src/go.c b/src/go.c
index 97ba693c..4247af1f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -325,7 +325,8 @@ go(S *s, int channels, const float *in, float *out)
     double q = wrap(30 * 8 * p);
     double w = sin(twopi * q);
     mixdown[0] = es[0] + 0.5 * w;
-    mixdown[1] = es[1] + 0.5 8 w;
+    mixdown[1] = es[1] + 0.5 * w;
+    mixdown[1] = es[1] + 0.5 * w;
   }
 
   // ===================================================================
diff @ 2018-05-12 21:56:18 +0100
diff --git a/src/go.c b/src/go.c
index 4247af1f..011a37f8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -326,7 +326,6 @@ go(S *s, int channels, const float *in, float *out)
     double w = sin(twopi * q);
     mixdown[0] = es[0] + 0.5 * w;
     mixdown[1] = es[1] + 0.5 * w;
-    mixdown[1] = es[1] + 0.5 * w;
   }
 
   // ===================================================================
diff @ 2018-05-12 21:57:09 +0100
diff --git a/src/go.c b/src/go.c
index 011a37f8..8d789b84 100644
--- a/src/go.c
+++ b/src/go.c
@@ -153,6 +153,7 @@ typedef struct
   HIP1 dhip[2][2];
   LOP1 dlop[2][2];
   SAMPHOLD dish[2][2];
+  SAMPHOLD wish[2];
   
 } S;
 
@@ -324,8 +325,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->edelay2, es[1]);
     double q = wrap(30 * 8 * p);
     double w = sin(twopi * q);
-    mixdown[0] = es[0] + 0.5 * w;
-    mixdown[1] = es[1] + 0.5 * w;
+    mixdown[0] = es[0] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.25);
+    mixdown[1] = es[1] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.75);
   }
 
   // ===================================================================
diff @ 2018-05-12 21:57:13 +0100
diff --git a/src/go.c b/src/go.c
index 8d789b84..14324e8f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -325,8 +325,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->edelay2, es[1]);
     double q = wrap(30 * 8 * p);
     double w = sin(twopi * q);
-    mixdown[0] = es[0] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.25);
-    mixdown[1] = es[1] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.75);
+    mixdown[0] = es[0] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.25));
+    mixdown[1] = es[1] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.75));
   }
 
   // ===================================================================
diff @ 2018-05-12 21:57:34 +0100
diff --git a/src/go.c b/src/go.c
index 14324e8f..758a7fcd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -324,7 +324,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
     double q = wrap(30 * 8 * p);
-    double w = sin(twopi * q);
+    double w = sin(twopi * q + sin(twopi * q) *  cos(16 * twopi * p));
     mixdown[0] = es[0] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.25));
     mixdown[1] = es[1] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.75));
   }
diff @ 2018-05-12 21:57:48 +0100
diff --git a/src/go.c b/src/go.c
index 758a7fcd..de50569a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -324,7 +324,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
     double q = wrap(30 * 8 * p);
-    double w = sin(twopi * q + sin(twopi * q) *  cos(16 * twopi * p));
+    double w = sin(twopi * q + sin(twopi * p) * sin(twopi * q) *  cos(16 * twopi * p));
     mixdown[0] = es[0] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.25));
     mixdown[1] = es[1] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.75));
   }
diff @ 2018-05-12 21:57:55 +0100
diff --git a/src/go.c b/src/go.c
index de50569a..2261a1be 100644
--- a/src/go.c
+++ b/src/go.c
@@ -325,8 +325,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->edelay2, es[1]);
     double q = wrap(30 * 8 * p);
     double w = sin(twopi * q + sin(twopi * p) * sin(twopi * q) *  cos(16 * twopi * p));
-    mixdown[0] = es[0] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.25));
-    mixdown[1] = es[1] + 0.5 * samphold(&s->wish, w, wrap(40 * q +  0.75));
+    mixdown[0] = es[0] + 0.5 * samphold(&s->wish[0], w, wrap(40 * q +  0.25));
+    mixdown[1] = es[1] + 0.5 * samphold(&s->wish[1], w, wrap(40 * q +  0.75));
   }
 
   // ===================================================================
diff @ 2018-05-12 21:58:08 +0100
diff --git a/src/go.c b/src/go.c
index 2261a1be..c81c8466 100644
--- a/src/go.c
+++ b/src/go.c
@@ -324,7 +324,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
     double q = wrap(30 * 8 * p);
-    double w = sin(twopi * q + sin(twopi * p) * sin(twopi * q) *  cos(16 * twopi * p));
+    double w = sin(twopi * q + sin(twopi * p) * sin(twopi * q) *  cos(16 * twopi * p)) * cos(2 * twopi * p);
     mixdown[0] = es[0] + 0.5 * samphold(&s->wish[0], w, wrap(40 * q +  0.25));
     mixdown[1] = es[1] + 0.5 * samphold(&s->wish[1], w, wrap(40 * q +  0.75));
   }
diff @ 2018-05-12 21:58:19 +0100
diff --git a/src/go.c b/src/go.c
index c81c8466..d6b32ef8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -324,7 +324,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
     double q = wrap(30 * 8 * p);
-    double w = sin(twopi * q + sin(twopi * p) * sin(twopi * q) *  cos(16 * twopi * p)) * cos(2 * twopi * p);
+    double w = sin(twopi * q + sin(twopi * p) * sin(3 * twopi * q) * 
+              cos(16 * twopi * p)) * cos(2 * twopi * p);
     mixdown[0] = es[0] + 0.5 * samphold(&s->wish[0], w, wrap(40 * q +  0.25));
     mixdown[1] = es[1] + 0.5 * samphold(&s->wish[1], w, wrap(40 * q +  0.75));
   }
diff @ 2018-05-12 21:58:48 +0100
diff --git a/src/go.c b/src/go.c
index d6b32ef8..1591f8b3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -324,7 +324,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
     double q = wrap(30 * 8 * p);
-    double w = sin(twopi * q + sin(twopi * p) * sin(3 * twopi * q) * 
+    double w = sin(twopi * q + + sin(twopi  * 3 * p) * sin(5 * twopi * q) + sin(twopi * p) * sin(3 * twopi * q) * 
               cos(16 * twopi * p)) * cos(2 * twopi * p);
     mixdown[0] = es[0] + 0.5 * samphold(&s->wish[0], w, wrap(40 * q +  0.25));
     mixdown[1] = es[1] + 0.5 * samphold(&s->wish[1], w, wrap(40 * q +  0.75));
diff @ 2018-05-12 21:58:53 +0100
diff --git a/src/go.c b/src/go.c
index 1591f8b3..e18ff821 100644
--- a/src/go.c
+++ b/src/go.c
@@ -324,7 +324,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
     double q = wrap(30 * 8 * p);
-    double w = sin(twopi * q + + sin(twopi  * 3 * p) * sin(5 * twopi * q) + sin(twopi * p) * sin(3 * twopi * q) * 
+    double w = sin(twopi * q + + sin(twopi  * 3 * p) * sin(5 * twopi * q)
+         + sin(twopi * p) * sin(3 * twopi * q) * 
               cos(16 * twopi * p)) * cos(2 * twopi * p);
     mixdown[0] = es[0] + 0.5 * samphold(&s->wish[0], w, wrap(40 * q +  0.25));
     mixdown[1] = es[1] + 0.5 * samphold(&s->wish[1], w, wrap(40 * q +  0.75));
diff @ 2018-05-12 21:58:58 +0100
diff --git a/src/go.c b/src/go.c
index e18ff821..7f0668aa 100644
--- a/src/go.c
+++ b/src/go.c
@@ -324,7 +324,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
     double q = wrap(30 * 8 * p);
-    double w = sin(twopi * q + + sin(twopi  * 3 * p) * sin(5 * twopi * q)
+    double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
               cos(16 * twopi * p)) * cos(2 * twopi * p);
     mixdown[0] = es[0] + 0.5 * samphold(&s->wish[0], w, wrap(40 * q +  0.25));
diff @ 2018-05-12 21:59:09 +0100
diff --git a/src/go.c b/src/go.c
index 7f0668aa..d8673633 100644
--- a/src/go.c
+++ b/src/go.c
@@ -323,7 +323,7 @@ go(S *s, int channels, const float *in, float *out)
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
-    double q = wrap(30 * 8 * p);
+    double q = wrap(20 * 8 * p);
     double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
               cos(16 * twopi * p)) * cos(2 * twopi * p);
diff @ 2018-05-12 21:59:12 +0100
diff --git a/src/go.c b/src/go.c
index d8673633..7f0668aa 100644
--- a/src/go.c
+++ b/src/go.c
@@ -323,7 +323,7 @@ go(S *s, int channels, const float *in, float *out)
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
-    double q = wrap(20 * 8 * p);
+    double q = wrap(30 * 8 * p);
     double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
               cos(16 * twopi * p)) * cos(2 * twopi * p);
diff @ 2018-05-12 21:59:26 +0100
diff --git a/src/go.c b/src/go.c
index 7f0668aa..56b2daca 100644
--- a/src/go.c
+++ b/src/go.c
@@ -323,7 +323,7 @@ go(S *s, int channels, const float *in, float *out)
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
-    double q = wrap(30 * 8 * p);
+    double q = wrap((p < 0.5 ? 30 : 25) * 8 * p);
     double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
               cos(16 * twopi * p)) * cos(2 * twopi * p);
diff @ 2018-05-12 21:59:49 +0100
diff --git a/src/go.c b/src/go.c
index 56b2daca..03efe40f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -323,7 +323,7 @@ go(S *s, int channels, const float *in, float *out)
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
-    double q = wrap((p < 0.5 ? 30 : 25) * 8 * p);
+    double q = wrap((p < 0.5 ? 30 : p < 0.75 ? 25 : 50) * 8 * p);
     double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
               cos(16 * twopi * p)) * cos(2 * twopi * p);
diff @ 2018-05-12 22:00:09 +0100
diff --git a/src/go.c b/src/go.c
index 03efe40f..90e878d9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -326,7 +326,7 @@ go(S *s, int channels, const float *in, float *out)
     double q = wrap((p < 0.5 ? 30 : p < 0.75 ? 25 : 50) * 8 * p);
     double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
-              cos(16 * twopi * p)) * cos(2 * twopi * p);
+              fmax(0, cos(16 * twopi * p))) * cos(2 * twopi * p);
     mixdown[0] = es[0] + 0.5 * samphold(&s->wish[0], w, wrap(40 * q +  0.25));
     mixdown[1] = es[1] + 0.5 * samphold(&s->wish[1], w, wrap(40 * q +  0.75));
   }
diff @ 2018-05-12 22:00:23 +0100
diff --git a/src/go.c b/src/go.c
index 90e878d9..28f7f649 100644
--- a/src/go.c
+++ b/src/go.c
@@ -326,7 +326,7 @@ go(S *s, int channels, const float *in, float *out)
     double q = wrap((p < 0.5 ? 30 : p < 0.75 ? 25 : 50) * 8 * p);
     double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
-              fmax(0, cos(16 * twopi * p))) * cos(2 * twopi * p);
+              fmax(0, cos(16 * twopi * p))) * fmax(0, cos(2 * twopi * p));
     mixdown[0] = es[0] + 0.5 * samphold(&s->wish[0], w, wrap(40 * q +  0.25));
     mixdown[1] = es[1] + 0.5 * samphold(&s->wish[1], w, wrap(40 * q +  0.75));
   }
diff @ 2018-05-12 22:00:42 +0100
diff --git a/src/go.c b/src/go.c
index 28f7f649..1e25947c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -301,11 +301,11 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm *
-      (p < 0.75 ? 1./(1 << (int)samphold(&s->dish[0][0], rand() & 7, p))
-                :  1./(8 << (int)samphold(&s->dish[0][1], rand() & 7, p)));
+      (p < 0.75 ? 1./(1 << (int)samphold(&s->dish[0][0], rand() & 3, p))
+                :  1./(8 << (int)samphold(&s->dish[0][1], rand() & 3, p)));
     double rdelms = 60000 / bpm *
-      (p < 0.5 ? 1./(1 << (int)samphold(&s->dish[1][0], rand() & 7, p))
-                      :  1./(8 << (int)samphold(&s->dish[1][1], rand() & 7, p)));
+      (p < 0.5 ? 1./(1 << (int)samphold(&s->dish[1][0], rand() & 3, p))
+                      :  1./(8 << (int)samphold(&s->dish[1][1], rand() & 3, p)));
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-05-12 22:00:52 +0100
diff --git a/src/go.c b/src/go.c
index 1e25947c..b6e1941f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -301,10 +301,10 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm *
-      (p < 0.75 ? 1./(1 << (int)samphold(&s->dish[0][0], rand() & 3, p))
+      (p < 0.75 ? 1./(8 << (int)samphold(&s->dish[0][0], rand() & 3, p))
                 :  1./(8 << (int)samphold(&s->dish[0][1], rand() & 3, p)));
     double rdelms = 60000 / bpm *
-      (p < 0.5 ? 1./(1 << (int)samphold(&s->dish[1][0], rand() & 3, p))
+      (p < 0.5 ? 1./(8 << (int)samphold(&s->dish[1][0], rand() & 3, p))
                       :  1./(8 << (int)samphold(&s->dish[1][1], rand() & 3, p)));
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
diff @ 2018-05-12 22:00:57 +0100
diff --git a/src/go.c b/src/go.c
index b6e1941f..0b6cde97 100644
--- a/src/go.c
+++ b/src/go.c
@@ -310,8 +310,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
     double er = delread4(&s->edelay2, rdelms + si);
-    el = sin(3 * tanh(6 * el));
-    er = sin(3 * tanh(6 * er));
+    el = sin(3 * tanh(2 * el));
+    er = sin(3 * tanh(2 * er));
     el = hip1(&s->dhip[0][0], el, 10);
     er = hip1(&s->dhip[0][1], er, 10);
     el = lop1(&s->dlop[0][0], el, 10000);
diff @ 2018-05-12 22:01:15 +0100
diff --git a/src/go.c b/src/go.c
index 0b6cde97..f9f17053 100644
--- a/src/go.c
+++ b/src/go.c
@@ -327,8 +327,8 @@ go(S *s, int channels, const float *in, float *out)
     double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
               fmax(0, cos(16 * twopi * p))) * fmax(0, cos(2 * twopi * p));
-    mixdown[0] = es[0] + 0.5 * samphold(&s->wish[0], w, wrap(40 * q +  0.25));
-    mixdown[1] = es[1] + 0.5 * samphold(&s->wish[1], w, wrap(40 * q +  0.75));
+    mixdown[0] = es[0] + samphold(&s->wish[0], w, wrap(40 * q +  0.25));
+    mixdown[1] = es[1] + samphold(&s->wish[1], w, wrap(40 * q +  0.75));
   }
 
   // ===================================================================
diff @ 2018-05-12 22:01:37 +0100
diff --git a/src/go.c b/src/go.c
index f9f17053..a6ec6120 100644
--- a/src/go.c
+++ b/src/go.c
@@ -300,12 +300,8 @@ go(S *s, int channels, const float *in, float *out)
     double t = twopi * p;
     double co = cos(t);
     double si = sin(t);
-    double ldelms = 60000 / bpm *
-      (p < 0.75 ? 1./(8 << (int)samphold(&s->dish[0][0], rand() & 3, p))
-                :  1./(8 << (int)samphold(&s->dish[0][1], rand() & 3, p)));
-    double rdelms = 60000 / bpm *
-      (p < 0.5 ? 1./(8 << (int)samphold(&s->dish[1][0], rand() & 3, p))
-                      :  1./(8 << (int)samphold(&s->dish[1][1], rand() & 3, p)));
+    double ldelms = 60000 / bpm * 1;
+    double rdelms = 60000 / bpm * 1;
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     double el = delread4(&s->edelay1, ldelms + co);
diff @ 2018-05-12 22:01:52 +0100
diff --git a/src/go.c b/src/go.c
index a6ec6120..14bd1ef7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -323,8 +323,8 @@ go(S *s, int channels, const float *in, float *out)
     double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
               fmax(0, cos(16 * twopi * p))) * fmax(0, cos(2 * twopi * p));
-    mixdown[0] = es[0] + samphold(&s->wish[0], w, wrap(40 * q +  0.25));
-    mixdown[1] = es[1] + samphold(&s->wish[1], w, wrap(40 * q +  0.75));
+    mixdown[0] = es[0] + samphold(&s->wish[0], w, wrap(20 * q +  0.25));
+    mixdown[1] = es[1] + samphold(&s->wish[1], w, wrap(20 * q +  0.75));
   }
 
   // ===================================================================
diff @ 2018-05-12 22:02:22 +0100
diff --git a/src/go.c b/src/go.c
index 14bd1ef7..8e5b7b55 100644
--- a/src/go.c
+++ b/src/go.c
@@ -317,14 +317,14 @@ go(S *s, int channels, const float *in, float *out)
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.25), 0));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
+    mixdown[0] += es[0] + samphold(&s->wish[0], w, wrap(20 * q +  0.25));
+    mixdown[1] += es[1] + samphold(&s->wish[1], w, wrap(20 * q +  0.75));
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
     double q = wrap((p < 0.5 ? 30 : p < 0.75 ? 25 : 50) * 8 * p);
     double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
               fmax(0, cos(16 * twopi * p))) * fmax(0, cos(2 * twopi * p));
-    mixdown[0] = es[0] + samphold(&s->wish[0], w, wrap(20 * q +  0.25));
-    mixdown[1] = es[1] + samphold(&s->wish[1], w, wrap(20 * q +  0.75));
   }
 
   // ===================================================================
diff @ 2018-05-12 22:02:28 +0100
diff --git a/src/go.c b/src/go.c
index 8e5b7b55..fc38697b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -317,8 +317,8 @@ go(S *s, int channels, const float *in, float *out)
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.25), 0));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
-    mixdown[0] += es[0] + samphold(&s->wish[0], w, wrap(20 * q +  0.25));
-    mixdown[1] += es[1] + samphold(&s->wish[1], w, wrap(20 * q +  0.75));
+    mixdown[0] = es[0] += samphold(&s->wish[0], w, wrap(20 * q +  0.25));
+    mixdown[1] = es[1] += samphold(&s->wish[1], w, wrap(20 * q +  0.75));
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
     double q = wrap((p < 0.5 ? 30 : p < 0.75 ? 25 : 50) * 8 * p);
diff @ 2018-05-12 22:02:33 +0100
diff --git a/src/go.c b/src/go.c
index fc38697b..44dd7c80 100644
--- a/src/go.c
+++ b/src/go.c
@@ -317,14 +317,14 @@ go(S *s, int channels, const float *in, float *out)
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.25), 0));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
-    mixdown[0] = es[0] += samphold(&s->wish[0], w, wrap(20 * q +  0.25));
-    mixdown[1] = es[1] += samphold(&s->wish[1], w, wrap(20 * q +  0.75));
-    delwrite(&s->edelay1, es[0]);
-    delwrite(&s->edelay2, es[1]);
     double q = wrap((p < 0.5 ? 30 : p < 0.75 ? 25 : 50) * 8 * p);
     double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
               fmax(0, cos(16 * twopi * p))) * fmax(0, cos(2 * twopi * p));
+    mixdown[0] = es[0] += samphold(&s->wish[0], w, wrap(20 * q +  0.25));
+    mixdown[1] = es[1] += samphold(&s->wish[1], w, wrap(20 * q +  0.75));
+    delwrite(&s->edelay1, es[0]);
+    delwrite(&s->edelay2, es[1]);
   }
 
   // ===================================================================
diff @ 2018-05-12 22:02:58 +0100
diff --git a/src/go.c b/src/go.c
index 44dd7c80..4a81fdea 100644
--- a/src/go.c
+++ b/src/go.c
@@ -318,7 +318,7 @@ go(S *s, int channels, const float *in, float *out)
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     double q = wrap((p < 0.5 ? 30 : p < 0.75 ? 25 : 50) * 8 * p);
-    double w = sin(twopi * q + + sin(twopi  * 8 * p) * sin(5 * twopi * q)
+    double w = sin(twopi * q + 2 * sin(twopi  * 8 * p) * sin(5 * twopi * q)
          + sin(twopi * p) * sin(3 * twopi * q) * 
               fmax(0, cos(16 * twopi * p))) * fmax(0, cos(2 * twopi * p));
     mixdown[0] = es[0] += samphold(&s->wish[0], w, wrap(20 * q +  0.25));
diff @ 2018-05-12 22:03:03 +0100
diff --git a/src/go.c b/src/go.c
index 4a81fdea..ebcce0bd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -319,7 +319,7 @@ go(S *s, int channels, const float *in, float *out)
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     double q = wrap((p < 0.5 ? 30 : p < 0.75 ? 25 : 50) * 8 * p);
     double w = sin(twopi * q + 2 * sin(twopi  * 8 * p) * sin(5 * twopi * q)
-         + sin(twopi * p) * sin(3 * twopi * q) * 
+         + 2 *sin(twopi * p) * sin(3 * twopi * q) * 
               fmax(0, cos(16 * twopi * p))) * fmax(0, cos(2 * twopi * p));
     mixdown[0] = es[0] += samphold(&s->wish[0], w, wrap(20 * q +  0.25));
     mixdown[1] = es[1] += samphold(&s->wish[1], w, wrap(20 * q +  0.75));
diff @ 2018-05-12 22:03:06 +0100
diff --git a/src/go.c b/src/go.c
index ebcce0bd..ccf4b138 100644
--- a/src/go.c
+++ b/src/go.c
@@ -319,7 +319,7 @@ go(S *s, int channels, const float *in, float *out)
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     double q = wrap((p < 0.5 ? 30 : p < 0.75 ? 25 : 50) * 8 * p);
     double w = sin(twopi * q + 2 * sin(twopi  * 8 * p) * sin(5 * twopi * q)
-         + 2 *sin(twopi * p) * sin(3 * twopi * q) * 
+         - 2 *sin(twopi * p) * sin(3 * twopi * q) * 
               fmax(0, cos(16 * twopi * p))) * fmax(0, cos(2 * twopi * p));
     mixdown[0] = es[0] += samphold(&s->wish[0], w, wrap(20 * q +  0.25));
     mixdown[1] = es[1] += samphold(&s->wish[1], w, wrap(20 * q +  0.75));
diff @ 2018-05-12 22:03:10 +0100
diff --git a/src/go.c b/src/go.c
index ccf4b138..4c5124e2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -319,7 +319,7 @@ go(S *s, int channels, const float *in, float *out)
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     double q = wrap((p < 0.5 ? 30 : p < 0.75 ? 25 : 50) * 8 * p);
     double w = sin(twopi * q + 2 * sin(twopi  * 8 * p) * sin(5 * twopi * q)
-         - 2 *sin(twopi * p) * sin(3 * twopi * q) * 
+         - 2 *sin(twopi * p) * sin(7 * twopi * q) * 
               fmax(0, cos(16 * twopi * p))) * fmax(0, cos(2 * twopi * p));
     mixdown[0] = es[0] += samphold(&s->wish[0], w, wrap(20 * q +  0.25));
     mixdown[1] = es[1] += samphold(&s->wish[1], w, wrap(20 * q +  0.75));
diff @ 2018-05-12 22:03:20 +0100
diff --git a/src/go.c b/src/go.c
index 4c5124e2..a9565b91 100644
--- a/src/go.c
+++ b/src/go.c
@@ -319,7 +319,7 @@ go(S *s, int channels, const float *in, float *out)
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     double q = wrap((p < 0.5 ? 30 : p < 0.75 ? 25 : 50) * 8 * p);
     double w = sin(twopi * q + 2 * sin(twopi  * 8 * p) * sin(5 * twopi * q)
-         - 2 *sin(twopi * p) * sin(7 * twopi * q) * 
+         - 2 *sin(twopi * p) * sin((p < 0.5 ? 7  : 17)* twopi * q) * 
               fmax(0, cos(16 * twopi * p))) * fmax(0, cos(2 * twopi * p));
     mixdown[0] = es[0] += samphold(&s->wish[0], w, wrap(20 * q +  0.25));
     mixdown[1] = es[1] += samphold(&s->wish[1], w, wrap(20 * q +  0.75));
diff @ 2018-05-12 22:03:38 +0100
diff --git a/src/go.c b/src/go.c
index a9565b91..7e453a2e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -321,8 +321,8 @@ go(S *s, int channels, const float *in, float *out)
     double w = sin(twopi * q + 2 * sin(twopi  * 8 * p) * sin(5 * twopi * q)
          - 2 *sin(twopi * p) * sin((p < 0.5 ? 7  : 17)* twopi * q) * 
               fmax(0, cos(16 * twopi * p))) * fmax(0, cos(2 * twopi * p));
-    mixdown[0] = es[0] += samphold(&s->wish[0], w, wrap(20 * q +  0.25));
-    mixdown[1] = es[1] += samphold(&s->wish[1], w, wrap(20 * q +  0.75));
+    mixdown[0] = es[0];// += samphold(&s->wish[0], w, wrap(20 * q +  0.25));
+    mixdown[1] = es[1];// += samphold(&s->wish[1], w, wrap(20 * q +  0.75));
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
   }
diff @ 2018-05-12 22:04:00 +0100
diff --git a/src/go.c b/src/go.c
index 7e453a2e..2ea9634e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -373,7 +373,7 @@ go(S *s, int channels, const float *in, float *out)
     reverb(tail, &s->mverb, mxml, 500);
     mxml[0] += pitchshift(&s->mps[0], 1, 50, -5, tail[0]);
     mxml[1] += pitchshift(&s->mps[1], 1, 50, -5, tail[1]);
-    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
+//    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
     mixdown[0] += mxml[0];
     mixdown[1] += mxml[1];
   }
diff @ 2018-05-12 22:04:05 +0100
diff --git a/src/go.c b/src/go.c
index 2ea9634e..3e3345ca 100644
--- a/src/go.c
+++ b/src/go.c
@@ -380,7 +380,7 @@ go(S *s, int channels, const float *in, float *out)
 
   // ===================================================================
   // = 0 = mixdown
-  compress(mixdown, &s->mixdown, 5, 10, 25, 48, mixdown);
+//  compress(mixdown, &s->mixdown, 5, 10, 25, 48, mixdown);
   double volume = 1;
   mixdown[0] *= volume;
   mixdown[1] *= volume;
diff @ 2018-05-12 22:04:25 +0100
diff --git a/src/go.c b/src/go.c
index 3e3345ca..d0c1c836 100644
--- a/src/go.c
+++ b/src/go.c
@@ -349,7 +349,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     double mxml[2] = { 0, 0 };
     double rate = lop(&s->dflow, 1e4, 1); // */ 1e6, 0.0001);
-    rate = clamp(rate, 1e4, 1e5 - 1000 * (1 + noise()));
+    rate = clamp(rate, 1e4, /* 1e5 - 1000 * (1 + noise()));
     for (int c = 0; c < 4; ++c)
     {
       double d = drip(&s->drip[c], rate * (16. / pow(1.1, c))) * (1e4 + 1 < rate && rate < 1e5 - 10);
@@ -374,8 +374,8 @@ go(S *s, int channels, const float *in, float *out)
     mxml[0] += pitchshift(&s->mps[0], 1, 50, -5, tail[0]);
     mxml[1] += pitchshift(&s->mps[1], 1, 50, -5, tail[1]);
 //    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
-    mixdown[0] += mxml[0];
-    mixdown[1] += mxml[1];
+    mixdown[0] = mxml[0];
+    mixdown[1] = mxml[1];
   }
 
   // ===================================================================
diff @ 2018-05-12 22:04:34 +0100
diff --git a/src/go.c b/src/go.c
index d0c1c836..a195aad6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -348,8 +348,8 @@ go(S *s, int channels, const float *in, float *out)
       }
     }
     double mxml[2] = { 0, 0 };
-    double rate = lop(&s->dflow, 1e4, 1); // */ 1e6, 0.0001);
-    rate = clamp(rate, 1e4, /* 1e5 - 1000 * (1 + noise()));
+    double rate = lop(&s->dflow, /* 1e4, 1); // */ 1e6, 0.0001);
+    rate = clamp(rate, 1e4, 1e5);
     for (int c = 0; c < 4; ++c)
     {
       double d = drip(&s->drip[c], rate * (16. / pow(1.1, c))) * (1e4 + 1 < rate && rate < 1e5 - 10);
diff @ 2018-05-12 22:04:39 +0100
diff --git a/src/go.c b/src/go.c
index a195aad6..84d7f390 100644
--- a/src/go.c
+++ b/src/go.c
@@ -370,7 +370,7 @@ go(S *s, int channels, const float *in, float *out)
       }
     }
     double tail[2] = { 0, 0 } ;
-    reverb(tail, &s->mverb, mxml, 500);
+    reverb(tail, &s->mverb, mxml, 1500);
     mxml[0] += pitchshift(&s->mps[0], 1, 50, -5, tail[0]);
     mxml[1] += pitchshift(&s->mps[1], 1, 50, -5, tail[1]);
 //    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
diff @ 2018-05-12 22:04:49 +0100
diff --git a/src/go.c b/src/go.c
index 84d7f390..13da0256 100644
--- a/src/go.c
+++ b/src/go.c
@@ -366,7 +366,7 @@ go(S *s, int channels, const float *in, float *out)
       o = hip(&s->mhip[c], o, 15);
       for (int ear = 0; ear < 2; ++ear)
       {
-        mxml[ear] += early_ref(&s->meref[c][ear], o, 0.2);
+        mxml[ear] += early_ref(&s->meref[c][ear], o, 0.25);
       }
     }
     double tail[2] = { 0, 0 } ;
diff @ 2018-05-12 22:04:55 +0100
diff --git a/src/go.c b/src/go.c
index 13da0256..09696b62 100644
--- a/src/go.c
+++ b/src/go.c
@@ -366,7 +366,7 @@ go(S *s, int channels, const float *in, float *out)
       o = hip(&s->mhip[c], o, 15);
       for (int ear = 0; ear < 2; ++ear)
       {
-        mxml[ear] += early_ref(&s->meref[c][ear], o, 0.25);
+        mxml[ear] += early_ref(&s->meref[c][ear], o, 0.5);
       }
     }
     double tail[2] = { 0, 0 } ;
diff @ 2018-05-12 22:05:00 +0100
diff --git a/src/go.c b/src/go.c
index 09696b62..c308a2f6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -366,7 +366,7 @@ go(S *s, int channels, const float *in, float *out)
       o = hip(&s->mhip[c], o, 15);
       for (int ear = 0; ear < 2; ++ear)
       {
-        mxml[ear] += early_ref(&s->meref[c][ear], o, 0.5);
+        mxml[ear] += early_ref(&s->meref[c][ear], o, 0.75);
       }
     }
     double tail[2] = { 0, 0 } ;
diff @ 2018-05-12 22:05:10 +0100
diff --git a/src/go.c b/src/go.c
index c308a2f6..5f2f3a35 100644
--- a/src/go.c
+++ b/src/go.c
@@ -370,7 +370,7 @@ go(S *s, int channels, const float *in, float *out)
       }
     }
     double tail[2] = { 0, 0 } ;
-    reverb(tail, &s->mverb, mxml, 1500);
+    reverb(tail, &s->mverb, mxml, 2500);
     mxml[0] += pitchshift(&s->mps[0], 1, 50, -5, tail[0]);
     mxml[1] += pitchshift(&s->mps[1], 1, 50, -5, tail[1]);
 //    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
diff @ 2018-05-12 22:05:15 +0100
diff --git a/src/go.c b/src/go.c
index 5f2f3a35..79560653 100644
--- a/src/go.c
+++ b/src/go.c
@@ -370,7 +370,7 @@ go(S *s, int channels, const float *in, float *out)
       }
     }
     double tail[2] = { 0, 0 } ;
-    reverb(tail, &s->mverb, mxml, 2500);
+    reverb(tail, &s->mverb, mxml, 4500);
     mxml[0] += pitchshift(&s->mps[0], 1, 50, -5, tail[0]);
     mxml[1] += pitchshift(&s->mps[1], 1, 50, -5, tail[1]);
 //    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
diff @ 2018-05-12 22:05:23 +0100
diff --git a/src/go.c b/src/go.c
index 79560653..69c7460f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -359,7 +359,7 @@ go(S *s, int channels, const float *in, float *out)
       }
       s->menv[c].y += tanh(1e-12 * d);
       double e = lop1(&s->menv[c], 0, 10);
-      double f = samphold(&s->msh[c], 40 * pow(1.5, cbrt(1e-11 * d)), -d);
+      double f = samphold(&s->msh[c], 50 * pow(1.5, cbrt(1e-11 * d)), -d);
       double o = phasor(&s->mosc[c], f);
       o = tanh(4 * sin(twopi * o) * e);
       o = moog(&s->mmoog[c], o, f * pow(2, 6 * e), 0.75);
diff @ 2018-05-12 22:05:34 +0100
diff --git a/src/go.c b/src/go.c
index 69c7460f..fe5b9d7b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -361,7 +361,7 @@ go(S *s, int channels, const float *in, float *out)
       double e = lop1(&s->menv[c], 0, 10);
       double f = samphold(&s->msh[c], 50 * pow(1.5, cbrt(1e-11 * d)), -d);
       double o = phasor(&s->mosc[c], f);
-      o = tanh(4 * sin(twopi * o) * e);
+      o = tanh(8 * sin(twopi * o) * e);
       o = moog(&s->mmoog[c], o, f * pow(2, 6 * e), 0.75);
       o = hip(&s->mhip[c], o, 15);
       for (int ear = 0; ear < 2; ++ear)
diff @ 2018-05-12 22:05:39 +0100
diff --git a/src/go.c b/src/go.c
index fe5b9d7b..36851b13 100644
--- a/src/go.c
+++ b/src/go.c
@@ -361,7 +361,7 @@ go(S *s, int channels, const float *in, float *out)
       double e = lop1(&s->menv[c], 0, 10);
       double f = samphold(&s->msh[c], 50 * pow(1.5, cbrt(1e-11 * d)), -d);
       double o = phasor(&s->mosc[c], f);
-      o = tanh(8 * sin(twopi * o) * e);
+      o = tanh(8 * sin(2 * twopi * o) * e);
       o = moog(&s->mmoog[c], o, f * pow(2, 6 * e), 0.75);
       o = hip(&s->mhip[c], o, 15);
       for (int ear = 0; ear < 2; ++ear)
diff @ 2018-05-12 22:05:45 +0100
diff --git a/src/go.c b/src/go.c
index 36851b13..c1d6e645 100644
--- a/src/go.c
+++ b/src/go.c
@@ -370,7 +370,7 @@ go(S *s, int channels, const float *in, float *out)
       }
     }
     double tail[2] = { 0, 0 } ;
-    reverb(tail, &s->mverb, mxml, 4500);
+    reverb(tail, &s->mverb, mxml, 50000);
     mxml[0] += pitchshift(&s->mps[0], 1, 50, -5, tail[0]);
     mxml[1] += pitchshift(&s->mps[1], 1, 50, -5, tail[1]);
 //    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
diff @ 2018-05-12 22:05:51 +0100
diff --git a/src/go.c b/src/go.c
index c1d6e645..4cb84288 100644
--- a/src/go.c
+++ b/src/go.c
@@ -370,7 +370,7 @@ go(S *s, int channels, const float *in, float *out)
       }
     }
     double tail[2] = { 0, 0 } ;
-    reverb(tail, &s->mverb, mxml, 50000);
+    reverb(tail, &s->mverb, mxml, 5000);
     mxml[0] += pitchshift(&s->mps[0], 1, 50, -5, tail[0]);
     mxml[1] += pitchshift(&s->mps[1], 1, 50, -5, tail[1]);
 //    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
diff @ 2018-05-12 22:05:57 +0100
diff --git a/src/go.c b/src/go.c
index 4cb84288..21205389 100644
--- a/src/go.c
+++ b/src/go.c
@@ -370,7 +370,7 @@ go(S *s, int channels, const float *in, float *out)
       }
     }
     double tail[2] = { 0, 0 } ;
-    reverb(tail, &s->mverb, mxml, 5000);
+    reverb(tail, &s->mverb, mxml, 15000);
     mxml[0] += pitchshift(&s->mps[0], 1, 50, -5, tail[0]);
     mxml[1] += pitchshift(&s->mps[1], 1, 50, -5, tail[1]);
 //    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
diff @ 2018-05-12 22:06:14 +0100
diff --git a/src/go.c b/src/go.c
index 21205389..dcf53427 100644
--- a/src/go.c
+++ b/src/go.c
@@ -371,8 +371,8 @@ go(S *s, int channels, const float *in, float *out)
     }
     double tail[2] = { 0, 0 } ;
     reverb(tail, &s->mverb, mxml, 15000);
-    mxml[0] += pitchshift(&s->mps[0], 1, 50, -5, tail[0]);
-    mxml[1] += pitchshift(&s->mps[1], 1, 50, -5, tail[1]);
+    mxml[0] += tail[0];
+    mxml[1] += tail[1];
 //    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
     mixdown[0] = mxml[0];
     mixdown[1] = mxml[1];
diff @ 2018-05-12 22:06:23 +0100
diff --git a/src/go.c b/src/go.c
index dcf53427..d83b2293 100644
--- a/src/go.c
+++ b/src/go.c
@@ -362,7 +362,7 @@ go(S *s, int channels, const float *in, float *out)
       double f = samphold(&s->msh[c], 50 * pow(1.5, cbrt(1e-11 * d)), -d);
       double o = phasor(&s->mosc[c], f);
       o = tanh(8 * sin(2 * twopi * o) * e);
-      o = moog(&s->mmoog[c], o, f * pow(2, 6 * e), 0.75);
+      o = moog(&s->mmoog[c], o, f * pow(2, 6 * e), 0.5);
       o = hip(&s->mhip[c], o, 15);
       for (int ear = 0; ear < 2; ++ear)
       {
diff @ 2018-05-12 22:06:27 +0100
diff --git a/src/go.c b/src/go.c
index d83b2293..88682575 100644
--- a/src/go.c
+++ b/src/go.c
@@ -362,7 +362,7 @@ go(S *s, int channels, const float *in, float *out)
       double f = samphold(&s->msh[c], 50 * pow(1.5, cbrt(1e-11 * d)), -d);
       double o = phasor(&s->mosc[c], f);
       o = tanh(8 * sin(2 * twopi * o) * e);
-      o = moog(&s->mmoog[c], o, f * pow(2, 6 * e), 0.5);
+      o = moog(&s->mmoog[c], o, f * pow(2, 6 * e), 0.3);
       o = hip(&s->mhip[c], o, 15);
       for (int ear = 0; ear < 2; ++ear)
       {
diff @ 2018-05-12 22:06:32 +0100
diff --git a/src/go.c b/src/go.c
index 88682575..a91b5841 100644
--- a/src/go.c
+++ b/src/go.c
@@ -362,7 +362,7 @@ go(S *s, int channels, const float *in, float *out)
       double f = samphold(&s->msh[c], 50 * pow(1.5, cbrt(1e-11 * d)), -d);
       double o = phasor(&s->mosc[c], f);
       o = tanh(8 * sin(2 * twopi * o) * e);
-      o = moog(&s->mmoog[c], o, f * pow(2, 6 * e), 0.3);
+      o = moog(&s->mmoog[c], o, f * pow(2, 6 * e), 0.2);
       o = hip(&s->mhip[c], o, 15);
       for (int ear = 0; ear < 2; ++ear)
       {
diff @ 2018-05-12 22:06:36 +0100
diff --git a/src/go.c b/src/go.c
index a91b5841..7887fcbb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -362,7 +362,7 @@ go(S *s, int channels, const float *in, float *out)
       double f = samphold(&s->msh[c], 50 * pow(1.5, cbrt(1e-11 * d)), -d);
       double o = phasor(&s->mosc[c], f);
       o = tanh(8 * sin(2 * twopi * o) * e);
-      o = moog(&s->mmoog[c], o, f * pow(2, 6 * e), 0.2);
+      o = moog(&s->mmoog[c], o, f * pow(2, 6 * e), 0.1);
       o = hip(&s->mhip[c], o, 15);
       for (int ear = 0; ear < 2; ++ear)
       {
diff @ 2018-05-12 22:07:07 +0100
diff --git a/src/go.c b/src/go.c
index 7887fcbb..f7b7fcfd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -370,7 +370,7 @@ go(S *s, int channels, const float *in, float *out)
       }
     }
     double tail[2] = { 0, 0 } ;
-    reverb(tail, &s->mverb, mxml, 15000);
+    reverb(tail, &s->mverb, mxml, 150000);
     mxml[0] += tail[0];
     mxml[1] += tail[1];
 //    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
diff @ 2018-05-12 22:07:22 +0100
diff --git a/src/go.c b/src/go.c
index f7b7fcfd..1b378f09 100644
--- a/src/go.c
+++ b/src/go.c
@@ -371,8 +371,8 @@ go(S *s, int channels, const float *in, float *out)
     }
     double tail[2] = { 0, 0 } ;
     reverb(tail, &s->mverb, mxml, 150000);
-    mxml[0] += tail[0];
-    mxml[1] += tail[1];
+    mxml[0] += tanh(tail[0]);
+    mxml[1] += tanh(tail[1]);
 //    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
     mixdown[0] = mxml[0];
     mixdown[1] = mxml[1];
diff @ 2018-05-12 22:07:28 +0100
diff --git a/src/go.c b/src/go.c
index 1b378f09..379e7926 100644
--- a/src/go.c
+++ b/src/go.c
@@ -371,8 +371,8 @@ go(S *s, int channels, const float *in, float *out)
     }
     double tail[2] = { 0, 0 } ;
     reverb(tail, &s->mverb, mxml, 150000);
-    mxml[0] += tanh(tail[0]);
-    mxml[1] += tanh(tail[1]);
+    mxml[0] += tanh(2 *tail[0]);
+    mxml[1] += tanh(2 *tail[1]);
 //    compress(mxml, &s->mcompress, 10, 30, 50, 60, mxml);
     mixdown[0] = mxml[0];
     mixdown[1] = mxml[1];

the end