session-2018-03-07-033146

clive

a C audio live-coding skeleton.

diff @ 2018-03-07 03:32:03 +0000
diff --git a/src/go.c b/src/go.c
index fb7b8d01..89dca41e 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-03-07 03:32:18 +0000
diff --git a/src/go.c b/src/go.c
index 89dca41e..d8bf2f84 100644
--- a/src/go.c
+++ b/src/go.c
@@ -191,7 +191,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 = 20;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-03-07 03:32:24 +0000
diff --git a/src/go.c b/src/go.c
index d8bf2f84..f806c1b9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -191,7 +191,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 = 50;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-03-07 03:32:27 +0000
diff --git a/src/go.c b/src/go.c
index f806c1b9..d28ea007 100644
--- a/src/go.c
+++ b/src/go.c
@@ -191,7 +191,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 = 50;
+    double q = 100;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-03-07 03:32:36 +0000
diff --git a/src/go.c b/src/go.c
index d28ea007..5c7c2983 100644
--- a/src/go.c
+++ b/src/go.c
@@ -191,7 +191,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 = 150;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-03-07 03:32:41 +0000
diff --git a/src/go.c b/src/go.c
index 5c7c2983..97b38d8c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -191,7 +191,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 = 150;
+    double q = 250;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-03-07 03:32:50 +0000
diff --git a/src/go.c b/src/go.c
index 97b38d8c..489796ec 100644
--- a/src/go.c
+++ b/src/go.c
@@ -191,7 +191,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 = 350;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-03-07 03:32:55 +0000
diff --git a/src/go.c b/src/go.c
index 489796ec..413007dd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -191,7 +191,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 = 350;
+    double q = 500;
     na *= 10;
     nb *= 10;
     na = vcf(&s->pvcf[0], na * q, freq, q);
diff @ 2018-03-07 03:33:06 +0000
diff --git a/src/go.c b/src/go.c
index 413007dd..dcca146c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -192,8 +192,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 = 500;
-    na *= 10;
-    nb *= 10;
+    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-03-07 03:33:14 +0000
diff --git a/src/go.c b/src/go.c
index dcca146c..2565167d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -192,8 +192,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 = 500;
-    na *= 8;
-    nb *= 8;
+    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-03-07 03:33:26 +0000
diff --git a/src/go.c b/src/go.c
index 2565167d..31260b1d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -192,8 +192,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 = 500;
-    na *= 6;
-    nb *= 6;
+    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-03-07 03:33:36 +0000
diff --git a/src/go.c b/src/go.c
index 31260b1d..691222a9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -192,8 +192,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 = 500;
-    na *= 4;
-    nb *= 4;
+    na *= 3;
+    nb *= 3;
     na = vcf(&s->pvcf[0], na * q, freq, q);
     nb = vcf(&s->pvcf[1], nb * q, freq, q);
     na = sin(na);
diff @ 2018-03-07 03:33:54 +0000
diff --git a/src/go.c b/src/go.c
index 691222a9..b1f99774 100644
--- a/src/go.c
+++ b/src/go.c
@@ -117,7 +117,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-03-07 03:34:03 +0000
diff --git a/src/go.c b/src/go.c
index b1f99774..158fb799 100644
--- a/src/go.c
+++ b/src/go.c
@@ -107,7 +107,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 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-03-07 03:34:18 +0000
diff --git a/src/go.c b/src/go.c
index 158fb799..aafd4a64 100644
--- a/src/go.c
+++ b/src/go.c
@@ -113,11 +113,10 @@ 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 - 3, 0, 20);
     freq = 10 * samphold(&s->bsh, harmonic, 1 - trigger);
     freq = lop(&s->bfreq, freq, 20);
   }
-  freq = 50;
 
   // ===================================================================
   // = 3 = total intraliminal extraction
diff @ 2018-03-07 03:34:30 +0000
diff --git a/src/go.c b/src/go.c
index aafd4a64..c7b573cc 100644
--- a/src/go.c
+++ b/src/go.c
@@ -107,7 +107,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 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (4 + 4 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-03-07 03:34:44 +0000
diff --git a/src/go.c b/src/go.c
index c7b573cc..752c38a1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -112,7 +112,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, 4);
     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-03-07 03:34:48 +0000
diff --git a/src/go.c b/src/go.c
index 752c38a1..a6057c34 100644
--- a/src/go.c
+++ b/src/go.c
@@ -112,7 +112,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, 4);
+    env = lop(&s->benv, 0, 3);
     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-03-07 03:34:54 +0000
diff --git a/src/go.c b/src/go.c
index a6057c34..e47a72ce 100644
--- a/src/go.c
+++ b/src/go.c
@@ -112,7 +112,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, 3);
+    env = lop(&s->benv, 0, 2);
     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-03-07 03:35:01 +0000
diff --git a/src/go.c b/src/go.c
index e47a72ce..38ea5c72 100644
--- a/src/go.c
+++ b/src/go.c
@@ -112,7 +112,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, 2);
+    env = lop(&s->benv, 0, 1);
     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-03-07 03:35:20 +0000
diff --git a/src/go.c b/src/go.c
index 38ea5c72..b8beeb0f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -113,7 +113,7 @@ go(S *s, int channels, const float *in, float *out)
     double trigger = uniform < probability;
     s->benv.y += trigger;
     env = lop(&s->benv, 0, 1);
-    double harmonic = 5 + clamp(N - zeroes - 3, 0, 20);
+    double harmonic = 5 + clamp(N - zeroes - 2, 0, 20);
     freq = 10 * samphold(&s->bsh, harmonic, 1 - trigger);
     freq = lop(&s->bfreq, freq, 20);
   }
diff @ 2018-03-07 03:35:42 +0000
diff --git a/src/go.c b/src/go.c
index b8beeb0f..56dddc19 100644
--- a/src/go.c
+++ b/src/go.c
@@ -189,9 +189,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 = 500;
-    na *= 3;
-    nb *= 3;
+    double q = 300;
+    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-03-07 03:35:50 +0000
diff --git a/src/go.c b/src/go.c
index 56dddc19..0b0c978f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -190,8 +190,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 = 300;
-    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-03-07 03:36:15 +0000
diff --git a/src/go.c b/src/go.c
index 0b0c978f..1ceb1a0b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -162,7 +162,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-03-07 03:36:38 +0000
diff --git a/src/go.c b/src/go.c
index 1ceb1a0b..8feb06f8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -151,7 +151,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0);
     double fb2 = mix(sfb2, -sfb1, 0);
-    double fb = 0;
+    double fb = 0.1;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
diff @ 2018-03-07 03:36:42 +0000
diff --git a/src/go.c b/src/go.c
index 8feb06f8..49784ade 100644
--- a/src/go.c
+++ b/src/go.c
@@ -151,7 +151,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0);
     double fb2 = mix(sfb2, -sfb1, 0);
-    double fb = 0.1;
+    double fb = 0.2;
     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-03-07 03:36:45 +0000
diff --git a/src/go.c b/src/go.c
index 49784ade..230d9803 100644
--- a/src/go.c
+++ b/src/go.c
@@ -151,7 +151,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.2;
+    double fb = 0.25;
     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-03-07 03:36:59 +0000
diff --git a/src/go.c b/src/go.c
index 230d9803..e21ede77 100644
--- a/src/go.c
+++ b/src/go.c
@@ -151,7 +151,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.25;
+    double fb = 0.5;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
diff @ 2018-03-07 03:37:07 +0000
diff --git a/src/go.c b/src/go.c
index e21ede77..aa0ea3b6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -151,7 +151,7 @@ go(S *s, int channels, const float *in, float *out)
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
     double fb1 = mix(sfb1, -sfb2, 0);
     double fb2 = mix(sfb2, -sfb1, 0);
-    double fb = 0.5;
+    double fb = 0.75;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
diff @ 2018-03-07 03:37:14 +0000
diff --git a/src/go.c b/src/go.c
index aa0ea3b6..31f95e04 100644
--- a/src/go.c
+++ b/src/go.c
@@ -149,8 +149,8 @@ go(S *s, int channels, const float *in, float *out)
     double hz2 = 2 * khz * floor(pow(2, wrap(4 * p + 0.5)));
     double sfb1 = delread4(&s->tcomb1, 1000 / hz1);
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2);
-    double fb1 = mix(sfb1, -sfb2, 0);
-    double fb2 = mix(sfb2, -sfb1, 0);
+    double fb1 = mix(sfb1, -sfb2, 0.1);
+    double fb2 = mix(sfb2, -sfb1, 0.1);
     double fb = 0.75;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
diff @ 2018-03-07 03:37:27 +0000
diff --git a/src/go.c b/src/go.c
index 31f95e04..ac31d112 100644
--- a/src/go.c
+++ b/src/go.c
@@ -147,8 +147,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.1);
     double fb2 = mix(sfb2, -sfb1, 0.1);
     double fb = 0.75;
diff @ 2018-03-07 03:37:34 +0000
diff --git a/src/go.c b/src/go.c
index ac31d112..de3a219e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -149,8 +149,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) + 1;
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2) - 1;
-    double fb1 = mix(sfb1, -sfb2, 0.1);
-    double fb2 = mix(sfb2, -sfb1, 0.1);
+    double fb1 = mix(sfb1, -sfb2, 0.01);
+    double fb2 = mix(sfb2, -sfb1, 0.01);
     double fb = 0.75;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
diff @ 2018-03-07 03:37:40 +0000
diff --git a/src/go.c b/src/go.c
index de3a219e..1df77576 100644
--- a/src/go.c
+++ b/src/go.c
@@ -149,8 +149,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) + 1;
     double sfb2 = delread4(&s->tcomb2, 1000 / hz2) - 1;
-    double fb1 = mix(sfb1, -sfb2, 0.01);
-    double fb2 = mix(sfb2, -sfb1, 0.01);
+    double fb1 = mix(sfb1, -sfb2, 0.001);
+    double fb2 = mix(sfb2, -sfb1, 0.001);
     double fb = 0.75;
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
diff @ 2018-03-07 03:37:45 +0000
diff --git a/src/go.c b/src/go.c
index 1df77576..74489170 100644
--- a/src/go.c
+++ b/src/go.c
@@ -151,7 +151,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.001);
     double fb2 = mix(sfb2, -sfb1, 0.001);
-    double fb = 0.75;
+    double fb = 0.975;
     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-03-07 03:38:01 +0000
diff --git a/src/go.c b/src/go.c
index 74489170..564a6cdd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -145,8 +145,8 @@ go(S *s, int channels, const float *in, float *out)
     s->tcomb1.length = SR;
     s->tcomb2.length = SR;
     double khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
-    double hz1 = 2 * khz * floor(pow(2, wrap(4 * p + 0.0)));
-    double hz2 = 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.001);
diff @ 2018-03-07 03:38:14 +0000
diff --git a/src/go.c b/src/go.c
index 564a6cdd..6d545b45 100644
--- a/src/go.c
+++ b/src/go.c
@@ -144,7 +144,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-03-07 03:38:27 +0000
diff --git a/src/go.c b/src/go.c
index 6d545b45..ea930f5f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -165,7 +165,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-03-07 03:38:48 +0000
diff --git a/src/go.c b/src/go.c
index ea930f5f..633be279 100644
--- a/src/go.c
+++ b/src/go.c
@@ -155,7 +155,7 @@ go(S *s, int channels, const float *in, float *out)
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 5)*5)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
diff @ 2018-03-07 03:39:02 +0000
diff --git a/src/go.c b/src/go.c
index 633be279..c8191e0f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
     tilex[0] = fb1;
diff @ 2018-03-07 03:39:07 +0000
diff --git a/src/go.c b/src/go.c
index c8191e0f..12b13e91 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
     tilex[0] = fb1;
diff @ 2018-03-07 03:39:10 +0000
diff --git a/src/go.c b/src/go.c
index 12b13e91..35b15a09 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 15)*15);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 4, 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
     tilex[0] = fb1;
diff @ 2018-03-07 03:39:13 +0000
diff --git a/src/go.c b/src/go.c
index 35b15a09..6f2c0728 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 4, 15)*15);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 5, 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
     tilex[0] = fb1;
diff @ 2018-03-07 03:39:18 +0000
diff --git a/src/go.c b/src/go.c
index 6f2c0728..6a257df4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 5, 15)*15);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 5, 150)*150);
     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-03-07 03:39:20 +0000
diff --git a/src/go.c b/src/go.c
index 6a257df4..544ef85c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 5, 150)*150);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 5, 150)*100);
     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-03-07 03:39:24 +0000
diff --git a/src/go.c b/src/go.c
index 544ef85c..af836646 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 5, 150)*100);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 150)*100);
     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-03-07 03:39:29 +0000
diff --git a/src/go.c b/src/go.c
index af836646..62d0a7d2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 150)*100);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 150)*100);
     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-03-07 03:39:44 +0000
diff --git a/src/go.c b/src/go.c
index 62d0a7d2..11881fcc 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 150)*100);
+    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p) < 0.75 ? 2 : 3), 150)*100);
     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-03-07 03:40:01 +0000
diff --git a/src/go.c b/src/go.c
index 11881fcc..f31a7a09 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p) < 0.75 ? 2 : 3), 150)*100);
+    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 2 : 3), 150)*100);
     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-03-07 03:40:09 +0000
diff --git a/src/go.c b/src/go.c
index f31a7a09..fe962b7c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,7 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 2 : 3), 150)*100);
+    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     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-03-07 03:40:21 +0000
diff --git a/src/go.c b/src/go.c
index fe962b7c..df4196cb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -157,8 +157,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
-    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
+    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 50)*25)
+         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 50)*25);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-03-07 03:40:29 +0000
diff --git a/src/go.c b/src/go.c
index df4196cb..db5ee722 100644
--- a/src/go.c
+++ b/src/go.c
@@ -157,8 +157,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
-    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 50)*25)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 50)*25);
+    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 150)*125)
+         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 150)*125);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-03-07 03:40:33 +0000
diff --git a/src/go.c b/src/go.c
index db5ee722..71fb9692 100644
--- a/src/go.c
+++ b/src/go.c
@@ -157,8 +157,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
-    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 150)*125)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 150)*125);
+    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 150)*100)
+         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 150)*100);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-03-07 03:40:38 +0000
diff --git a/src/go.c b/src/go.c
index 71fb9692..7e66646b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -157,8 +157,8 @@ go(S *s, int channels, const float *in, float *out)
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
-    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 150)*100)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 150)*100);
+    kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
+         *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-03-07 03:40:49 +0000
diff --git a/src/go.c b/src/go.c
index 7e66646b..799fde02 100644
--- a/src/go.c
+++ b/src/go.c
@@ -155,7 +155,7 @@ go(S *s, int channels, const float *in, float *out)
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 25)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
diff @ 2018-03-07 03:40:58 +0000
diff --git a/src/go.c b/src/go.c
index 799fde02..1f61d4d0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -155,7 +155,7 @@ go(S *s, int channels, const float *in, float *out)
     fb = samphold(&s->tgate[2], fb, wrap(4 * p));
     delwrite(&s->tcomb1, sin(hat * noise() - fb * fb1));
     delwrite(&s->tcomb2, sin(hat * noise() - fb * fb2));
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 25)*25)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 50)*25)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
diff @ 2018-03-07 03:41:03 +0000
diff --git a/src/go.c b/src/go.c
index 1f61d4d0..45176cdd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -155,7 +155,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, 50)*25)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 50)*50)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
diff @ 2018-03-07 03:41:07 +0000
diff --git a/src/go.c b/src/go.c
index 45176cdd..8b4a8e47 100644
--- a/src/go.c
+++ b/src/go.c
@@ -155,7 +155,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, 50)*50)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 50)*50)*3;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
diff @ 2018-03-07 03:41:12 +0000
diff --git a/src/go.c b/src/go.c
index 8b4a8e47..62181a14 100644
--- a/src/go.c
+++ b/src/go.c
@@ -155,7 +155,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, 50)*50)*3;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 50)*50)*4;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
diff @ 2018-03-07 03:41:28 +0000
diff --git a/src/go.c b/src/go.c
index 62181a14..19a85868 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,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, 50)*50)*4;
-    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
+    kick -= sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
     tilex[0] = fb1;
diff @ 2018-03-07 03:41:31 +0000
diff --git a/src/go.c b/src/go.c
index 19a85868..5ead94c1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -157,7 +157,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, 50)*50)*4;
     kick -= sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
-    kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
+    kick -= sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
     tilex[0] = fb1;
     tilex[1] = fb2;
diff @ 2018-03-07 03:41:35 +0000
diff --git a/src/go.c b/src/go.c
index 5ead94c1..d67e3277 100644
--- a/src/go.c
+++ b/src/go.c
@@ -155,7 +155,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, 50)*50)*4;
+    kick -=tanh(vcf(&s->tkick[0], kick, khz, 50)*50)*4;
     kick -= sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick -= sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
diff @ 2018-03-07 03:41:40 +0000
diff --git a/src/go.c b/src/go.c
index d67e3277..8b7c7c7e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -155,7 +155,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, 50)*50)*4;
+    kick -=tanh(vcf(&s->tkick[0], kick, khz, 50)*50)*1;
     kick -= sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick -= sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
diff @ 2018-03-07 03:41:44 +0000
diff --git a/src/go.c b/src/go.c
index 8b7c7c7e..c408aa89 100644
--- a/src/go.c
+++ b/src/go.c
@@ -155,7 +155,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, 50)*50)*1;
+    kick -=tanh(vcf(&s->tkick[0], kick, khz, 50)*50)*2;
     kick -= sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick -= sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
diff @ 2018-03-07 03:41:50 +0000
diff --git a/src/go.c b/src/go.c
index c408aa89..d240d22a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -155,7 +155,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, 50)*50)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 50)*50)*2;
     kick -= sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick -= sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
diff @ 2018-03-07 03:41:53 +0000
diff --git a/src/go.c b/src/go.c
index d240d22a..45176cdd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,8 +156,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, 50)*50)*2;
-    kick -= sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
-    kick -= sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
+    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
+    kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
     tilex[0] = fb1;
     tilex[1] = fb2;
diff @ 2018-03-07 03:41:54 +0000
diff --git a/src/go.c b/src/go.c
index 45176cdd..f702a19f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -155,7 +155,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, 50)*50)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 50)*50);
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
diff @ 2018-03-07 03:42:08 +0000
diff --git a/src/go.c b/src/go.c
index f702a19f..c4d57fa9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,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, 50)*50);
-    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
+    kick +=tanh(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
     kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
          *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
     tilex[0] = fb1;
diff @ 2018-03-07 03:42:17 +0000
diff --git a/src/go.c b/src/go.c
index c4d57fa9..e8158061 100644
--- a/src/go.c
+++ b/src/go.c
@@ -157,8 +157,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, 50)*50);
     kick +=tanh(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
-    kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*100)
-         *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*100);
+    kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*200)
+         *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*200);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-03-07 03:42:26 +0000
diff --git a/src/go.c b/src/go.c
index e8158061..7ce07be5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -157,8 +157,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, 50)*50);
     kick +=tanh(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
-    kick += sin(vcf(&s->tkick[2], kick, khz*8-20, 150)*200)
-         *  sin(vcf(&s->tkick[3], kick, khz*8+20, 150)*200);
+    kick += sin(vcf(&s->tkick[2], kick, khz*16-20, 150)*200)
+         *  sin(vcf(&s->tkick[3], kick, khz*16+20, 150)*200);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-03-07 03:42:29 +0000
diff --git a/src/go.c b/src/go.c
index 7ce07be5..79eb5a99 100644
--- a/src/go.c
+++ b/src/go.c
@@ -157,8 +157,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, 50)*50);
     kick +=tanh(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
-    kick += sin(vcf(&s->tkick[2], kick, khz*16-20, 150)*200)
-         *  sin(vcf(&s->tkick[3], kick, khz*16+20, 150)*200);
+    kick += sin(vcf(&s->tkick[2], kick, khz*12-20, 150)*200)
+         *  sin(vcf(&s->tkick[3], kick, khz*12+20, 150)*200);
     tilex[0] = fb1;
     tilex[1] = fb2;
     compress(tilex, &s->tcompress1, 5, 10, 25, 48, tilex);
diff @ 2018-03-07 03:42:40 +0000
diff --git a/src/go.c b/src/go.c
index 79eb5a99..6deb6a6c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -151,7 +151,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.001);
     double fb2 = mix(sfb2, -sfb1, 0.001);
-    double fb = 0.975;
+    double fb = 0.9975;
     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-03-07 03:42:50 +0000
diff --git a/src/go.c b/src/go.c
index 6deb6a6c..7dbb13c5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -162,7 +162,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 = 2;
     tilex[0] *= hgain;
     tilex[1] *= hgain;
     double kgain = 1;
diff @ 2018-03-07 03:42:53 +0000
diff --git a/src/go.c b/src/go.c
index 7dbb13c5..b9f7ec7a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -162,7 +162,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 = 2;
+    double hgain = 3;
     tilex[0] *= hgain;
     tilex[1] *= hgain;
     double kgain = 1;
diff @ 2018-03-07 03:43:03 +0000
diff --git a/src/go.c b/src/go.c
index b9f7ec7a..b4434b8b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -156,7 +156,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, 50)*50);
-    kick +=tanh(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*100);
+    kick +=tanh(vcf(&s->tkick[1], kick, khz * (wrap(8 * p) < 0.5 ? 3 : 2), 150)*10);
     kick += sin(vcf(&s->tkick[2], kick, khz*12-20, 150)*200)
          *  sin(vcf(&s->tkick[3], kick, khz*12+20, 150)*200);
     tilex[0] = fb1;
diff @ 2018-03-07 03:43:25 +0000
diff --git a/src/go.c b/src/go.c
index b4434b8b..dd021e47 100644
--- a/src/go.c
+++ b/src/go.c
@@ -113,7 +113,7 @@ go(S *s, int channels, const float *in, float *out)
     double trigger = uniform < probability;
     s->benv.y += trigger;
     env = lop(&s->benv, 0, 1);
-    double harmonic = 5 + clamp(N - zeroes - 2, 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);
   }
diff @ 2018-03-07 03:43:40 +0000
diff --git a/src/go.c b/src/go.c
index dd021e47..bc1960d0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -236,8 +236,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-03-07 03:43:57 +0000
diff --git a/src/go.c b/src/go.c
index bc1960d0..d5bf7671 100644
--- a/src/go.c
+++ b/src/go.c
@@ -236,8 +236,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-03-07 03:44:06 +0000
diff --git a/src/go.c b/src/go.c
index d5bf7671..aed40470 100644
--- a/src/go.c
+++ b/src/go.c
@@ -236,8 +236,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-03-07 03:44:17 +0000
diff --git a/src/go.c b/src/go.c
index aed40470..a46024e4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -236,8 +236,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.6, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.6, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-03-07 03:44:30 +0000
diff --git a/src/go.c b/src/go.c
index a46024e4..aed40470 100644
--- a/src/go.c
+++ b/src/go.c
@@ -236,8 +236,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + si);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.6, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.6, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.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-03-07 03:44:40 +0000
diff --git a/src/go.c b/src/go.c
index aed40470..489f470a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -223,7 +223,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-03-07 03:45:05 +0000
diff --git a/src/go.c b/src/go.c
index 489f470a..e12481e4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -228,7 +228,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./8);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2018-03-07 03:45:25 +0000
diff --git a/src/go.c b/src/go.c
index e12481e4..0721c808 100644
--- a/src/go.c
+++ b/src/go.c
@@ -228,7 +228,7 @@ go(S *s, int channels, const float *in, float *out)
     double t = twopi * p;
     double co = cos(t);
     double si = sin(t);
-    double ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./8);
+    double ldelms = 60000 / bpm * (wrap(2 * p) < 0.75 ? 1 : 1./8);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2018-03-07 03:45:47 +0000
diff --git a/src/go.c b/src/go.c
index 0721c808..c6a02934 100644
--- a/src/go.c
+++ b/src/go.c
@@ -228,7 +228,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 * (wrap(2 * p) < 0.75 ? 1 : 1./8);
+    double ldelms = 60000 / bpm * (wrap(2 * p) < 0.75 ? wrap(p) < 0.5 ? 1./2 : 2./3 : 1./8);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2018-03-07 03:46:28 +0000
diff --git a/src/go.c b/src/go.c
index c6a02934..094a5bc7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -228,7 +228,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 * (wrap(2 * p) < 0.75 ? wrap(p) < 0.5 ? 1./2 : 2./3 : 1./8);
+    double ldelms = 60000 / bpm *
+      ( wrap(2 * p) < 0.75
+      ? wrap(p) < 0.5 ? 1./2 : 2./3
+      : wrap(p) < 0.5 ? 1./6 : 1./8);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2018-03-07 03:46:43 +0000
diff --git a/src/go.c b/src/go.c
index 094a5bc7..9a02d1b9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -235,8 +235,8 @@ go(S *s, int channels, const float *in, float *out)
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
-    double el = delread4(&s->edelay1, ldelms + co);
-    double er = delread4(&s->edelay2, rdelms + si);
+    double el = delread4(&s->edelay1, ldelms + 16 * co);
+    double er = delread4(&s->edelay2, rdelms + 16 * 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));
diff @ 2018-03-07 03:47:00 +0000
diff --git a/src/go.c b/src/go.c
index 9a02d1b9..3f7f0019 100644
--- a/src/go.c
+++ b/src/go.c
@@ -223,7 +223,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
-    double hz = 0.125 * bpm / 60;
+    double hz = 0.25 * bpm / 60;
     double p = phasor(&s->ephase, hz);
     double t = twopi * p;
     double co = cos(t);
diff @ 2018-03-07 03:47:17 +0000
diff --git a/src/go.c b/src/go.c
index 3f7f0019..98b98b56 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,8 +239,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + 16 * 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.5, pow(wrap(8 * p), 0.25), 0.5));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0.5));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-03-07 03:47:31 +0000
diff --git a/src/go.c b/src/go.c
index 98b98b56..f35d077c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,8 +239,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + 16 * 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.5));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0.5));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 0.75));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0.75));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-03-07 03:47:44 +0000
diff --git a/src/go.c b/src/go.c
index f35d077c..fa98e880 100644
--- a/src/go.c
+++ b/src/go.c
@@ -223,7 +223,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
-    double hz = 0.25 * bpm / 60;
+    double hz = 0.125 * bpm / 60;
     double p = phasor(&s->ephase, hz);
     double t = twopi * p;
     double co = cos(t);
diff @ 2018-03-07 03:47:56 +0000
diff --git a/src/go.c b/src/go.c
index fa98e880..22b49d28 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,8 +239,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + 16 * 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.75));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0.75));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 0.875));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0.875));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-03-07 03:48:01 +0000
diff --git a/src/go.c b/src/go.c
index 22b49d28..7fa6f21b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,8 +239,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms + 16 * 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.875));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0.875));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-03-07 03:48:14 +0000
diff --git a/src/go.c b/src/go.c
index 7fa6f21b..e59e6ac2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,7 +231,7 @@ go(S *s, int channels, const float *in, float *out)
     double ldelms = 60000 / bpm *
       ( wrap(2 * p) < 0.75
       ? wrap(p) < 0.5 ? 1./2 : 2./3
-      : wrap(p) < 0.5 ? 1./6 : 1./8);
+      : wrap(p) < 0.5 ? 1./64 : 1./8);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2018-03-07 03:48:26 +0000
diff --git a/src/go.c b/src/go.c
index e59e6ac2..5bc69093 100644
--- a/src/go.c
+++ b/src/go.c
@@ -229,7 +229,7 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm *
-      ( wrap(2 * p) < 0.75
+      ( wrap(2 * p) < 0.5
       ? wrap(p) < 0.5 ? 1./2 : 2./3
       : wrap(p) < 0.5 ? 1./64 : 1./8);
     double rdelms = ldelms;
diff @ 2018-03-07 03:49:05 +0000
diff --git a/src/go.c b/src/go.c
index 5bc69093..81eb1afb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,6 +232,10 @@ go(S *s, int channels, const float *in, float *out)
       ( wrap(2 * p) < 0.5
       ? wrap(p) < 0.5 ? 1./2 : 2./3
       : wrap(p) < 0.5 ? 1./64 : 1./8);
+    double ramp =
+      ( wrap(2 * p) < 0.5
+      ? wrap(p) < 0.5 ? 5 : 5
+      : wrap(p) < 0.5 ? 2 : 3);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2018-03-07 03:49:14 +0000
diff --git a/src/go.c b/src/go.c
index 81eb1afb..b0fcb017 100644
--- a/src/go.c
+++ b/src/go.c
@@ -237,8 +237,8 @@ go(S *s, int channels, const float *in, float *out)
       ? wrap(p) < 0.5 ? 5 : 5
       : wrap(p) < 0.5 ? 2 : 3);
     double rdelms = ldelms;
-    ldelms = lop(&s->elop[0], ldelms, 5);
-    rdelms = lop(&s->elop[1], rdelms, 5);
+    ldelms = lop(&s->elop[0], ldelms, ramp);
+    rdelms = lop(&s->elop[1], rdelms, ramp);
     double el = delread4(&s->edelay1, ldelms + 16 * co);
     double er = delread4(&s->edelay2, rdelms + 16 * si);
     double es[2] = { co * el + si * er, -si * el + co * er };
diff @ 2018-03-07 03:49:20 +0000
diff --git a/src/go.c b/src/go.c
index b0fcb017..ace173e4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -234,7 +234,7 @@ go(S *s, int channels, const float *in, float *out)
       : wrap(p) < 0.5 ? 1./64 : 1./8);
     double ramp =
       ( wrap(2 * p) < 0.5
-      ? wrap(p) < 0.5 ? 5 : 5
+      ? wrap(p) < 0.5 ? 5 : 4
       : wrap(p) < 0.5 ? 2 : 3);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
diff @ 2018-03-07 03:49:31 +0000
diff --git a/src/go.c b/src/go.c
index ace173e4..2e6aa0f0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -234,7 +234,7 @@ go(S *s, int channels, const float *in, float *out)
       : wrap(p) < 0.5 ? 1./64 : 1./8);
     double ramp =
       ( wrap(2 * p) < 0.5
-      ? wrap(p) < 0.5 ? 5 : 4
+      ? wrap(p) < 0.5 ? 15 : 4
       : wrap(p) < 0.5 ? 2 : 3);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
diff @ 2018-03-07 03:49:45 +0000
diff --git a/src/go.c b/src/go.c
index 2e6aa0f0..1df8dc64 100644
--- a/src/go.c
+++ b/src/go.c
@@ -235,7 +235,7 @@ go(S *s, int channels, const float *in, float *out)
     double ramp =
       ( wrap(2 * p) < 0.5
       ? wrap(p) < 0.5 ? 15 : 4
-      : wrap(p) < 0.5 ? 2 : 3);
+      : wrap(p) < 0.5 ? 2 : 12);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
diff @ 2018-03-07 03:49:47 +0000
diff --git a/src/go.c b/src/go.c
index 1df8dc64..53a124de 100644
--- a/src/go.c
+++ b/src/go.c
@@ -235,7 +235,7 @@ go(S *s, int channels, const float *in, float *out)
     double ramp =
       ( wrap(2 * p) < 0.5
       ? wrap(p) < 0.5 ? 15 : 4
-      : wrap(p) < 0.5 ? 2 : 12);
+      : wrap(p) < 0.5 ? 2 : 10);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
diff @ 2018-03-07 03:50:06 +0000
diff --git a/src/go.c b/src/go.c
index 53a124de..8267c8be 100644
--- a/src/go.c
+++ b/src/go.c
@@ -230,7 +230,7 @@ go(S *s, int channels, const float *in, float *out)
     double si = sin(t);
     double ldelms = 60000 / bpm *
       ( wrap(2 * p) < 0.5
-      ? wrap(p) < 0.5 ? 1./2 : 2./3
+      ? wrap(p) < 0.5 ? 2./5 : 2./3
       : wrap(p) < 0.5 ? 1./64 : 1./8);
     double ramp =
       ( wrap(2 * p) < 0.5
diff @ 2018-03-07 03:50:11 +0000
diff --git a/src/go.c b/src/go.c
index 8267c8be..69966c87 100644
--- a/src/go.c
+++ b/src/go.c
@@ -229,7 +229,7 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm *
-      ( wrap(2 * p) < 0.5
+      ( wrap(2 * p) < 0.75
       ? wrap(p) < 0.5 ? 2./5 : 2./3
       : wrap(p) < 0.5 ? 1./64 : 1./8);
     double ramp =
diff @ 2018-03-07 03:50:28 +0000
diff --git a/src/go.c b/src/go.c
index 69966c87..e8ff1bef 100644
--- a/src/go.c
+++ b/src/go.c
@@ -229,9 +229,9 @@ go(S *s, int channels, const float *in, float *out)
     double co = cos(t);
     double si = sin(t);
     double ldelms = 60000 / bpm *
-      ( wrap(2 * p) < 0.75
-      ? wrap(p) < 0.5 ? 2./5 : 2./3
-      : wrap(p) < 0.5 ? 1./64 : 1./8);
+      ( wrap(p) < 0.75
+      ? wrap(2*p) < 0.5 ? 2./5 : 2./3
+      : wrap(2*p) < 0.5 ? 1./64 : 1./8);
     double ramp =
       ( wrap(2 * p) < 0.5
       ? wrap(p) < 0.5 ? 15 : 4
diff @ 2018-03-07 03:50:42 +0000
diff --git a/src/go.c b/src/go.c
index e8ff1bef..cd9e5fa1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -233,9 +233,9 @@ go(S *s, int channels, const float *in, float *out)
       ? wrap(2*p) < 0.5 ? 2./5 : 2./3
       : wrap(2*p) < 0.5 ? 1./64 : 1./8);
     double ramp =
-      ( wrap(2 * p) < 0.5
-      ? wrap(p) < 0.5 ? 15 : 4
-      : wrap(p) < 0.5 ? 2 : 10);
+      ( wrap(p) < 0.5
+      ? wrap(2*p) < 0.5 ? 15 : 4
+      : wrap(2*p) < 0.5 ? 2 : 10);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
diff @ 2018-03-07 03:50:47 +0000
diff --git a/src/go.c b/src/go.c
index cd9e5fa1..dbd32d17 100644
--- a/src/go.c
+++ b/src/go.c
@@ -233,7 +233,7 @@ go(S *s, int channels, const float *in, float *out)
       ? wrap(2*p) < 0.5 ? 2./5 : 2./3
       : wrap(2*p) < 0.5 ? 1./64 : 1./8);
     double ramp =
-      ( wrap(p) < 0.5
+      ( wrap(p) < 0.75
       ? wrap(2*p) < 0.5 ? 15 : 4
       : wrap(2*p) < 0.5 ? 2 : 10);
     double rdelms = ldelms;
diff @ 2018-03-07 03:51:01 +0000
diff --git a/src/go.c b/src/go.c
index dbd32d17..9633f2f8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -236,7 +236,7 @@ go(S *s, int channels, const float *in, float *out)
       ( wrap(p) < 0.75
       ? wrap(2*p) < 0.5 ? 15 : 4
       : wrap(2*p) < 0.5 ? 2 : 10);
-    double rdelms = ldelms;
+    double rdelms = 2 * ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
     double el = delread4(&s->edelay1, ldelms + 16 * co);
diff @ 2018-03-07 03:51:30 +0000
diff --git a/src/go.c b/src/go.c
index 9633f2f8..97c1d722 100644
--- a/src/go.c
+++ b/src/go.c
@@ -236,7 +236,7 @@ go(S *s, int channels, const float *in, float *out)
       ( wrap(p) < 0.75
       ? wrap(2*p) < 0.5 ? 15 : 4
       : wrap(2*p) < 0.5 ? 2 : 10);
-    double rdelms = 2 * ldelms;
+    double rdelms = 1.5 * ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
     double el = delread4(&s->edelay1, ldelms + 16 * co);
diff @ 2018-03-07 03:51:37 +0000
diff --git a/src/go.c b/src/go.c
index 97c1d722..dbd32d17 100644
--- a/src/go.c
+++ b/src/go.c
@@ -236,7 +236,7 @@ go(S *s, int channels, const float *in, float *out)
       ( wrap(p) < 0.75
       ? wrap(2*p) < 0.5 ? 15 : 4
       : wrap(2*p) < 0.5 ? 2 : 10);
-    double rdelms = 1.5 * ldelms;
+    double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
     double el = delread4(&s->edelay1, ldelms + 16 * co);
diff @ 2018-03-07 03:51:57 +0000
diff --git a/src/go.c b/src/go.c
index dbd32d17..79397ab4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,8 +239,8 @@ go(S *s, int channels, const float *in, float *out)
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
-    double el = delread4(&s->edelay1, ldelms + 16 * co);
-    double er = delread4(&s->edelay2, rdelms + 16 * si);
+    double el = delread4(&s->edelay1, ldelms * (1 + co));
+    double er = delread4(&s->edelay2, rdelms * (1 + si));
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 1));
diff @ 2018-03-07 03:52:33 +0000
diff --git a/src/go.c b/src/go.c
index 79397ab4..b6bf5524 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,8 +239,8 @@ go(S *s, int channels, const float *in, float *out)
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
-    double el = delread4(&s->edelay1, ldelms * (1 + co));
-    double er = delread4(&s->edelay2, rdelms * (1 + si));
+    double el = delread4(&s->edelay1, ldelms * (1 + co) + 1);
+    double er = delread4(&s->edelay2, rdelms * (1 + si) + 1);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 1));
diff @ 2018-03-07 03:52:52 +0000
diff --git a/src/go.c b/src/go.c
index b6bf5524..f80ccc0c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,8 +239,8 @@ go(S *s, int channels, const float *in, float *out)
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
-    double el = delread4(&s->edelay1, ldelms * (1 + co) + 1);
-    double er = delread4(&s->edelay2, rdelms * (1 + si) + 1);
+    double el = delread4(&s->edelay1, ldelms * (1 + 0.125 * co) + 1);
+    double er = delread4(&s->edelay2, rdelms * (1 + 0.125 * si) + 1);
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 1));
diff @ 2018-03-07 03:52:57 +0000
diff --git a/src/go.c b/src/go.c
index f80ccc0c..40e8543e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,8 +239,8 @@ go(S *s, int channels, const float *in, float *out)
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
-    double el = delread4(&s->edelay1, ldelms * (1 + 0.125 * co) + 1);
-    double er = delread4(&s->edelay2, rdelms * (1 + 0.125 * si) + 1);
+    double el = delread4(&s->edelay1, ldelms * (1 + 0.125 * co));
+    double er = delread4(&s->edelay2, rdelms * (1 + 0.125 * si));
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 1));
diff @ 2018-03-07 03:53:02 +0000
diff --git a/src/go.c b/src/go.c
index 40e8543e..a09560dd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,8 +239,8 @@ go(S *s, int channels, const float *in, float *out)
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
-    double el = delread4(&s->edelay1, ldelms * (1 + 0.125 * co));
-    double er = delread4(&s->edelay2, rdelms * (1 + 0.125 * si));
+    double el = delread4(&s->edelay1, ldelms * (1 + 0.25 * co));
+    double er = delread4(&s->edelay2, rdelms * (1 + 0.25 * si));
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 1));
diff @ 2018-03-07 03:53:09 +0000
diff --git a/src/go.c b/src/go.c
index a09560dd..c59f6449 100644
--- a/src/go.c
+++ b/src/go.c
@@ -243,8 +243,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms * (1 + 0.25 * si));
     double es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 1));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.5), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.5), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-03-07 03:53:18 +0000
diff --git a/src/go.c b/src/go.c
index c59f6449..9b1c67fc 100644
--- a/src/go.c
+++ b/src/go.c
@@ -243,8 +243,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms * (1 + 0.25 * 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.5), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.5), 1));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.125), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.125), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-03-07 03:53:40 +0000
diff --git a/src/go.c b/src/go.c
index 9b1c67fc..30cf1596 100644
--- a/src/go.c
+++ b/src/go.c
@@ -243,8 +243,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms * (1 + 0.25 * 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.125), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.125), 1));
+    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-03-07 03:53:59 +0000
diff --git a/src/go.c b/src/go.c
index 30cf1596..1a392f63 100644
--- a/src/go.c
+++ b/src/go.c
@@ -234,7 +234,7 @@ go(S *s, int channels, const float *in, float *out)
       : wrap(2*p) < 0.5 ? 1./64 : 1./8);
     double ramp =
       ( wrap(p) < 0.75
-      ? wrap(2*p) < 0.5 ? 15 : 4
+      ? wrap(2*p) < 0.5 ? 5 : 4
       : wrap(2*p) < 0.5 ? 2 : 10);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
diff @ 2018-03-07 03:54:03 +0000
diff --git a/src/go.c b/src/go.c
index 1a392f63..e6186bae 100644
--- a/src/go.c
+++ b/src/go.c
@@ -235,7 +235,7 @@ go(S *s, int channels, const float *in, float *out)
     double ramp =
       ( wrap(p) < 0.75
       ? wrap(2*p) < 0.5 ? 5 : 4
-      : wrap(2*p) < 0.5 ? 2 : 10);
+      : wrap(2*p) < 0.5 ? 2 : 6);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
diff @ 2018-03-07 03:54:15 +0000
diff --git a/src/go.c b/src/go.c
index e6186bae..97a25179 100644
--- a/src/go.c
+++ b/src/go.c
@@ -235,7 +235,7 @@ go(S *s, int channels, const float *in, float *out)
     double ramp =
       ( wrap(p) < 0.75
       ? wrap(2*p) < 0.5 ? 5 : 4
-      : wrap(2*p) < 0.5 ? 2 : 6);
+      : wrap(2*p) < 0.5 ? 1 : 6);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
diff @ 2018-03-07 03:54:35 +0000
diff --git a/src/go.c b/src/go.c
index 97a25179..ea813a77 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,8 +239,8 @@ go(S *s, int channels, const float *in, float *out)
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
-    double el = delread4(&s->edelay1, ldelms * (1 + 0.25 * co));
-    double er = delread4(&s->edelay2, rdelms * (1 + 0.25 * si));
+    double el = delread4(&s->edelay1, ldelms * (1 + 0.125 * co));
+    double er = delread4(&s->edelay2, rdelms * (1 + 0.125 * 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(1, pow(wrap(8 * p), 0.25), 0));
diff @ 2018-03-07 03:54:46 +0000
diff --git a/src/go.c b/src/go.c
index ea813a77..c159fa8f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -239,8 +239,8 @@ go(S *s, int channels, const float *in, float *out)
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
-    double el = delread4(&s->edelay1, ldelms * (1 + 0.125 * co));
-    double er = delread4(&s->edelay2, rdelms * (1 + 0.125 * si));
+    double el = delread4(&s->edelay1, ldelms * (1 + 0.0625 * co));
+    double er = delread4(&s->edelay2, rdelms * (1 + 0.0625 * 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(1, pow(wrap(8 * p), 0.25), 0));
diff @ 2018-03-07 03:55:01 +0000
diff --git a/src/go.c b/src/go.c
index c159fa8f..0b4ef27a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -243,8 +243,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms * (1 + 0.0625 * 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(1, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.25), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.25), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-03-07 03:55:07 +0000
diff --git a/src/go.c b/src/go.c
index 0b4ef27a..5dabba02 100644
--- a/src/go.c
+++ b/src/go.c
@@ -243,8 +243,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms * (1 + 0.0625 * 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(1, pow(wrap(8 * p), 0.25), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.25), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.125), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.125), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-03-07 03:55:13 +0000
diff --git a/src/go.c b/src/go.c
index 5dabba02..358895a8 100644
--- a/src/go.c
+++ b/src/go.c
@@ -243,8 +243,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms * (1 + 0.0625 * 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(1, pow(wrap(8 * p), 0.125), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.125), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(4 * p), 0.125), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(4 * p), 0.125), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2018-03-07 03:55:45 +0000
diff --git a/src/go.c b/src/go.c
index 358895a8..de292e4a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,11 +231,11 @@ go(S *s, int channels, const float *in, float *out)
     double ldelms = 60000 / bpm *
       ( wrap(p) < 0.75
       ? wrap(2*p) < 0.5 ? 2./5 : 2./3
-      : wrap(2*p) < 0.5 ? 1./64 : 1./8);
+      : wrap(4*p) < 0.5 ? 1./64 : 1./8);
     double ramp =
       ( wrap(p) < 0.75
       ? wrap(2*p) < 0.5 ? 5 : 4
-      : wrap(2*p) < 0.5 ? 1 : 6);
+      : wrap(4*p) < 0.5 ? 1 : 6);
     double rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, ramp);
     rdelms = lop(&s->elop[1], rdelms, ramp);
diff @ 2018-03-07 03:56:13 +0000
diff --git a/src/go.c b/src/go.c
index de292e4a..4e7a4c5d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -170,7 +170,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 = 1;
+    double gain = -;
     gain = samphold(&s->tgate[1], gain, p);
     tilex[0] *= gain;
     tilex[1] *= gain;
diff @ 2018-03-07 03:56:14 +0000
diff --git a/src/go.c b/src/go.c
index 4e7a4c5d..fa47661e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -170,7 +170,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 = -;
+    double gain = 0;
     gain = samphold(&s->tgate[1], gain, p);
     tilex[0] *= gain;
     tilex[1] *= gain;
diff @ 2018-03-07 03:56:30 +0000
diff --git a/src/go.c b/src/go.c
index fa47661e..17f9bb3b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -107,7 +107,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 + 4 * (n >= 0xC001)) * probability - 0.5;
+    probability = (4 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-03-07 03:56:36 +0000
diff --git a/src/go.c b/src/go.c
index 17f9bb3b..44b69df6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -107,7 +107,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 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (8 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-03-07 03:56:40 +0000
diff --git a/src/go.c b/src/go.c
index 44b69df6..ca9b412a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -107,7 +107,7 @@ go(S *s, int channels, const float *in, float *out)
     int n = (time / 5) & ((1 << N) - 1);
     double zeroes = clamp(count_trailing_zeroes(n), 0, N);
     double probability = pow(0.5, N - zeroes);
-    probability = (8 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (1 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-03-07 03:56:50 +0000
diff --git a/src/go.c b/src/go.c
index ca9b412a..3f6d05e6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -107,7 +107,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 = (1 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (2 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     double uniform = rand() / (double) RAND_MAX;
     double trigger = uniform < probability;
diff @ 2018-03-07 03:57:14 +0000
diff --git a/src/go.c b/src/go.c
index 3f6d05e6..f578e006 100644
--- a/src/go.c
+++ b/src/go.c
@@ -85,6 +85,7 @@ typedef struct
   float edelay2buf[4 * SR];
   LOP elop[2];
   PHASOR ephase;
+  SAMPHOLD esh[4];
 
 } S;
 
diff @ 2018-03-07 03:58:11 +0000
diff --git a/src/go.c b/src/go.c
index f578e006..ba395137 100644
--- a/src/go.c
+++ b/src/go.c
@@ -232,7 +232,7 @@ go(S *s, int channels, const float *in, float *out)
     double ldelms = 60000 / bpm *
       ( wrap(p) < 0.75
       ? wrap(2*p) < 0.5 ? 2./5 : 2./3
-      : wrap(4*p) < 0.5 ? 1./64 : 1./8);
+      : wrap(4*p) < 0.5 ? samphold(&s->esh[0], 1./(1 << (rand()&7)), 1) : 1./8);
     double ramp =
       ( wrap(p) < 0.75
       ? wrap(2*p) < 0.5 ? 5 : 4
diff @ 2018-03-07 03:59:02 +0000
diff --git a/src/go.c b/src/go.c
index ba395137..8b200113 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,8 +231,11 @@ go(S *s, int channels, const float *in, float *out)
     double si = sin(t);
     double ldelms = 60000 / bpm *
       ( wrap(p) < 0.75
-      ? wrap(2*p) < 0.5 ? 2./5 : 2./3
-      : wrap(4*p) < 0.5 ? samphold(&s->esh[0], 1./(1 << (rand()&7)), 1) : 1./8);
+      ? wrap(2*p) < 0.5 ? samphold(&s->esh[0], 1./(1 << (rand()&7)), 1)
+                        : samphold(&s->esh[1], 1./(1 +  (rand()&7)), 1)
+      : wrap(4*p) < 0.5 ? samphold(&s->esh[2], 1./(1 << (rand()&7)), 1)
+                        : samphold(&s->esh[3], 1./(1 +  (rand()&7)), 1)
+      );
     double ramp =
       ( wrap(p) < 0.75
       ? wrap(2*p) < 0.5 ? 5 : 4
diff @ 2018-03-07 03:59:06 +0000
diff --git a/src/go.c b/src/go.c
index 8b200113..f9685dab 100644
--- a/src/go.c
+++ b/src/go.c
@@ -231,10 +231,10 @@ go(S *s, int channels, const float *in, float *out)
     double si = sin(t);
     double ldelms = 60000 / bpm *
       ( wrap(p) < 0.75
-      ? wrap(2*p) < 0.5 ? samphold(&s->esh[0], 1./(1 << (rand()&7)), 1)
-                        : samphold(&s->esh[1], 1./(1 +  (rand()&7)), 1)
-      : wrap(4*p) < 0.5 ? samphold(&s->esh[2], 1./(1 << (rand()&7)), 1)
-                        : samphold(&s->esh[3], 1./(1 +  (rand()&7)), 1)
+      ? wrap(2*p) < 0.5 ? samphold(&s->esh[0], 1./(1 << (rand()&7)), p)
+                        : samphold(&s->esh[1], 1./(1 +  (rand()&7)), p)
+      : wrap(4*p) < 0.5 ? samphold(&s->esh[2], 1./(1 << (rand()&7)), p)
+                        : samphold(&s->esh[3], 1./(1 +  (rand()&7)), p)
       );
     double ramp =
       ( wrap(p) < 0.75
diff @ 2018-03-07 04:00:05 +0000
diff --git a/src/go.c b/src/go.c
index f9685dab..f8a613fa 100644
--- a/src/go.c
+++ b/src/go.c
@@ -247,8 +247,8 @@ go(S *s, int channels, const float *in, float *out)
     double er = delread4(&s->edelay2, rdelms * (1 + 0.0625 * 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(1, pow(wrap(4 * p), 0.125), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(4 * p), 0.125), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(p), 0.125), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(p), 0.125), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);

the end