session-2019-11-23-191709

clive

a C audio live-coding skeleton

(audio starts 0:37)

diff @ 2019-11-23 19:18:20 +0000
diff --git a/client/go.c b/client/go.c
index 0cdda438e..8ec0a9107 100644
--- a/client/go.c
+++ b/client/go.c
@@ -133,7 +133,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
 ///{{{ SEA ORGAN 2.2
   {
-    sample RESET = 1;
+    sample RESET = 0;
     sample so2[2] = { 0, 0 };
     // trigger impulse on reload
     sample impulse[2] = { s->reloaded, s->reloaded };
diff @ 2019-11-23 19:18:35 +0000
diff --git a/client/go.c b/client/go.c
index 8ec0a9107..2e0094745 100644
--- a/client/go.c
+++ b/client/go.c
@@ -159,7 +159,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 20, 500,
+     so2echo(&s->so2.echo[c], 20, 1000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:18:42 +0000
diff --git a/client/go.c b/client/go.c
index 2e0094745..5927c75ba 100644
--- a/client/go.c
+++ b/client/go.c
@@ -159,7 +159,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 20, 1000,
+     so2echo(&s->so2.echo[c], 20, 1500,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:18:45 +0000
diff --git a/client/go.c b/client/go.c
index 5927c75ba..597dbd726 100644
--- a/client/go.c
+++ b/client/go.c
@@ -159,7 +159,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 20, 1500,
+     so2echo(&s->so2.echo[c], 20, 2000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:19:01 +0000
diff --git a/client/go.c b/client/go.c
index 597dbd726..263febadb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -159,7 +159,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 20, 2000,
+     so2echo(&s->so2.echo[c], 20, 3000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:19:03 +0000
diff --git a/client/go.c b/client/go.c
index 263febadb..ac5f6b2a5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -159,7 +159,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 20, 3000,
+     so2echo(&s->so2.echo[c], 20, 4000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:19:11 +0000
diff --git a/client/go.c b/client/go.c
index ac5f6b2a5..ae504949f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -139,7 +139,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0 * cos(twopi * p);
+    sample modulation = 0.0001 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation)
       , delread4(&s->so2.echo[0].del, 2 * ms4 + modulation)
diff @ 2019-11-23 19:19:22 +0000
diff --git a/client/go.c b/client/go.c
index ae504949f..44ef868e6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -139,7 +139,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.0001 * cos(twopi * p);
+    sample modulation = 0.001 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation)
       , delread4(&s->so2.echo[0].del, 2 * ms4 + modulation)
diff @ 2019-11-23 19:19:31 +0000
diff --git a/client/go.c b/client/go.c
index 44ef868e6..d8edb857a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -139,7 +139,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.001 * cos(twopi * p);
+    sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation)
       , delread4(&s->so2.echo[0].del, 2 * ms4 + modulation)
diff @ 2019-11-23 19:19:37 +0000
diff --git a/client/go.c b/client/go.c
index d8edb857a..e5d246e83 100644
--- a/client/go.c
+++ b/client/go.c
@@ -139,7 +139,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.01 * cos(twopi * p);
+    sample modulation = 0.1 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation)
       , delread4(&s->so2.echo[0].del, 2 * ms4 + modulation)
diff @ 2019-11-23 19:19:58 +0000
diff --git a/client/go.c b/client/go.c
index e5d246e83..25cb4ae74 100644
--- a/client/go.c
+++ b/client/go.c
@@ -139,10 +139,11 @@ int go(S *s, int channels, const float *in, float *out) {
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.1 * cos(twopi * p);
+    sample modulation1 = 0.1 * cos(twopi * p);
+    sample modulation2 = 0.1 * sin(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation)
-      , delread4(&s->so2.echo[0].del, 2 * ms4 + modulation)
+      { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation1)
+      , delread4(&s->so2.echo[0].del, 2 * ms4 + modulation2)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-11-23 19:20:07 +0000
diff --git a/client/go.c b/client/go.c
index 25cb4ae74..590994419 100644
--- a/client/go.c
+++ b/client/go.c
@@ -139,8 +139,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation1 = 0.1 * cos(twopi * p);
-    sample modulation2 = 0.1 * sin(twopi * p);
+    sample modulation1 = 1 * cos(twopi * p);
+    sample modulation2 = 1 * sin(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation1)
       , delread4(&s->so2.echo[0].del, 2 * ms4 + modulation2)
diff @ 2019-11-23 19:20:18 +0000
diff --git a/client/go.c b/client/go.c
index 590994419..a0e9a74a7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -139,8 +139,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation1 = 1 * cos(twopi * p);
-    sample modulation2 = 1 * sin(twopi * p);
+    sample modulation1 = 10 * cos(twopi * p);
+    sample modulation2 = 10 * sin(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation1)
       , delread4(&s->so2.echo[0].del, 2 * ms4 + modulation2)
diff @ 2019-11-23 19:20:40 +0000
diff --git a/client/go.c b/client/go.c
index a0e9a74a7..d95113a9e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -148,9 +148,9 @@ int go(S *s, int channels, const float *in, float *out) {
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[c][0], 1, ms4,
-        lop(&s->so2.lag[c][0], -12, 1e-3), feedback[c]);
+        lop(&s->so2.lag[c][0], -12, 1e-2), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
-        lop(&s->so2.lag[c][1],  19, 1e-3), down);
+        lop(&s->so2.lag[c][1],  19, 1e-2), down);
       feedback[c] = 2 * feedback[c] - down - up;
     }
     // compress feedback
diff @ 2019-11-23 19:20:59 +0000
diff --git a/client/go.c b/client/go.c
index d95113a9e..c42fe05ef 100644
--- a/client/go.c
+++ b/client/go.c
@@ -147,9 +147,9 @@ int go(S *s, int channels, const float *in, float *out) {
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[c][0], 1, ms4,
+      sample down = pitchshift(&s->so2.shift[c][0], 1, ms4/2,
         lop(&s->so2.lag[c][0], -12, 1e-2), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
+      sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/2,
         lop(&s->so2.lag[c][1],  19, 1e-2), down);
       feedback[c] = 2 * feedback[c] - down - up;
     }
diff @ 2019-11-23 19:21:11 +0000
diff --git a/client/go.c b/client/go.c
index c42fe05ef..0c007d01e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -147,9 +147,9 @@ int go(S *s, int channels, const float *in, float *out) {
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[c][0], 1, ms4/2,
+      sample down = pitchshift(&s->so2.shift[c][0], 1, ms4/4,
         lop(&s->so2.lag[c][0], -12, 1e-2), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/2,
+      sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/4,
         lop(&s->so2.lag[c][1],  19, 1e-2), down);
       feedback[c] = 2 * feedback[c] - down - up;
     }
diff @ 2019-11-23 19:21:21 +0000
diff --git a/client/go.c b/client/go.c
index 0c007d01e..e9300ff7b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -150,7 +150,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample down = pitchshift(&s->so2.shift[c][0], 1, ms4/4,
         lop(&s->so2.lag[c][0], -12, 1e-2), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/4,
-        lop(&s->so2.lag[c][1],  19, 1e-2), down);
+        lop(&s->so2.lag[c][1],  12, 1e-2), down);
       feedback[c] = 2 * feedback[c] - down - up;
     }
     // compress feedback
diff @ 2019-11-23 19:21:37 +0000
diff --git a/client/go.c b/client/go.c
index e9300ff7b..0edf68d4c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -160,7 +160,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 20, 4000,
+     so2echo(&s->so2.echo[c], 30, 4000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:21:42 +0000
diff --git a/client/go.c b/client/go.c
index 0edf68d4c..8788e7516 100644
--- a/client/go.c
+++ b/client/go.c
@@ -160,7 +160,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 30, 4000,
+     so2echo(&s->so2.echo[c], 40, 4000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:21:52 +0000
diff --git a/client/go.c b/client/go.c
index 8788e7516..839245a4e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -151,7 +151,7 @@ int go(S *s, int channels, const float *in, float *out) {
         lop(&s->so2.lag[c][0], -12, 1e-2), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/4,
         lop(&s->so2.lag[c][1],  12, 1e-2), down);
-      feedback[c] = 2 * feedback[c] - down - up;
+      feedback[c] = sin(2 * feedback[c] - down - up);
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-11-23 19:22:00 +0000
diff --git a/client/go.c b/client/go.c
index 839245a4e..8c98e504e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -151,7 +151,7 @@ int go(S *s, int channels, const float *in, float *out) {
         lop(&s->so2.lag[c][0], -12, 1e-2), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/4,
         lop(&s->so2.lag[c][1],  12, 1e-2), down);
-      feedback[c] = sin(2 * feedback[c] - down - up);
+      feedback[c] = sin(pi * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-11-23 19:22:05 +0000
diff --git a/client/go.c b/client/go.c
index 8c98e504e..ab43bfe57 100644
--- a/client/go.c
+++ b/client/go.c
@@ -151,7 +151,7 @@ int go(S *s, int channels, const float *in, float *out) {
         lop(&s->so2.lag[c][0], -12, 1e-2), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/4,
         lop(&s->so2.lag[c][1],  12, 1e-2), down);
-      feedback[c] = sin(pi * (2 * feedback[c] - down - up));
+      feedback[c] = sin(pi/2 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-11-23 19:22:19 +0000
diff --git a/client/go.c b/client/go.c
index ab43bfe57..89e2638dd 100644
--- a/client/go.c
+++ b/client/go.c
@@ -147,9 +147,9 @@ int go(S *s, int channels, const float *in, float *out) {
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[c][0], 1, ms4/4,
+      sample down = pitchshift(&s->so2.shift[c][0], 1, ms4/8,
         lop(&s->so2.lag[c][0], -12, 1e-2), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/4,
+      sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/8,
         lop(&s->so2.lag[c][1],  12, 1e-2), down);
       feedback[c] = sin(pi/2 * (2 * feedback[c] - down - up));
     }
diff @ 2019-11-23 19:22:32 +0000
diff --git a/client/go.c b/client/go.c
index 89e2638dd..cdb4214cf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -139,8 +139,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation1 = 10 * cos(twopi * p);
-    sample modulation2 = 10 * sin(twopi * p);
+    sample modulation1 = 1 * cos(twopi * p);
+    sample modulation2 = 1 * sin(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation1)
       , delread4(&s->so2.echo[0].del, 2 * ms4 + modulation2)
diff @ 2019-11-23 19:22:43 +0000
diff --git a/client/go.c b/client/go.c
index cdb4214cf..77e6e316c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -142,8 +142,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample modulation1 = 1 * cos(twopi * p);
     sample modulation2 = 1 * sin(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation1)
-      , delread4(&s->so2.echo[0].del, 2 * ms4 + modulation2)
+      { delread4(&s->so2.echo[1].del, 2 * ms4/4 - modulation1)
+      , delread4(&s->so2.echo[0].del, 2 * ms4/4 + modulation2)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-11-23 19:22:55 +0000
diff --git a/client/go.c b/client/go.c
index 77e6e316c..4c89b2cfc 100644
--- a/client/go.c
+++ b/client/go.c
@@ -142,8 +142,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample modulation1 = 1 * cos(twopi * p);
     sample modulation2 = 1 * sin(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 2 * ms4/4 - modulation1)
-      , delread4(&s->so2.echo[0].del, 2 * ms4/4 + modulation2)
+      { delread4(&s->so2.echo[1].del, ms4/4 - modulation1)
+      , delread4(&s->so2.echo[0].del, ms4/4 + modulation2)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-11-23 19:23:16 +0000
diff --git a/client/go.c b/client/go.c
index 4c89b2cfc..2666fd995 100644
--- a/client/go.c
+++ b/client/go.c
@@ -142,8 +142,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample modulation1 = 1 * cos(twopi * p);
     sample modulation2 = 1 * sin(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4/4 - modulation1)
-      , delread4(&s->so2.echo[0].del, ms4/4 + modulation2)
+      { delread4(&s->so2.echo[1].del, ms4/8 - modulation1)
+      , delread4(&s->so2.echo[0].del, ms4/8 + modulation2)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-11-23 19:23:31 +0000
diff --git a/client/go.c b/client/go.c
index 2666fd995..9dd0ceebe 100644
--- a/client/go.c
+++ b/client/go.c
@@ -148,9 +148,9 @@ int go(S *s, int channels, const float *in, float *out) {
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[c][0], 1, ms4/8,
-        lop(&s->so2.lag[c][0], -12, 1e-2), feedback[c]);
+        lop(&s->so2.lag[c][0], -19, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/8,
-        lop(&s->so2.lag[c][1],  12, 1e-2), down);
+        lop(&s->so2.lag[c][1],  12, 1e-3), down);
       feedback[c] = sin(pi/2 * (2 * feedback[c] - down - up));
     }
     // compress feedback
diff @ 2019-11-23 19:23:43 +0000
diff --git a/client/go.c b/client/go.c
index 9dd0ceebe..142ad5a59 100644
--- a/client/go.c
+++ b/client/go.c
@@ -150,7 +150,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample down = pitchshift(&s->so2.shift[c][0], 1, ms4/8,
         lop(&s->so2.lag[c][0], -19, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/8,
-        lop(&s->so2.lag[c][1],  12, 1e-3), down);
+        lop(&s->so2.lag[c][1],  19, 1e-3), down);
       feedback[c] = sin(pi/2 * (2 * feedback[c] - down - up));
     }
     // compress feedback
diff @ 2019-11-23 19:23:53 +0000
diff --git a/client/go.c b/client/go.c
index 142ad5a59..b65f39e3a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -160,7 +160,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 40, 4000,
+     so2echo(&s->so2.echo[c], 40, 8000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:23:58 +0000
diff --git a/client/go.c b/client/go.c
index b65f39e3a..aeb238aae 100644
--- a/client/go.c
+++ b/client/go.c
@@ -160,7 +160,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 40, 8000,
+     so2echo(&s->so2.echo[c], 80, 8000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:24:22 +0000
diff --git a/client/go.c b/client/go.c
index aeb238aae..bed373aa8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -160,7 +160,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 80, 8000,
+     so2echo(&s->so2.echo[c], 80, 4000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:24:30 +0000
diff --git a/client/go.c b/client/go.c
index bed373aa8..698ed47ea 100644
--- a/client/go.c
+++ b/client/go.c
@@ -160,7 +160,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 80, 4000,
+     so2echo(&s->so2.echo[c], 80, 2000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:24:33 +0000
diff --git a/client/go.c b/client/go.c
index 698ed47ea..11ddcec84 100644
--- a/client/go.c
+++ b/client/go.c
@@ -160,7 +160,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 80, 2000,
+     so2echo(&s->so2.echo[c], 80, 1000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:24:35 +0000
diff --git a/client/go.c b/client/go.c
index 11ddcec84..3ec71db79 100644
--- a/client/go.c
+++ b/client/go.c
@@ -160,7 +160,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 80, 1000,
+     so2echo(&s->so2.echo[c], 80, 800,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:24:50 +0000
diff @ 2019-11-23 19:25:02 +0000
diff --git a/client/go.c b/client/go.c
index a2c4ddcb7..610e98018 100644
--- a/client/go.c
+++ b/client/go.c
@@ -200,7 +200,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 80, 800,
+     so2echo(&s->so2.echo[c], 160, 800,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:25:07 +0000
diff --git a/client/go.c b/client/go.c
index 610e98018..3adfb11fb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -200,7 +200,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 160, 800,
+     so2echo(&s->so2.echo[c], 200, 800,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:25:09 +0000
diff --git a/client/go.c b/client/go.c
index 3adfb11fb..780428d83 100644
--- a/client/go.c
+++ b/client/go.c
@@ -200,7 +200,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 200, 800,
+     so2echo(&s->so2.echo[c], 400, 800,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:25:14 +0000
diff --git a/client/go.c b/client/go.c
index 780428d83..4824e37de 100644
--- a/client/go.c
+++ b/client/go.c
@@ -200,7 +200,7 @@ int go(S *s, int channels, const float *in, float *out) {
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 400, 800,
+     so2echo(&s->so2.echo[c], 400, 400,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-11-23 19:25:17 +0000
diff --git a/client/go.c b/client/go.c
index 4824e37de..4ba7c515b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -195,7 +195,7 @@ int go(S *s, int channels, const float *in, float *out) {
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
-    sample gain = 1;
+    sample gain = 0.1;
     so2[0] *= gain;
     so2[1] *= gain;
     // write to delay lines
diff @ 2019-11-23 19:25:42 +0000
diff --git a/client/go.c b/client/go.c
index 4ba7c515b..93cc0e5f4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -326,7 +326,7 @@ int go(S *s, int channels, const float *in, float *out) {
     // kick
     sample k = (1 - wrap(4 * q)) * (1 - wrap((6 <= b && b < 9.5 ? 12 : 11 <= b ? 8 : 16) * q));
     k *= k;
-    k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
+    k *= 10 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
     k = sin(pi * sin(k));
     mixdown[0] += k;
diff @ 2019-11-23 19:25:47 +0000
diff --git a/client/go.c b/client/go.c
index 93cc0e5f4..4ba7c515b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -326,7 +326,7 @@ int go(S *s, int channels, const float *in, float *out) {
     // kick
     sample k = (1 - wrap(4 * q)) * (1 - wrap((6 <= b && b < 9.5 ? 12 : 11 <= b ? 8 : 16) * q));
     k *= k;
-    k *= 10 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
+    k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
     k = sin(pi * sin(k));
     mixdown[0] += k;
diff @ 2019-11-23 19:25:51 +0000
diff --git a/client/go.c b/client/go.c
index 4ba7c515b..58b19a5b2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -326,7 +326,7 @@ int go(S *s, int channels, const float *in, float *out) {
     // kick
     sample k = (1 - wrap(4 * q)) * (1 - wrap((6 <= b && b < 9.5 ? 12 : 11 <= b ? 8 : 16) * q));
     k *= k;
-    k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
+    k *= 8 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
     k = sin(pi * sin(k));
     mixdown[0] += k;
diff @ 2019-11-23 19:25:54 +0000
diff --git a/client/go.c b/client/go.c
index 58b19a5b2..4ba7c515b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -326,7 +326,7 @@ int go(S *s, int channels, const float *in, float *out) {
     // kick
     sample k = (1 - wrap(4 * q)) * (1 - wrap((6 <= b && b < 9.5 ? 12 : 11 <= b ? 8 : 16) * q));
     k *= k;
-    k *= 8 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
+    k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
     k = sin(pi * sin(k));
     mixdown[0] += k;
diff @ 2019-11-23 19:26:06 +0000
diff --git a/client/go.c b/client/go.c
index 4ba7c515b..1f0a260af 100644
--- a/client/go.c
+++ b/client/go.c
@@ -326,6 +326,7 @@ int go(S *s, int channels, const float *in, float *out) {
     // kick
     sample k = (1 - wrap(4 * q)) * (1 - wrap((6 <= b && b < 9.5 ? 12 : 11 <= b ? 8 : 16) * q));
     k *= k;
+    k *= k;
     k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
     k = sin(pi * sin(k));
diff @ 2019-11-23 19:26:10 +0000
diff --git a/client/go.c b/client/go.c
index 1f0a260af..4ba7c515b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -326,7 +326,6 @@ int go(S *s, int channels, const float *in, float *out) {
     // kick
     sample k = (1 - wrap(4 * q)) * (1 - wrap((6 <= b && b < 9.5 ? 12 : 11 <= b ? 8 : 16) * q));
     k *= k;
-    k *= k;
     k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
     k = sin(pi * sin(k));
diff @ 2019-11-23 19:26:25 +0000
diff --git a/client/go.c b/client/go.c
index 4ba7c515b..0df471cd3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -328,7 +328,7 @@ int go(S *s, int channels, const float *in, float *out) {
     k *= k;
     k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
-    k = sin(pi * sin(k));
+    k = tanh(k / 30 * sin(pi * sin(k)));
     mixdown[0] += k;
     mixdown[1] += k;
     // snare
diff @ 2019-11-23 19:26:30 +0000
diff --git a/client/go.c b/client/go.c
index 0df471cd3..a0a10007a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -328,7 +328,7 @@ int go(S *s, int channels, const float *in, float *out) {
     k *= k;
     k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
-    k = tanh(k / 30 * sin(pi * sin(k)));
+    k = tanh(2 *k / 30 * sin(pi * sin(k)));
     mixdown[0] += k;
     mixdown[1] += k;
     // snare
diff @ 2019-11-23 19:26:31 +0000
diff --git a/client/go.c b/client/go.c
index a0a10007a..28c81fc9f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -328,7 +328,7 @@ int go(S *s, int channels, const float *in, float *out) {
     k *= k;
     k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
-    k = tanh(2 *k / 30 * sin(pi * sin(k)));
+    k = tanh(2 * k / 30 * sin(pi * sin(k)));
     mixdown[0] += k;
     mixdown[1] += k;
     // snare
diff @ 2019-11-23 19:27:16 +0000
diff --git a/client/go.c b/client/go.c
index 28c81fc9f..49c5b92ee 100644
--- a/client/go.c
+++ b/client/go.c
@@ -128,6 +128,7 @@ typedef struct {
 
 ///[[[ MILITARY-INDUSTRIAL COMPLEX
   MICPLX micplx;
+  BIQUAD kickres;
 ///]]] MILITARY-INDUSTRIAL COMPLEX
 
 ///[[[ BINARAY /5
@@ -329,6 +330,7 @@ int go(S *s, int channels, const float *in, float *out) {
     k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
     k = tanh(2 * k / 30 * sin(pi * sin(k)));
+    k = biquad(highpass(&s->kickres, 40, 10), k);
     mixdown[0] += k;
     mixdown[1] += k;
     // snare
diff @ 2019-11-23 19:27:31 +0000
diff --git a/client/go.c b/client/go.c
index 49c5b92ee..6e0b3c2ce 100644
--- a/client/go.c
+++ b/client/go.c
@@ -234,7 +234,7 @@ int go(S *s, int channels, const float *in, float *out) {
       int t = s->micplx.tick++;
       int harmonic = 0;
       harmonic += "4484686684484488"[((t + 0) /  2) % (1 + ((int)clamp(b, 0, 8) & 15))]-'4';
-      harmonic += 4;
+      harmonic += 6;
       double _Complex z = s->micplx.z;
       double _Complex c = s->micplx.c;
       z = z * z + c;
diff @ 2019-11-23 19:27:37 +0000
diff --git a/client/go.c b/client/go.c
index 6e0b3c2ce..63702679d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -234,7 +234,7 @@ int go(S *s, int channels, const float *in, float *out) {
       int t = s->micplx.tick++;
       int harmonic = 0;
       harmonic += "4484686684484488"[((t + 0) /  2) % (1 + ((int)clamp(b, 0, 8) & 15))]-'4';
-      harmonic += 6;
+      harmonic += 2;
       double _Complex z = s->micplx.z;
       double _Complex c = s->micplx.c;
       z = z * z + c;
diff @ 2019-11-23 19:27:44 +0000
diff --git a/client/go.c b/client/go.c
index 63702679d..d5b163d59 100644
--- a/client/go.c
+++ b/client/go.c
@@ -330,7 +330,7 @@ int go(S *s, int channels, const float *in, float *out) {
     k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
     k = tanh(2 * k / 30 * sin(pi * sin(k)));
-    k = biquad(highpass(&s->kickres, 40, 10), k);
+    k = biquad(highpass(&s->kickres, 40, 20), k);
     mixdown[0] += k;
     mixdown[1] += k;
     // snare
diff @ 2019-11-23 19:27:46 +0000
diff --git a/client/go.c b/client/go.c
index d5b163d59..2be48bf32 100644
--- a/client/go.c
+++ b/client/go.c
@@ -330,7 +330,7 @@ int go(S *s, int channels, const float *in, float *out) {
     k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
     k = tanh(2 * k / 30 * sin(pi * sin(k)));
-    k = biquad(highpass(&s->kickres, 40, 20), k);
+    k = biquad(highpass(&s->kickres, 40, 40), k);
     mixdown[0] += k;
     mixdown[1] += k;
     // snare
diff @ 2019-11-23 19:27:49 +0000
diff --git a/client/go.c b/client/go.c
index 2be48bf32..7923530ca 100644
--- a/client/go.c
+++ b/client/go.c
@@ -330,7 +330,7 @@ int go(S *s, int channels, const float *in, float *out) {
     k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
     k *= twopi;
     k = tanh(2 * k / 30 * sin(pi * sin(k)));
-    k = biquad(highpass(&s->kickres, 40, 40), k);
+    k = biquad(highpass(&s->kickres, 60, 40), k);
     mixdown[0] += k;
     mixdown[1] += k;
     // snare
diff @ 2019-11-23 19:28:00 +0000
diff --git a/client/go.c b/client/go.c
index 7923530ca..1b14d25a3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -331,6 +331,7 @@ int go(S *s, int channels, const float *in, float *out) {
     k *= twopi;
     k = tanh(2 * k / 30 * sin(pi * sin(k)));
     k = biquad(highpass(&s->kickres, 60, 40), k);
+    k = sin(k);
     mixdown[0] += k;
     mixdown[1] += k;
     // snare
diff @ 2019-11-23 19:28:16 +0000
diff @ 2019-11-23 19:28:31 +0000
diff --git a/client/go.c b/client/go.c
index 5c40de0db..ae26c4930 100644
--- a/client/go.c
+++ b/client/go.c
@@ -382,7 +382,7 @@ int go(S *s, int channels, const float *in, float *out) {
     time = s->time++;
     sample env[2];
     sample freq[2];
-    int N = 16;
+    int N = 14;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
     sample probability = pow(0.5, N - zeroes);
diff @ 2019-11-23 19:28:42 +0000
diff --git a/client/go.c b/client/go.c
index ae26c4930..a7f74c5ec 100644
--- a/client/go.c
+++ b/client/go.c
@@ -382,7 +382,7 @@ int go(S *s, int channels, const float *in, float *out) {
     time = s->time++;
     sample env[2];
     sample freq[2];
-    int N = 14;
+    int N = 12;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
     sample probability = pow(0.5, N - zeroes);
diff @ 2019-11-23 19:28:48 +0000
diff --git a/client/go.c b/client/go.c
index a7f74c5ec..1082e7812 100644
--- a/client/go.c
+++ b/client/go.c
@@ -386,7 +386,7 @@ int go(S *s, int channels, const float *in, float *out) {
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
     sample probability = pow(0.5, N - zeroes);
-    probability = (0.5 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (0.55 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
     uniform[0] = rand() / (double) RAND_MAX;
diff @ 2019-11-23 19:28:52 +0000
diff --git a/client/go.c b/client/go.c
index 1082e7812..ea8700c65 100644
--- a/client/go.c
+++ b/client/go.c
@@ -386,7 +386,7 @@ int go(S *s, int channels, const float *in, float *out) {
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
     sample probability = pow(0.5, N - zeroes);
-    probability = (0.55 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (0.55 + 0.5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
     uniform[0] = rand() / (double) RAND_MAX;
diff @ 2019-11-23 19:29:01 +0000
diff --git a/client/go.c b/client/go.c
index ea8700c65..4b2a1b44c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -403,10 +403,8 @@ int go(S *s, int channels, const float *in, float *out) {
     freq[0] = lop(&s->bfreq[0], freq[0], 20);
     freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
     freq[1] = lop(&s->bfreq[1], freq[1], 20);
-    env[0] = 0;
-    env[1] = 0;
-    freq[0] = 50;
-    freq[1] = 50;
+    freq[0] = 60;
+    freq[1] = 60;
 
     // snd
     sample snd[2];
diff @ 2019-11-23 19:29:09 +0000
diff --git a/client/go.c b/client/go.c
index 4b2a1b44c..ba86fcf87 100644
--- a/client/go.c
+++ b/client/go.c
@@ -382,7 +382,7 @@ int go(S *s, int channels, const float *in, float *out) {
     time = s->time++;
     sample env[2];
     sample freq[2];
-    int N = 12;
+    int N = 13;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
     sample probability = pow(0.5, N - zeroes);
diff @ 2019-11-23 19:29:28 +0000
diff --git a/client/go.c b/client/go.c
index ba86fcf87..5f68c9371 100644
--- a/client/go.c
+++ b/client/go.c
@@ -264,7 +264,7 @@ int go(S *s, int channels, const float *in, float *out) {
       int t = s->micplx.tick++;
       int harmonic = 0;
       harmonic += "4484686684484488"[((t + 0) /  2) % (1 + ((int)clamp(b, 0, 8) & 15))]-'4';
-      harmonic += 2;
+      harmonic += 4;
       double _Complex z = s->micplx.z;
       double _Complex c = s->micplx.c;
       z = z * z + c;
diff @ 2019-11-23 19:29:37 +0000
diff --git a/client/go.c b/client/go.c
index 5f68c9371..420dbc611 100644
--- a/client/go.c
+++ b/client/go.c
@@ -264,7 +264,7 @@ int go(S *s, int channels, const float *in, float *out) {
       int t = s->micplx.tick++;
       int harmonic = 0;
       harmonic += "4484686684484488"[((t + 0) /  2) % (1 + ((int)clamp(b, 0, 8) & 15))]-'4';
-      harmonic += 4;
+      harmonic += 8;
       double _Complex z = s->micplx.z;
       double _Complex c = s->micplx.c;
       z = z * z + c;
diff @ 2019-11-23 19:29:50 +0000
diff --git a/client/go.c b/client/go.c
index 420dbc611..90083f147 100644
--- a/client/go.c
+++ b/client/go.c
@@ -398,13 +398,11 @@ int go(S *s, int channels, const float *in, float *out) {
     s->benv[1].y += trigger[1];
     env[0] = lop(&s->benv[0], 0, 5);
     env[1] = lop(&s->benv[1], 0, 5);
-    sample harmonic = 5 + clamp(N - zeroes, 0, 20);
+    sample harmonic = 6 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
     freq[0] = lop(&s->bfreq[0], freq[0], 20);
     freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
     freq[1] = lop(&s->bfreq[1], freq[1], 20);
-    freq[0] = 60;
-    freq[1] = 60;
 
     // snd
     sample snd[2];
diff @ 2019-11-23 19:30:05 +0000
diff --git a/client/go.c b/client/go.c
index 90083f147..0a72ed6fa 100644
--- a/client/go.c
+++ b/client/go.c
@@ -386,7 +386,7 @@ int go(S *s, int channels, const float *in, float *out) {
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
     sample probability = pow(0.5, N - zeroes);
-    probability = (0.55 + 0.5 * (n >= 0xC001)) * probability - 0.5;
+    probability = (0.6 + 0.5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
     uniform[0] = rand() / (double) RAND_MAX;
diff @ 2019-11-23 19:30:12 +0000
diff --git a/client/go.c b/client/go.c
index 0a72ed6fa..3f64ffc5e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -408,7 +408,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample snd[2];
     snd[0] = env[0] * mixdown[0];
     snd[1] = env[1] * mixdown[1];
-    sample q = 10;
+    sample q = 20;
     snd[0] *= 10;
     snd[1] *= 10;
     snd[0] = vcf(&s->bvcf[0], snd[0] * q, freq[0], q);
diff @ 2019-11-23 19:30:16 +0000
diff --git a/client/go.c b/client/go.c
index 3f64ffc5e..90abba38c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -408,7 +408,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample snd[2];
     snd[0] = env[0] * mixdown[0];
     snd[1] = env[1] * mixdown[1];
-    sample q = 20;
+    sample q = 30;
     snd[0] *= 10;
     snd[1] *= 10;
     snd[0] = vcf(&s->bvcf[0], snd[0] * q, freq[0], q);
diff @ 2019-11-23 19:30:18 +0000
diff --git a/client/go.c b/client/go.c
index 90abba38c..f05d8a15f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -409,8 +409,8 @@ int go(S *s, int channels, const float *in, float *out) {
     snd[0] = env[0] * mixdown[0];
     snd[1] = env[1] * mixdown[1];
     sample q = 30;
-    snd[0] *= 10;
-    snd[1] *= 10;
+    snd[0] *= 1;
+    snd[1] *= 1;
     snd[0] = vcf(&s->bvcf[0], snd[0] * q, freq[0], q);
     snd[1] = vcf(&s->bvcf[1], snd[1] * q, freq[1], q);
     snd[0] = sin(snd[0]);
diff @ 2019-11-23 19:30:20 +0000
diff --git a/client/go.c b/client/go.c
index f05d8a15f..7dc661ad2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -408,7 +408,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample snd[2];
     snd[0] = env[0] * mixdown[0];
     snd[1] = env[1] * mixdown[1];
-    sample q = 30;
+    sample q = 50;
     snd[0] *= 1;
     snd[1] *= 1;
     snd[0] = vcf(&s->bvcf[0], snd[0] * q, freq[0], q);
diff @ 2019-11-23 19:30:30 +0000
diff --git a/client/go.c b/client/go.c
index 7dc661ad2..7b648af72 100644
--- a/client/go.c
+++ b/client/go.c
@@ -240,141 +240,6 @@ int go(S *s, int channels, const float *in, float *out) {
   }
 ///}}} SEA ORGAN 2.2
 
-///{{{ MILITARY-INDUSTRIAL COMPLEX
-  {
-    sample q = phasor(&s->micplx.p, bpm / 60  / 4);
-    p = wrap(q * 16);
-    sample hz = 36;
-    // settings
-    sample b = s->micplx.tick / 256.0;
-    s->micplx.qscale = mix(0.1, 1.5, clamp(b, 0, 1)) - mix(0, 0.5, clamp(b - 9, 0, 1));
-    s->micplx.ascale = mix(0.1, 1.5, clamp(b - 1, 0, 1)) - mix(0, 0.5, clamp(b - 8, 0, 1));
-    s->micplx.hiphz1 = 10;
-    s->micplx.lophz  = 480 * pow(2.0, mix(0, 2, clamp(b - 2, 0, 1)) - mix(0, 2, clamp(b - 10, 0, 1)));
-    s->micplx.hiphz2 = 240 * pow(2.0, mix(0, 4, clamp((b - 6)/2, 0, 1)) - mix(0, 4, clamp(b - 10, 0, 1)));
-    s->micplx.dscale = 1.5 * pow(2.0, mix(0, 4, clamp((b - 4)/2, 0, 1)) - mix(0, 4, clamp(b - 11, 0, 1)));
-    s->micplx.decay = mix(1, 2, clamp(b - 3, 0, 1)) - mix(0, 1, clamp(b - 11, 0, 1));
-    s->micplx.dell.length = SR/10;
-    s->micplx.delr.length = SR/10;
-    // 4-fold
-    s->micplx.c = -0.1685385494130763202755938414617354 + I * 1.0421052847193397670635483538162974;
-    // go
-    int trigger = p < s->micplx.oldp; s->micplx.oldp = p;
-    if (trigger && b <= 12) {
-      int t = s->micplx.tick++;
-      int harmonic = 0;
-      harmonic += "4484686684484488"[((t + 0) /  2) % (1 + ((int)clamp(b, 0, 8) & 15))]-'4';
-      harmonic += 8;
-      double _Complex z = s->micplx.z;
-      double _Complex c = s->micplx.c;
-      z = z * z + c;
-      double _Complex z1 = z;
-      for (int i = 0; i < 4; ++i)
-      {
-        z1 = z1 * z1 + c;
-      }
-      int v = s->micplx.voice;
-      s->micplx.voice = (v + 1) % 16;
-      sample re = cabs(z) - 0.25;
-      sample im = carg(z - z1);
-      im /= twopi;
-      im = wrap(im);
-      im *= 0.5;
-      im *= pi;
-      sample h = hz * harmonic / 4.0;
-      s->micplx.voices[v].hz = h;
-      s->micplx.voices[v].phase = 0;
-      s->micplx.voices[v].panl = cos(im);
-      s->micplx.voices[v].panr = sin(im);
-      sample x = re + 1.3;
-      sample re2 = re * re;
-      sample re4 = re2 * re2;
-      sample q = x * s->micplx.qscale * 500 / h;
-      s->micplx.voices[v].q = q;
-      s->micplx.voices[v].amp = s->micplx.ascale * re4 * x * 100 * q / sqrt(h);
-      s->micplx.voices[v].active = 1;
-      s->micplx.z = z;
-      if (cabs(z) > 2) { z = 0; }
-    }
-    // polyphonic synth
-    sample ol = 0;
-    sample or = 0;
-    for (int v = 0; v < 16; ++v) {
-      if (s->micplx.voices[v].active) {
-        sample p = (s->micplx.voices[v].phase += 1000.0 / SR);
-        sample a = 0;
-        if (5 <= p && p <= 6) {
-          a = s->micplx.voices[v].amp * (6 - p);
-        }
-        a = vcf(&s->micplx.voices[v].vcf, a, s->micplx.voices[v].hz, s->micplx.voices[v].q);
-        a *= a;
-        a = tanh(a) * 2;
-        a *= a;
-        a = hip(&s->micplx.voices[v].hip, a, 10);
-        sample panl = 0;
-        sample panr = 0;
-        if (p > 15) {
-          panl = s->micplx.voices[v].panl;
-          panr = s->micplx.voices[v].panr;
-          if (p < 30) {
-            panl *= (p - 15) / 15;
-            panr *= (p - 15) / 15;
-          }
-        }
-        if (isnan(a) || isinf(a)) { a = 0; }
-        ol += panl * a;
-        or += panr * a;
-        sample e = a * a;
-        e = lop(&s->micplx.voices[v].lop, e, 10);
-        s->micplx.voices[v].active = p < 100 || rmstodb(e) > 0;
-      }
-    }
-    ol = sin(ol);
-    or = sin(or);
-    mixdown[0] += ol;
-    mixdown[1] += or;
-    ol = hip(&s->micplx.hip[0], ol, s->micplx.hiphz1);
-    or = hip(&s->micplx.hip[1], or, s->micplx.hiphz1);
-    sample del = 1000 / (s->micplx.dscale * hz);
-    sample decay = s->micplx.decay * (exp(- del) - 1);
-    sample dl = delread4(&s->micplx.delr, del) *  decay;
-    sample dr = delread4(&s->micplx.dell, del) * -decay;
-    mixdown[0] += 2 * dl;
-    mixdown[1] += 2 * dr;
-    dl = lop(&s->micplx.lop[0], dl, s->micplx.lophz);
-    dr = lop(&s->micplx.lop[1], dr, s->micplx.lophz);
-    dl = hip(&s->micplx.hip[2], dl, s->micplx.hiphz2);
-    dr = hip(&s->micplx.hip[3], dr, s->micplx.hiphz2);
-    dl = tanh(dl);
-    dr = tanh(dr);
-    ol += dl;
-    or += dr;
-    if (isnan(ol) || isinf(ol)) { ol = 0; }
-    if (isnan(or) || isinf(or)) { or = 0; }
-    delwrite(&s->micplx.dell, ol);
-    delwrite(&s->micplx.delr, or);
-    compress(mixdown, &s->micplx.compress, 1, 5, 10, 60, mixdown);
-    // kick
-    sample k = (1 - wrap(4 * q)) * (1 - wrap((6 <= b && b < 9.5 ? 12 : 11 <= b ? 8 : 16) * q));
-    k *= k;
-    k *= 12 * (b < 4 || (6 <= b && b < 9.5) || (10 <= b && b <= 12));
-    k *= twopi;
-    k = tanh(2 * k / 30 * sin(pi * sin(k)));
-    k = biquad(highpass(&s->kickres, 60, 40), k);
-    k = sin(k);
-    mixdown[0] += k;
-    mixdown[1] += k;
-    // snare
-    sample n = (1 - wrap((b < 10 ? 12 : 16) * q)) * ((4 <= b && b < 8) || (10 <= b && b <= 12));
-    n *= n;
-    n *= n;
-    n *= n;
-    n *= n;
-    n *= wrap(4 * q + 0.25);
-    mixdown[0] += n * noise();
-    mixdown[1] += n * noise();
-  }
-///}}} MILITARY-INDUSTRIAL COMPLEX
 
 ///{{{ BINARAY /5
   {
diff @ 2019-11-23 19:30:45 +0000
diff --git a/client/go.c b/client/go.c
index 7b648af72..ee857f5ac 100644
--- a/client/go.c
+++ b/client/go.c
@@ -273,7 +273,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample snd[2];
     snd[0] = env[0] * mixdown[0];
     snd[1] = env[1] * mixdown[1];
-    sample q = 50;
+    sample q = 500;
     snd[0] *= 1;
     snd[1] *= 1;
     snd[0] = vcf(&s->bvcf[0], snd[0] * q, freq[0], q);
diff @ 2019-11-23 19:30:56 +0000
diff --git a/client/go.c b/client/go.c
index ee857f5ac..758ee127f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -261,8 +261,8 @@ int go(S *s, int channels, const float *in, float *out) {
     trigger[1] = uniform[1] < probability;
     s->benv[0].y += trigger[0];
     s->benv[1].y += trigger[1];
-    env[0] = lop(&s->benv[0], 0, 5);
-    env[1] = lop(&s->benv[1], 0, 5);
+    env[0] = lop(&s->benv[0], env[0], 5);
+    env[1] = lop(&s->benv[1], env[1], 5);
     sample harmonic = 6 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
     freq[0] = lop(&s->bfreq[0], freq[0], 20);
diff @ 2019-11-23 19:31:01 +0000
diff --git a/client/go.c b/client/go.c
index 758ee127f..ee857f5ac 100644
--- a/client/go.c
+++ b/client/go.c
@@ -261,8 +261,8 @@ int go(S *s, int channels, const float *in, float *out) {
     trigger[1] = uniform[1] < probability;
     s->benv[0].y += trigger[0];
     s->benv[1].y += trigger[1];
-    env[0] = lop(&s->benv[0], env[0], 5);
-    env[1] = lop(&s->benv[1], env[1], 5);
+    env[0] = lop(&s->benv[0], 0, 5);
+    env[1] = lop(&s->benv[1], 0, 5);
     sample harmonic = 6 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
     freq[0] = lop(&s->bfreq[0], freq[0], 20);
diff @ 2019-11-23 19:31:12 +0000
diff --git a/client/go.c b/client/go.c
index ee857f5ac..d3fbc333a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -247,7 +247,7 @@ int go(S *s, int channels, const float *in, float *out) {
     time = s->time++;
     sample env[2];
     sample freq[2];
-    int N = 13;
+    int N = 11;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
     sample probability = pow(0.5, N - zeroes);
diff @ 2019-11-23 19:31:25 +0000
diff --git a/client/go.c b/client/go.c
index d3fbc333a..427021b6b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -273,7 +273,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample snd[2];
     snd[0] = env[0] * mixdown[0];
     snd[1] = env[1] * mixdown[1];
-    sample q = 500;
+    sample q = 5000;
     snd[0] *= 1;
     snd[1] *= 1;
     snd[0] = vcf(&s->bvcf[0], snd[0] * q, freq[0], q);
diff @ 2019-11-23 19:31:31 +0000
diff --git a/client/go.c b/client/go.c
index 427021b6b..94f2840ae 100644
--- a/client/go.c
+++ b/client/go.c
@@ -290,8 +290,8 @@ int go(S *s, int channels, const float *in, float *out) {
     snd[1] += 0*samphold(&s->bsh2[1], snd[1], wrap(3 * pb[0]));
     compress(snd, &s->bcompress, 5, 10, 25, 48, snd);
     sample gain = 1;
-    mixdown[0] += snd[0] * gain;
-    mixdown[1] += snd[1] * gain;
+    mixdown[0] = snd[0] * gain;
+    mixdown[1] = snd[1] * gain;
   }
 ///}}} BINARAY /5
 
diff @ 2019-11-23 19:31:53 +0000
diff --git a/client/go.c b/client/go.c
index 94f2840ae..8bfe15af8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -263,7 +263,7 @@ int go(S *s, int channels, const float *in, float *out) {
     s->benv[1].y += trigger[1];
     env[0] = lop(&s->benv[0], 0, 5);
     env[1] = lop(&s->benv[1], 0, 5);
-    sample harmonic = 6 + clamp(N - zeroes, 0, 20);
+    sample harmonic = 10 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
     freq[0] = lop(&s->bfreq[0], freq[0], 20);
     freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
diff @ 2019-11-23 19:32:03 +0000
diff --git a/client/go.c b/client/go.c
index 8bfe15af8..5b870a22b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -263,7 +263,7 @@ int go(S *s, int channels, const float *in, float *out) {
     s->benv[1].y += trigger[1];
     env[0] = lop(&s->benv[0], 0, 5);
     env[1] = lop(&s->benv[1], 0, 5);
-    sample harmonic = 10 + clamp(N - zeroes, 0, 20);
+    sample harmonic = 8 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
     freq[0] = lop(&s->bfreq[0], freq[0], 20);
     freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
diff @ 2019-11-23 19:32:10 +0000
diff --git a/client/go.c b/client/go.c
index 5b870a22b..8bfe15af8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -263,7 +263,7 @@ int go(S *s, int channels, const float *in, float *out) {
     s->benv[1].y += trigger[1];
     env[0] = lop(&s->benv[0], 0, 5);
     env[1] = lop(&s->benv[1], 0, 5);
-    sample harmonic = 8 + clamp(N - zeroes, 0, 20);
+    sample harmonic = 10 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
     freq[0] = lop(&s->bfreq[0], freq[0], 20);
     freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
diff @ 2019-11-23 19:32:20 +0000
diff --git a/client/go.c b/client/go.c
index 8bfe15af8..e93e9b2d3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -247,7 +247,7 @@ int go(S *s, int channels, const float *in, float *out) {
     time = s->time++;
     sample env[2];
     sample freq[2];
-    int N = 11;
+    int N = 12;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
     sample probability = pow(0.5, N - zeroes);
diff @ 2019-11-23 19:32:26 +0000
diff --git a/client/go.c b/client/go.c
index e93e9b2d3..168dce0d2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -247,7 +247,7 @@ int go(S *s, int channels, const float *in, float *out) {
     time = s->time++;
     sample env[2];
     sample freq[2];
-    int N = 12;
+    int N = 13;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
     sample probability = pow(0.5, N - zeroes);
diff @ 2019-11-23 19:32:35 +0000
diff --git a/client/go.c b/client/go.c
index 168dce0d2..68c72c8b3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -251,7 +251,7 @@ int go(S *s, int channels, const float *in, float *out) {
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
     sample probability = pow(0.5, N - zeroes);
-    probability = (0.6 + 0.5 * (n >= 0xC001)) * probability - 0.5;
+    probability = (0.65 + 0.5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
     uniform[0] = rand() / (double) RAND_MAX;
diff @ 2019-11-23 19:32:41 +0000
diff --git a/client/go.c b/client/go.c
index 68c72c8b3..05bffce89 100644
--- a/client/go.c
+++ b/client/go.c
@@ -273,7 +273,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample snd[2];
     snd[0] = env[0] * mixdown[0];
     snd[1] = env[1] * mixdown[1];
-    sample q = 5000;
+    sample q = 50;
     snd[0] *= 1;
     snd[1] *= 1;
     snd[0] = vcf(&s->bvcf[0], snd[0] * q, freq[0], q);
diff @ 2019-11-23 19:32:52 +0000
diff --git a/client/go.c b/client/go.c
index 05bffce89..f278e5b93 100644
--- a/client/go.c
+++ b/client/go.c
@@ -286,8 +286,8 @@ int go(S *s, int channels, const float *in, float *out) {
     hilbert(pb, &s->bhilbert[1], pb);
     pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    snd[0] += 0*samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
-    snd[1] += 0*samphold(&s->bsh2[1], snd[1], wrap(3 * pb[0]));
+    snd[0] += samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
+    snd[1] += samphold(&s->bsh2[1], snd[1], wrap(3 * pb[0]));
     compress(snd, &s->bcompress, 5, 10, 25, 48, snd);
     sample gain = 1;
     mixdown[0] = snd[0] * gain;
diff @ 2019-11-23 19:33:04 +0000
diff --git a/client/go.c b/client/go.c
index f278e5b93..e56784551 100644
--- a/client/go.c
+++ b/client/go.c
@@ -288,7 +288,7 @@ int go(S *s, int channels, const float *in, float *out) {
     pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
     snd[0] += samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
     snd[1] += samphold(&s->bsh2[1], snd[1], wrap(3 * pb[0]));
-    compress(snd, &s->bcompress, 5, 10, 25, 48, snd);
+    compress(snd, &s->bcompress, 10, 1, 1, 48, snd);
     sample gain = 1;
     mixdown[0] = snd[0] * gain;
     mixdown[1] = snd[1] * gain;
diff @ 2019-11-23 19:33:21 +0000
diff --git a/client/go.c b/client/go.c
index e56784551..d70a9bcd9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -263,7 +263,7 @@ int go(S *s, int channels, const float *in, float *out) {
     s->benv[1].y += trigger[1];
     env[0] = lop(&s->benv[0], 0, 5);
     env[1] = lop(&s->benv[1], 0, 5);
-    sample harmonic = 10 + clamp(N - zeroes, 0, 20);
+    sample harmonic = 8 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
     freq[0] = lop(&s->bfreq[0], freq[0], 20);
     freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
diff @ 2019-11-23 19:33:25 +0000
diff --git a/client/go.c b/client/go.c
index d70a9bcd9..e56784551 100644
--- a/client/go.c
+++ b/client/go.c
@@ -263,7 +263,7 @@ int go(S *s, int channels, const float *in, float *out) {
     s->benv[1].y += trigger[1];
     env[0] = lop(&s->benv[0], 0, 5);
     env[1] = lop(&s->benv[1], 0, 5);
-    sample harmonic = 8 + clamp(N - zeroes, 0, 20);
+    sample harmonic = 10 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
     freq[0] = lop(&s->bfreq[0], freq[0], 20);
     freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
diff @ 2019-11-23 19:33:41 +0000
diff @ 2019-11-23 19:33:56 +0000
diff --git a/client/go.c b/client/go.c
index 9f9f98729..6199ff31f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -323,7 +323,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample crush = phasor(&s->tcrush, 3000);
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
-    sample kgain = 0;
+    sample kgain = 1;
     kgain = samphold(&s->tgate[0], kgain, p);
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
diff @ 2019-11-23 19:34:11 +0000
diff --git a/client/go.c b/client/go.c
index 6199ff31f..49532cdba 100644
--- a/client/go.c
+++ b/client/go.c
@@ -278,7 +278,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample snd[2];
     snd[0] = env[0] * mixdown[0];
     snd[1] = env[1] * mixdown[1];
-    sample q = 50;
+    sample q = 150;
     snd[0] *= 1;
     snd[1] *= 1;
     snd[0] = vcf(&s->bvcf[0], snd[0] * q, freq[0], q);
diff @ 2019-11-23 19:34:26 +0000
diff --git a/client/go.c b/client/go.c
index 49532cdba..d2d94b5eb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -316,7 +316,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample hat = wrap(16 * p + 0.5) < 0.125;
     hat *= 0;
     sample khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 5)*5)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
diff @ 2019-11-23 19:34:41 +0000
diff --git a/client/go.c b/client/go.c
index d2d94b5eb..f13474ed0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -317,7 +317,7 @@ int go(S *s, int channels, const float *in, float *out) {
     hat *= 0;
     sample khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
+    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);
     sample crush = phasor(&s->tcrush, 3000);
diff @ 2019-11-23 19:34:49 +0000
diff --git a/client/go.c b/client/go.c
index f13474ed0..553239b08 100644
--- a/client/go.c
+++ b/client/go.c
@@ -318,8 +318,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
-    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
-         *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
+    kick += sin(vcf(&s->tkick[2], kick, khz*7, 5)*5)
+         *  sin(vcf(&s->tkick[3], kick, khz*9, 5)*5);
     sample crush = phasor(&s->tcrush, 3000);
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
diff @ 2019-11-23 19:34:55 +0000
diff --git a/client/go.c b/client/go.c
index 553239b08..7afb9596b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -318,8 +318,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
-    kick += sin(vcf(&s->tkick[2], kick, khz*7, 5)*5)
-         *  sin(vcf(&s->tkick[3], kick, khz*9, 5)*5);
+    kick += sin(vcf(&s->tkick[2], kick, khz*7, 50)*5)
+         *  sin(vcf(&s->tkick[3], kick, khz*9, 50)*5);
     sample crush = phasor(&s->tcrush, 3000);
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
diff @ 2019-11-23 19:35:09 +0000
diff --git a/client/go.c b/client/go.c
index 7afb9596b..1b8add3ca 100644
--- a/client/go.c
+++ b/client/go.c
@@ -315,7 +315,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = tanh(kick);
     sample hat = wrap(16 * p + 0.5) < 0.125;
     hat *= 0;
-    sample khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
+    sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 50)*5)
diff @ 2019-11-23 19:35:22 +0000
diff --git a/client/go.c b/client/go.c
index 1b8add3ca..d823dc745 100644
--- a/client/go.c
+++ b/client/go.c
@@ -315,7 +315,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = tanh(kick);
     sample hat = wrap(16 * p + 0.5) < 0.125;
     hat *= 0;
-    sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
+    sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 50)*5)
diff @ 2019-11-23 19:35:36 +0000
diff --git a/client/go.c b/client/go.c
index d823dc745..3c87ae5d9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -268,7 +268,7 @@ int go(S *s, int channels, const float *in, float *out) {
     s->benv[1].y += trigger[1];
     env[0] = lop(&s->benv[0], 0, 5);
     env[1] = lop(&s->benv[1], 0, 5);
-    sample harmonic = 10 + clamp(N - zeroes, 0, 20);
+    sample harmonic = 8 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
     freq[0] = lop(&s->bfreq[0], freq[0], 20);
     freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
diff @ 2019-11-23 19:35:41 +0000
diff --git a/client/go.c b/client/go.c
index 3c87ae5d9..c547e9ce8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -268,7 +268,7 @@ int go(S *s, int channels, const float *in, float *out) {
     s->benv[1].y += trigger[1];
     env[0] = lop(&s->benv[0], 0, 5);
     env[1] = lop(&s->benv[1], 0, 5);
-    sample harmonic = 8 + clamp(N - zeroes, 0, 20);
+    sample harmonic = 12 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
     freq[0] = lop(&s->bfreq[0], freq[0], 20);
     freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
diff @ 2019-11-23 19:36:00 +0000
diff --git a/client/go.c b/client/go.c
index c547e9ce8..420149bfa 100644
--- a/client/go.c
+++ b/client/go.c
@@ -315,7 +315,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = tanh(kick);
     sample hat = wrap(16 * p + 0.5) < 0.125;
     hat *= 0;
-    sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
+    sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 30 * (wrap(2 * p) > 0.5);
     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[2], kick, khz*7, 50)*5)
diff @ 2019-11-23 19:36:06 +0000
diff --git a/client/go.c b/client/go.c
index 420149bfa..e9292cf5e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -315,7 +315,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = tanh(kick);
     sample hat = wrap(16 * p + 0.5) < 0.125;
     hat *= 0;
-    sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 30 * (wrap(2 * p) > 0.5);
+    sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 30 * (wrap(8 * p) > 0.5);
     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[2], kick, khz*7, 50)*5)
diff @ 2019-11-23 19:36:13 +0000
diff --git a/client/go.c b/client/go.c
index e9292cf5e..c05b88b10 100644
--- a/client/go.c
+++ b/client/go.c
@@ -315,7 +315,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = tanh(kick);
     sample hat = wrap(16 * p + 0.5) < 0.125;
     hat *= 0;
-    sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 30 * (wrap(8 * p) > 0.5);
+    sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5);
     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[2], kick, khz*7, 50)*5)
diff @ 2019-11-23 19:36:32 +0000
diff --git a/client/go.c b/client/go.c
index c05b88b10..e419a9c59 100644
--- a/client/go.c
+++ b/client/go.c
@@ -258,6 +258,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample probability = pow(0.5, N - zeroes);
     probability = (0.65 + 0.5 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
+    probability = 0;
     sample uniform[2];
     uniform[0] = rand() / (double) RAND_MAX;
     uniform[1] = rand() / (double) RAND_MAX;
diff @ 2019-11-23 19:36:43 +0000
diff --git a/client/go.c b/client/go.c
index e419a9c59..0003dc66b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -315,7 +315,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick *= 1 + kickenv;
     kick = tanh(kick);
     sample hat = wrap(16 * p + 0.5) < 0.125;
-    hat *= 0;
+    hat *= 1;
     sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
diff @ 2019-11-23 19:37:01 +0000
diff --git a/client/go.c b/client/go.c
index 0003dc66b..709a9b62c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 50)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 50)*5);
-    sample crush = phasor(&s->tcrush, 3000);
+    sample crush = phasor(&s->tcrush, 3000 * pow(2, cos(twopi * p)));
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
     sample kgain = 1;
diff @ 2019-11-23 19:37:08 +0000
diff --git a/client/go.c b/client/go.c
index 709a9b62c..f4442fc46 100644
--- a/client/go.c
+++ b/client/go.c
@@ -314,7 +314,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
-    sample hat = wrap(16 * p + 0.5) < 0.125;
+    sample hat = wrap(16 * p + 0.5) < 0.125 * p;
     hat *= 1;
     sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2019-11-23 19:37:13 +0000
diff --git a/client/go.c b/client/go.c
index f4442fc46..09d8f15ef 100644
--- a/client/go.c
+++ b/client/go.c
@@ -314,7 +314,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
-    sample hat = wrap(16 * p + 0.5) < 0.125 * p;
+    sample hat = wrap(16 * p + 0.5) < 0.125 * (p +0.5);
     hat *= 1;
     sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2019-11-23 19:37:14 +0000
diff --git a/client/go.c b/client/go.c
index 09d8f15ef..97350a7ac 100644
--- a/client/go.c
+++ b/client/go.c
@@ -314,7 +314,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
-    sample hat = wrap(16 * p + 0.5) < 0.125 * (p +0.5);
+    sample hat = wrap(16 * p + 0.5) < 0.125 * (p + 0.5);
     hat *= 1;
     sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2019-11-23 19:37:28 +0000
diff --git a/client/go.c b/client/go.c
index 97350a7ac..c32dbad5d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -314,7 +314,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
-    sample hat = wrap(16 * p + 0.5) < 0.125 * (p + 0.5);
+    sample hat = wrap(64 * p) < 0.125 * (p + 0.5);
     hat *= 1;
     sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2019-11-23 19:37:44 +0000
diff --git a/client/go.c b/client/go.c
index c32dbad5d..ab17fa149 100644
--- a/client/go.c
+++ b/client/go.c
@@ -317,7 +317,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample hat = wrap(64 * p) < 0.125 * (p + 0.5);
     hat *= 1;
     sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 150)*50)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 50)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 50)*5);
diff @ 2019-11-23 19:37:59 +0000
diff --git a/client/go.c b/client/go.c
index ab17fa149..2e36d4f0f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -318,7 +318,7 @@ int go(S *s, int channels, const float *in, float *out) {
     hat *= 1;
     sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 150)*50)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 15)*15);
+    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p) < 0.5 ? 2 : 3), 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 50)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 50)*5);
     sample crush = phasor(&s->tcrush, 3000 * pow(2, cos(twopi * p)));
diff @ 2019-11-23 19:38:08 +0000
diff --git a/client/go.c b/client/go.c
index 2e36d4f0f..f79aa6017 100644
--- a/client/go.c
+++ b/client/go.c
@@ -319,8 +319,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 150)*50)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p) < 0.5 ? 2 : 3), 15)*15);
-    kick += sin(vcf(&s->tkick[2], kick, khz*7, 50)*5)
-         *  sin(vcf(&s->tkick[3], kick, khz*9, 50)*5);
+    kick += sin(vcf(&s->tkick[2], kick, khz*7, 150)*25)
+         *  sin(vcf(&s->tkick[3], kick, khz*9, 150)*25);
     sample crush = phasor(&s->tcrush, 3000 * pow(2, cos(twopi * p)));
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
diff @ 2019-11-23 19:38:24 +0000
diff --git a/client/go.c b/client/go.c
index f79aa6017..2d2fbe3f7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -328,7 +328,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kgain = samphold(&s->tgate[0], kgain, p);
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
-    compress(tilex, &s->tcompress, 5, 10, 25, 48, tilex);
+    compress(tilex, &s->tcompress, 15, 1, 1, 48, tilex);
     sample gain = 1;
     gain = samphold(&s->tgate[1], gain, p);
     tilex[0] *= gain;
diff @ 2019-11-23 19:38:52 +0000
diff --git a/client/go.c b/client/go.c
index 2d2fbe3f7..372c8dcc6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -316,7 +316,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = tanh(kick);
     sample hat = wrap(64 * p) < 0.125 * (p + 0.5);
     hat *= 1;
-    sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5);
+    sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5) + 10 * (wrap(2 * p) > 0.75);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 150)*50)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p) < 0.5 ? 2 : 3), 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 150)*25)
diff @ 2019-11-23 19:39:12 +0000
diff --git a/client/go.c b/client/go.c
index 372c8dcc6..11a2d845c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -324,7 +324,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample crush = phasor(&s->tcrush, 3000 * pow(2, cos(twopi * p)));
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
-    sample kgain = 1;
+    sample kgain = 0;
     kgain = samphold(&s->tgate[0], kgain, p);
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
diff @ 2019-11-23 19:39:14 +0000
diff --git a/client/go.c b/client/go.c
index 11a2d845c..372c8dcc6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -324,7 +324,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample crush = phasor(&s->tcrush, 3000 * pow(2, cos(twopi * p)));
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
-    sample kgain = 0;
+    sample kgain = 1;
     kgain = samphold(&s->tgate[0], kgain, p);
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
diff @ 2019-11-23 19:39:28 +0000
diff @ 2019-11-23 19:39:46 +0000
diff --git a/client/go.c b/client/go.c
index 0140ae726..c3de3f1af 100644
--- a/client/go.c
+++ b/client/go.c
@@ -362,8 +362,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.1, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.1, pow(wrap(8 * p), (sample) 0.25), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 2), 20000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 2), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:40:06 +0000
diff --git a/client/go.c b/client/go.c
index c3de3f1af..5bb92f608 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./4);
-    sample rdelms = ldelms;
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./4);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-11-23 19:40:13 +0000
diff --git a/client/go.c b/client/go.c
index 5bb92f608..32638c78d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -354,7 +354,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./4);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./16);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./4);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2019-11-23 19:40:17 +0000
diff --git a/client/go.c b/client/go.c
index 32638c78d..1ffb3842b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -362,8 +362,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.1, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.2, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.2, pow(wrap(8 * p), (sample) 0.25), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 2), 20000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 2), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:40:27 +0000
diff --git a/client/go.c b/client/go.c
index 1ffb3842b..3afa3661e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -326,7 +326,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample hat = wrap(64 * p) < 0.125 * (p + 0.5);
     hat *= 1;
     sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5) + 10 * (wrap(2 * p) > 0.75);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 150)*50)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 50)*20)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p) < 0.5 ? 2 : 3), 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 150)*25)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 150)*25);
diff @ 2019-11-23 19:40:37 +0000
diff --git a/client/go.c b/client/go.c
index 3afa3661e..6b4df61b9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -362,8 +362,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.2, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.2, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.3, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.3, pow(wrap(8 * p), (sample) 0.25), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 2), 20000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 2), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:40:42 +0000
diff --git a/client/go.c b/client/go.c
index 6b4df61b9..6217bf11c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -362,8 +362,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.3, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.3, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.4, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.4, pow(wrap(8 * p), (sample) 0.25), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 2), 20000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 2), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:40:51 +0000
diff --git a/client/go.c b/client/go.c
index 6217bf11c..211b2abdf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -364,8 +364,8 @@ int go(S *s, int channels, const float *in, float *out) {
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0.4, pow(wrap(8 * p), (sample) 0.25), 0));
     es[1] = mix(mixdown[1], es[1], mix(0.4, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 2), 20000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 2), 20000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 20000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-11-23 19:40:54 +0000
diff --git a/client/go.c b/client/go.c
index 211b2abdf..084dbb144 100644
--- a/client/go.c
+++ b/client/go.c
@@ -364,8 +364,8 @@ int go(S *s, int channels, const float *in, float *out) {
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0.4, pow(wrap(8 * p), (sample) 0.25), 0));
     es[1] = mix(mixdown[1], es[1], mix(0.4, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 20000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 20000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 20000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-11-23 19:41:04 +0000
diff --git a/client/go.c b/client/go.c
index 084dbb144..1d0473bbf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -356,8 +356,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./16);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./4);
-    ldelms = lop(&s->elop[0], ldelms, 5);
-    rdelms = lop(&s->elop[1], rdelms, 5);
+    ldelms = lop(&s->elop[0], ldelms, 2);
+    rdelms = lop(&s->elop[1], rdelms, 2);
     sample el = delread4(&s->edelay1, ldelms + co);
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
diff @ 2019-11-23 19:41:10 +0000
diff --git a/client/go.c b/client/go.c
index 1d0473bbf..721369240 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./16);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./4);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./64);
     ldelms = lop(&s->elop[0], ldelms, 2);
     rdelms = lop(&s->elop[1], rdelms, 2);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-11-23 19:41:16 +0000
diff --git a/client/go.c b/client/go.c
index 721369240..3c5fff841 100644
--- a/client/go.c
+++ b/client/go.c
@@ -362,8 +362,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.4, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.4, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 20000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:41:22 +0000
diff --git a/client/go.c b/client/go.c
index 3c5fff841..295303a37 100644
--- a/client/go.c
+++ b/client/go.c
@@ -362,8 +362,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.7, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.7, pow(wrap(8 * p), (sample) 0.25), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 20000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:41:28 +0000
diff --git a/client/go.c b/client/go.c
index 295303a37..956e13575 100644
--- a/client/go.c
+++ b/client/go.c
@@ -362,8 +362,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.7, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.7, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.8, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.8, pow(wrap(8 * p), (sample) 0.25), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 20000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:41:35 +0000
diff --git a/client/go.c b/client/go.c
index 956e13575..6ae06bdfd 100644
--- a/client/go.c
+++ b/client/go.c
@@ -362,8 +362,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.8, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.8, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 20000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:41:41 +0000
diff --git a/client/go.c b/client/go.c
index 6ae06bdfd..4aee1d635 100644
--- a/client/go.c
+++ b/client/go.c
@@ -364,8 +364,8 @@ int go(S *s, int channels, const float *in, float *out) {
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 20000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 20000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 20000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-11-23 19:41:49 +0000
diff --git a/client/go.c b/client/go.c
index 4aee1d635..effe5cadf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -364,8 +364,8 @@ int go(S *s, int channels, const float *in, float *out) {
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 20000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 20000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 2000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-11-23 19:41:56 +0000
diff --git a/client/go.c b/client/go.c
index effe5cadf..b64081c8d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -364,8 +364,8 @@ int go(S *s, int channels, const float *in, float *out) {
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 2000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 2000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-11-23 19:42:02 +0000
diff --git a/client/go.c b/client/go.c
index b64081c8d..5f20c1b43 100644
--- a/client/go.c
+++ b/client/go.c
@@ -354,8 +354,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./16);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./64);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./4 : 1./16);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./64);
     ldelms = lop(&s->elop[0], ldelms, 2);
     rdelms = lop(&s->elop[1], rdelms, 2);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-11-23 19:42:16 +0000
diff --git a/client/go.c b/client/go.c
index 5f20c1b43..b43379c87 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./4 : 1./16);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./64);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./pow(2, 6));
     ldelms = lop(&s->elop[0], ldelms, 2);
     rdelms = lop(&s->elop[1], rdelms, 2);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-11-23 19:42:31 +0000
diff --git a/client/go.c b/client/go.c
index b43379c87..688f606a3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -182,6 +182,7 @@ typedef struct {
   LOP elop[2];
   LOP elop2[2];
   HIP ehip2[2];
+  SAMPHOLD esh[2][2];
 ///]]] EL DAY DE LAY
 
 ///[[[ FIFTY-NINE STELLATIONS
diff @ 2019-11-23 19:43:05 +0000
diff --git a/client/go.c b/client/go.c
index 688f606a3..0d626692b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -356,7 +356,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./4 : 1./16);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./pow(2, 6));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./pow(2, 4 * samphold(&s->esh[1][1], noise() + 1, p)));
     ldelms = lop(&s->elop[0], ldelms, 2);
     rdelms = lop(&s->elop[1], rdelms, 2);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-11-23 19:43:15 +0000
diff --git a/client/go.c b/client/go.c
index 0d626692b..3ee2ccb80 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./4 : 1./16);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./4 : 1./pow(2, 4 * samphold(&s->esh[1][0], noise() + 1, p))));
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./pow(2, 4 * samphold(&s->esh[1][1], noise() + 1, p)));
     ldelms = lop(&s->elop[0], ldelms, 2);
     rdelms = lop(&s->elop[1], rdelms, 2);
diff @ 2019-11-23 19:43:32 +0000
diff --git a/client/go.c b/client/go.c
index 3ee2ccb80..f28f3ab3a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,10 @@ int go(S *s, int channels, const float *in, float *out) {
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./4 : 1./pow(2, 4 * samphold(&s->esh[1][0], noise() + 1, p))));
+    sample ldelms = 60000 / bpm * (p < 0.75
+      ? 1./4
+      : 1./pow(2, 4 * samphold(&s->esh[1][0], noise() + 1, p))
+      );
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./pow(2, 4 * samphold(&s->esh[1][1], noise() + 1, p)));
     ldelms = lop(&s->elop[0], ldelms, 2);
     rdelms = lop(&s->elop[1], rdelms, 2);
diff @ 2019-11-23 19:43:44 +0000
diff --git a/client/go.c b/client/go.c
index f28f3ab3a..e2c6b031c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -359,7 +359,10 @@ int go(S *s, int channels, const float *in, float *out) {
       ? 1./4
       : 1./pow(2, 4 * samphold(&s->esh[1][0], noise() + 1, p))
       );
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./pow(2, 4 * samphold(&s->esh[1][1], noise() + 1, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5
+      ? 1./4
+      : 1./pow(2, 4 * samphold(&s->esh[1][1], noise() + 1, p))
+      );
     ldelms = lop(&s->elop[0], ldelms, 2);
     rdelms = lop(&s->elop[1], rdelms, 2);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-11-23 19:43:49 +0000
diff --git a/client/go.c b/client/go.c
index e2c6b031c..757a4d765 100644
--- a/client/go.c
+++ b/client/go.c
@@ -356,11 +356,11 @@ int go(S *s, int channels, const float *in, float *out) {
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75
-      ? 1./4
+      ? 1./2
       : 1./pow(2, 4 * samphold(&s->esh[1][0], noise() + 1, p))
       );
     sample rdelms = 60000 / bpm * (p < 0.5
-      ? 1./4
+      ? 1./2
       : 1./pow(2, 4 * samphold(&s->esh[1][1], noise() + 1, p))
       );
     ldelms = lop(&s->elop[0], ldelms, 2);
diff @ 2019-11-23 19:43:55 +0000
diff --git a/client/go.c b/client/go.c
index 757a4d765..10f19050d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -356,11 +356,11 @@ int go(S *s, int channels, const float *in, float *out) {
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75
-      ? 1./2
+      ? 1.
       : 1./pow(2, 4 * samphold(&s->esh[1][0], noise() + 1, p))
       );
     sample rdelms = 60000 / bpm * (p < 0.5
-      ? 1./2
+      ? 1.
       : 1./pow(2, 4 * samphold(&s->esh[1][1], noise() + 1, p))
       );
     ldelms = lop(&s->elop[0], ldelms, 2);
diff @ 2019-11-23 19:44:07 +0000
diff --git a/client/go.c b/client/go.c
index 10f19050d..c4eeb01f4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -359,7 +359,7 @@ int go(S *s, int channels, const float *in, float *out) {
       ? 1.
       : 1./pow(2, 4 * samphold(&s->esh[1][0], noise() + 1, p))
       );
-    sample rdelms = 60000 / bpm * (p < 0.5
+    sample rdelms = 60000 / bpm * (p < 0.875
       ? 1.
       : 1./pow(2, 4 * samphold(&s->esh[1][1], noise() + 1, p))
       );
diff @ 2019-11-23 19:44:13 +0000
diff --git a/client/go.c b/client/go.c
index c4eeb01f4..715d2942d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75
+    sample ldelms = 60000 / bpm * (p < 0.875
       ? 1.
       : 1./pow(2, 4 * samphold(&s->esh[1][0], noise() + 1, p))
       );
diff @ 2019-11-23 19:44:20 +0000
diff --git a/client/go.c b/client/go.c
index 715d2942d..12c62853b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -357,7 +357,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.875
       ? 1.
-      : 1./pow(2, 4 * samphold(&s->esh[1][0], noise() + 1, p))
+      : 1./pow(2, floor(4 * samphold(&s->esh[1][0], noise() + 1, p)))
       );
     sample rdelms = 60000 / bpm * (p < 0.875
       ? 1.
diff @ 2019-11-23 19:44:27 +0000
diff --git a/client/go.c b/client/go.c
index 12c62853b..fc8b646b0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -361,7 +361,7 @@ int go(S *s, int channels, const float *in, float *out) {
       );
     sample rdelms = 60000 / bpm * (p < 0.875
       ? 1.
-      : 1./pow(2, 4 * samphold(&s->esh[1][1], noise() + 1, p))
+      : 1./pow(2, floor(4 * samphold(&s->esh[1][1], noise() + 1, p)))
       );
     ldelms = lop(&s->elop[0], ldelms, 2);
     rdelms = lop(&s->elop[1], rdelms, 2);
diff @ 2019-11-23 19:44:35 +0000
diff --git a/client/go.c b/client/go.c
index fc8b646b0..225a5f526 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:44:40 +0000
diff --git a/client/go.c b/client/go.c
index 225a5f526..7a5a7579a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 0.1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.2));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.2));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:44:47 +0000
diff --git a/client/go.c b/client/go.c
index 7a5a7579a..c403664a6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 0.2));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.2));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.3));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.3));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:45:03 +0000
diff --git a/client/go.c b/client/go.c
index c403664a6..21a9dbe50 100644
--- a/client/go.c
+++ b/client/go.c
@@ -326,7 +326,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = tanh(kick);
     sample hat = wrap(64 * p) < 0.125 * (p + 0.5);
     hat *= 1;
-    sample khz = 60 + 20 * (wrap(8 * p) > 0.75) + 10 * (wrap(8 * p) > 0.5) + 10 * (wrap(2 * p) > 0.75);
+    sample khz = 60 + 20 * (wrap(8 * p) > 1) + 10 * (wrap(8 * p) > 1) + 10 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 50)*20)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p) < 0.5 ? 2 : 3), 15)*15);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 150)*25)
diff @ 2019-11-23 19:45:13 +0000
diff --git a/client/go.c b/client/go.c
index 21a9dbe50..42856a89d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -210,7 +210,7 @@ int go(S *s, int channels, const float *in, float *out) {
   }
 
 ///((( MIXDOWN
-  sample bpm = SR * 60.0 / 4096.0 / 5.0;
+  sample bpm = SR * 60.0 / 4096.0 / 4.0;
   sample ms4 = 1000.0 * 60.0 / bpm / 4.0;
   sample mixdown[2] = { 0, 0 };
   int time = 0;
diff @ 2019-11-23 19:45:25 +0000
diff --git a/client/go.c b/client/go.c
index 42856a89d..4d614ff52 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 0.3));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.3));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.4));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.4));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:45:28 +0000
diff --git a/client/go.c b/client/go.c
index 4d614ff52..d15cdc611 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 0.4));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.4));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.5));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.5));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:45:31 +0000
diff --git a/client/go.c b/client/go.c
index d15cdc611..d2882eb00 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 0.5));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.5));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.6));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.6));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:45:34 +0000
diff --git a/client/go.c b/client/go.c
index d2882eb00..af94f8454 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 0.6));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.6));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.7));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.7));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:45:39 +0000
diff --git a/client/go.c b/client/go.c
index af94f8454..7756b2b48 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 0.7));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.7));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:46:00 +0000
diff --git a/client/go.c b/client/go.c
index 7756b2b48..bd02fdb41 100644
--- a/client/go.c
+++ b/client/go.c
@@ -352,7 +352,7 @@ int go(S *s, int channels, const float *in, float *out) {
   {
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
-    sample t = twopi * p;
+    sample t = 2 * twopi * p;
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.875
diff @ 2019-11-23 19:46:06 +0000
diff --git a/client/go.c b/client/go.c
index bd02fdb41..273890444 100644
--- a/client/go.c
+++ b/client/go.c
@@ -352,7 +352,7 @@ int go(S *s, int channels, const float *in, float *out) {
   {
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
-    sample t = 2 * twopi * p;
+    sample t = 4 * twopi * p;
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.875
diff @ 2019-11-23 19:46:12 +0000
diff --git a/client/go.c b/client/go.c
index 273890444..0b96a47f1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.25), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.5), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.5), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:46:20 +0000
diff --git a/client/go.c b/client/go.c
index 0b96a47f1..84c7527f8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 0.5), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.5), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 1), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 1), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:46:39 +0000
diff --git a/client/go.c b/client/go.c
index 84c7527f8..ca809d9cf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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), (sample) 1), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 1), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(16 * p), (sample) 1), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(16 * p), (sample) 1), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:46:49 +0000
diff --git a/client/go.c b/client/go.c
index ca809d9cf..5fe1bfaa1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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(16 * p), (sample) 1), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(16 * p), (sample) 1), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(32 * p), (sample) 1), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(32 * p), (sample) 1), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:46:55 +0000
diff --git a/client/go.c b/client/go.c
index 5fe1bfaa1..48e5287bd 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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(32 * p), (sample) 1), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(32 * p), (sample) 1), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(64 * p), (sample) 1), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * p), (sample) 1), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:47:03 +0000
diff --git a/client/go.c b/client/go.c
index 48e5287bd..8762e0d29 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,8 +369,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample er = delread4(&s->edelay2, rdelms + si);
     sample 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(64 * p), (sample) 1), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * p), (sample) 1), 1));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(64 * p), (sample) 1), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(64 * p), (sample) 1), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 12000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 12000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-11-23 19:47:18 +0000
diff @ 2019-11-23 19:47:30 +0000
diff --git a/client/go.c b/client/go.c
index aff1254a8..be01adf33 100644
--- a/client/go.c
+++ b/client/go.c
@@ -419,7 +419,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample kick = sin(twopi * phasor(&s->kick59s[1], env + mod));
       env2 = env2 + env2 * env2 * env2 * env2;
       kick = 4 * hip(&s->hip59s[0], tanh(env2 * kick), 5);
-      kick *= 0;
+      kick *= 1;
       o[0] += kick;
       o[1] += kick;
     }
diff @ 2019-11-23 19:47:48 +0000
diff --git a/client/go.c b/client/go.c
index be01adf33..ed6395b13 100644
--- a/client/go.c
+++ b/client/go.c
@@ -222,7 +222,7 @@ int go(S *s, int channels, const float *in, float *out) {
   }
 
 ///((( MIXDOWN
-  sample bpm = SR * 60.0 / 4096.0 / 4.0;
+  sample bpm = SR * 60.0 / 4096.0 / 5.0;
   sample ms4 = 1000.0 * 60.0 / bpm / 4.0;
   sample mixdown[2] = { 0, 0 };
   int time = 0;
diff @ 2019-11-23 19:48:08 +0000
diff --git a/client/go.c b/client/go.c
index ed6395b13..dfdf42d43 100644
--- a/client/go.c
+++ b/client/go.c
@@ -323,42 +323,6 @@ int go(S *s, int channels, const float *in, float *out) {
   }
 ///}}} BINARAY /5
 
-///{{{ TOTAL INTRALIMINAL EXTRACTION
-  {
-    sample tilex[2] = { 0, 0 };
-    p = wrap(time / 5.0 / (1 << 16));
-    sample kick = 1 - wrap(16 * p);
-    kick *= kick;
-    kick *= kick;
-    kick *= kick;
-    sample kickenv = kick;
-    kick *= 16;
-    kick = sin(twopi * kick);
-    kick *= 1 + kickenv;
-    kick = tanh(kick);
-    sample hat = wrap(64 * p) < 0.125 * (p + 0.5);
-    hat *= 1;
-    sample khz = 60 + 20 * (wrap(8 * p) > 1) + 10 * (wrap(8 * p) > 1) + 10 * (wrap(2 * p) > 1);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 50)*20)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * (wrap(4 * p) < 0.5 ? 2 : 3), 15)*15);
-    kick += sin(vcf(&s->tkick[2], kick, khz*7, 150)*25)
-         *  sin(vcf(&s->tkick[3], kick, khz*9, 150)*25);
-    sample crush = phasor(&s->tcrush, 3000 * pow(2, cos(twopi * p)));
-    tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
-    tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
-    sample kgain = 1;
-    kgain = samphold(&s->tgate[0], kgain, p);
-    tilex[0] += kgain * kick;
-    tilex[1] += kgain * kick;
-    compress(tilex, &s->tcompress, 15, 1, 1, 48, tilex);
-    sample gain = 1;
-    gain = samphold(&s->tgate[1], gain, p);
-    tilex[0] *= gain;
-    tilex[1] *= gain;
-    mixdown[0] += tilex[0];
-    mixdown[1] += tilex[1];
-  }
-///}}} TOTAL INTRALIMINAL EXTRACTION
 
 ///{{{ EL DAY DE LAY
   {
diff @ 2019-11-23 19:48:14 +0000
diff --git a/client/go.c b/client/go.c
index dfdf42d43..d6f6ec013 100644
--- a/client/go.c
+++ b/client/go.c
@@ -267,63 +267,6 @@ int go(S *s, int channels, const float *in, float *out) {
   }
 ///}}} SEA ORGAN 2.2
 
-
-///{{{ BINARAY /5
-  {
-    // seq
-    time = s->time++;
-    sample env[2];
-    sample freq[2];
-    int N = 13;
-    int n = (time / 5) & ((1 << N) - 1);
-    sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    sample probability = pow(0.5, N - zeroes);
-    probability = (0.65 + 0.5 * (n >= 0xC001)) * probability - 0.5;
-    probability = clamp(probability, 0, 1);
-    probability = 0;
-    sample uniform[2];
-    uniform[0] = rand() / (double) RAND_MAX;
-    uniform[1] = rand() / (double) RAND_MAX;
-    sample trigger[2];
-    trigger[0] = uniform[0] < probability;
-    trigger[1] = uniform[1] < probability;
-    s->benv[0].y += trigger[0];
-    s->benv[1].y += trigger[1];
-    env[0] = lop(&s->benv[0], 0, 5);
-    env[1] = lop(&s->benv[1], 0, 5);
-    sample harmonic = 12 + clamp(N - zeroes, 0, 20);
-    freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
-    freq[0] = lop(&s->bfreq[0], freq[0], 20);
-    freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
-    freq[1] = lop(&s->bfreq[1], freq[1], 20);
-
-    // snd
-    sample snd[2];
-    snd[0] = env[0] * mixdown[0];
-    snd[1] = env[1] * mixdown[1];
-    sample q = 150;
-    snd[0] *= 1;
-    snd[1] *= 1;
-    snd[0] = vcf(&s->bvcf[0], snd[0] * q, freq[0], q);
-    snd[1] = vcf(&s->bvcf[1], snd[1] * q, freq[1], q);
-    snd[0] = sin(snd[0]);
-    snd[1] = sin(snd[1]);
-    sample pa[2] = { snd[0], snd[0] };
-    sample pb[2] = { snd[1], snd[1] };
-    hilbert(pa, &s->bhilbert[0], pa);
-    hilbert(pb, &s->bhilbert[1], pb);
-    pa[0] = wrap(atan2(pa[0], pa[1]) / twopi);
-    pb[0] = wrap(atan2(pb[0], pb[1]) / twopi);
-    snd[0] += samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
-    snd[1] += samphold(&s->bsh2[1], snd[1], wrap(3 * pb[0]));
-    compress(snd, &s->bcompress, 10, 1, 1, 48, snd);
-    sample gain = 1;
-    mixdown[0] = snd[0] * gain;
-    mixdown[1] = snd[1] * gain;
-  }
-///}}} BINARAY /5
-
-
 ///{{{ EL DAY DE LAY
   {
     s->edelay1.length = 4 * SR;
diff @ 2019-11-23 19:48:22 +0000
diff --git a/client/go.c b/client/go.c
index d6f6ec013..771a86a71 100644
--- a/client/go.c
+++ b/client/go.c
@@ -229,43 +229,6 @@ int go(S *s, int channels, const float *in, float *out) {
   sample p = 0;
 ///))) MIXDOWN
 
-///{{{ SEA ORGAN 2.2
-  {
-    sample RESET = 0;
-    sample so2[2] = { 0, 0 };
-    // trigger impulse on reload
-    sample impulse[2] = { s->reloaded, s->reloaded };
-    // modulate delay times
-    p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation1 = 1 * cos(twopi * p);
-    sample modulation2 = 1 * sin(twopi * p);
-    sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4/8 - modulation1)
-      , delread4(&s->so2.echo[0].del, ms4/8 + modulation2)
-      };
-    // pitchshift feedback
-    for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[c][0], 1, ms4/8,
-        lop(&s->so2.lag[c][0], -19, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/8,
-        lop(&s->so2.lag[c][1],  19, 1e-3), down);
-      feedback[c] = sin(pi/2 * (2 * feedback[c] - down - up));
-    }
-    // compress feedback
-    compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
-    sample gain = 0.1;
-    so2[0] *= gain;
-    so2[1] *= gain;
-    // write to delay lines
-    for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 400, 400,
-        tanh(so2[c] + RESET*impulse[c]));
-    }
-    // output
-    mixdown[0] += so2[0];
-    mixdown[1] += so2[1];
-  }
-///}}} SEA ORGAN 2.2
 
 ///{{{ EL DAY DE LAY
   {
diff @ 2019-11-23 19:48:36 +0000
diff --git a/client/go.c b/client/go.c
index 771a86a71..f5276ff89 100644
--- a/client/go.c
+++ b/client/go.c
@@ -324,7 +324,7 @@ int go(S *s, int channels, const float *in, float *out) {
         + sin(4 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin(2 * twopi * vcf(&s->vcf59s[1], bosc, 8 * hz, 4)) * 0.7;
       bass *= 1.5;
-      bass *= 0;
+      bass *= 1;
       o[0] += bass;
       o[1] += bass;
     }
diff @ 2019-11-23 19:48:50 +0000
diff --git a/client/go.c b/client/go.c
index f5276ff89..f6d66cee0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -322,7 +322,7 @@ int go(S *s, int channels, const float *in, float *out) {
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
         + sin(4 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
-        + sin(2 * twopi * vcf(&s->vcf59s[1], bosc, 8 * hz, 4)) * 0.7;
+        + sin(2 * twopi * vcf(&s->vcf59s[1], bosc, 8 * hz, 6)) * 0.7;
       bass *= 1.5;
       bass *= 1;
       o[0] += bass;
diff @ 2019-11-23 19:49:09 +0000
diff --git a/client/go.c b/client/go.c
index f6d66cee0..b58a243a3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -322,7 +322,7 @@ int go(S *s, int channels, const float *in, float *out) {
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
         + sin(4 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
-        + sin(2 * twopi * vcf(&s->vcf59s[1], bosc, 8 * hz, 6)) * 0.7;
+        + sin(((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc, 8 * hz, 6)) * 0.7;
       bass *= 1.5;
       bass *= 1;
       o[0] += bass;
diff @ 2019-11-23 19:49:14 +0000
diff --git a/client/go.c b/client/go.c
index b58a243a3..10be3d76a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -322,7 +322,7 @@ int go(S *s, int channels, const float *in, float *out) {
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
         + sin(4 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
-        + sin(((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc, 8 * hz, 6)) * 0.7;
+        + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc, 8 * hz, 6)) * 0.7;
       bass *= 1.5;
       bass *= 1;
       o[0] += bass;
diff @ 2019-11-23 19:49:34 +0000
diff --git a/client/go.c b/client/go.c
index 10be3d76a..b39deaf66 100644
--- a/client/go.c
+++ b/client/go.c
@@ -322,7 +322,7 @@ int go(S *s, int channels, const float *in, float *out) {
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
         + sin(4 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
-        + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc, 8 * hz, 6)) * 0.7;
+        + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc, (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 6)) * 0.7;
       bass *= 1.5;
       bass *= 1;
       o[0] += bass;
diff @ 2019-11-23 19:49:46 +0000
diff --git a/client/go.c b/client/go.c
index b39deaf66..ffc61f0ac 100644
--- a/client/go.c
+++ b/client/go.c
@@ -322,7 +322,8 @@ int go(S *s, int channels, const float *in, float *out) {
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
         + sin(4 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
-        + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc, (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 6)) * 0.7;
+        + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
+            , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 10)) * 0.7;
       bass *= 1.5;
       bass *= 1;
       o[0] += bass;
diff @ 2019-11-23 19:49:49 +0000
diff --git a/client/go.c b/client/go.c
index ffc61f0ac..e78349f09 100644
--- a/client/go.c
+++ b/client/go.c
@@ -323,7 +323,7 @@ int go(S *s, int channels, const float *in, float *out) {
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
         + sin(4 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
-            , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 10)) * 0.7;
+            , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
       bass *= 1;
       o[0] += bass;
diff @ 2019-11-23 19:50:04 +0000
diff --git a/client/go.c b/client/go.c
index e78349f09..4e30ebdb0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -277,7 +277,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample o[2] = { 0, 0 };
     { // kick
       sample peak = hz * 8;
-      sample env = 1 - wrap(2 * t);
+      sample env = 1 - wrap(8./3 * t);
       sample env2 = env * 2;
       env *= env;
       env *= env;
diff @ 2019-11-23 19:50:18 +0000
diff --git a/client/go.c b/client/go.c
index 4e30ebdb0..2ee522164 100644
--- a/client/go.c
+++ b/client/go.c
@@ -299,7 +299,7 @@ int go(S *s, int channels, const float *in, float *out) {
       closed *= closed;
       closed *= closed;
       closed *= 1.3;
-      open   *= 1.3;
+      open   *= 0;//1.3;
       closed *= closed;
       closed *= closed;
       open   *= open;
diff @ 2019-11-23 19:50:24 +0000
diff --git a/client/go.c b/client/go.c
index 2ee522164..27fc051f4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -307,7 +307,7 @@ int go(S *s, int channels, const float *in, float *out) {
       open   *= open;
       sample env = open + closed;
       sample h = noise();
-      h *= 0;
+      h *= 1;
       o[0] += 4 * tanh(env * hip(&s->hip59s[2], hip(&s->hip59s[3],
               h * noise(), 3000), 1500));
       o[1] += 4 * tanh(env * hip(&s->hip59s[4], hip(&s->hip59s[5],
diff @ 2019-11-23 19:50:32 +0000
diff --git a/client/go.c b/client/go.c
index 27fc051f4..803bd2d54 100644
--- a/client/go.c
+++ b/client/go.c
@@ -315,7 +315,7 @@ int go(S *s, int channels, const float *in, float *out) {
     }
     { // bass
       sample lfo = lop(&s->lop59s[0], wrap(8/3. * t), 5);
-      sample sub = sin(twopi * osc);
+      sample sub = sin(2 * twopi * osc);
       sample bosc = hip(&s->hip59s[1],
           wrap(samphold(&s->sh59s, lfo, osc) + osc) - osc, 5);
       sample bass
diff @ 2019-11-23 19:50:57 +0000
diff --git a/client/go.c b/client/go.c
index 803bd2d54..f7bf1578c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -273,7 +273,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample ms4 = (1000 / (bpm / 60)) / 4;
     sample hz = 40;
     sample t = phasor(&s->phase59s, tempo);
-    sample osc = phasor(&s->osc59s, hz);
+    sample osc = phasor(&s->osc59s, pow(2.0, t) * hz);
     sample o[2] = { 0, 0 };
     { // kick
       sample peak = hz * 8;
diff @ 2019-11-23 19:51:05 +0000
diff --git a/client/go.c b/client/go.c
index f7bf1578c..63c28710e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -273,7 +273,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample ms4 = (1000 / (bpm / 60)) / 4;
     sample hz = 40;
     sample t = phasor(&s->phase59s, tempo);
-    sample osc = phasor(&s->osc59s, pow(2.0, t) * hz);
+    sample osc = phasor(&s->osc59s, pow(2.0, t - 1) * hz);
     sample o[2] = { 0, 0 };
     { // kick
       sample peak = hz * 8;
diff @ 2019-11-23 19:51:11 +0000
diff --git a/client/go.c b/client/go.c
index 63c28710e..72bedfd91 100644
--- a/client/go.c
+++ b/client/go.c
@@ -273,7 +273,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample ms4 = (1000 / (bpm / 60)) / 4;
     sample hz = 40;
     sample t = phasor(&s->phase59s, tempo);
-    sample osc = phasor(&s->osc59s, pow(2.0, t - 1) * hz);
+    sample osc = phasor(&s->osc59s, pow(2.0, t - 0.5) * hz);
     sample o[2] = { 0, 0 };
     { // kick
       sample peak = hz * 8;
diff @ 2019-11-23 19:51:25 +0000
diff --git a/client/go.c b/client/go.c
index 72bedfd91..8fc20a627 100644
--- a/client/go.c
+++ b/client/go.c
@@ -289,7 +289,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample kick = sin(twopi * phasor(&s->kick59s[1], env + mod));
       env2 = env2 + env2 * env2 * env2 * env2;
       kick = 4 * hip(&s->hip59s[0], tanh(env2 * kick), 5);
-      kick *= 1;
+      kick *= 0;
       o[0] += kick;
       o[1] += kick;
     }
@@ -299,7 +299,7 @@ int go(S *s, int channels, const float *in, float *out) {
       closed *= closed;
       closed *= closed;
       closed *= 1.3;
-      open   *= 0;//1.3;
+      open   *= 1.3;
       closed *= closed;
       closed *= closed;
       open   *= open;
diff @ 2019-11-23 19:51:37 +0000
diff --git a/client/go.c b/client/go.c
index 8fc20a627..c3cbbb165 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(4 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(5 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:51:39 +0000
diff --git a/client/go.c b/client/go.c
index c3cbbb165..884b967d2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(5 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(6 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:51:41 +0000
diff --git a/client/go.c b/client/go.c
index 884b967d2..9f370513a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(6 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(7 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:51:42 +0000
diff --git a/client/go.c b/client/go.c
index 9f370513a..45043466c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(7 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(8 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:51:44 +0000
diff --git a/client/go.c b/client/go.c
index 45043466c..728305fcb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(8 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(9 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:51:45 +0000
diff --git a/client/go.c b/client/go.c
index 728305fcb..8d0211a04 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(9 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(10 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:51:47 +0000
diff --git a/client/go.c b/client/go.c
index 8d0211a04..4059650cf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(10 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(12 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:51:49 +0000
diff --git a/client/go.c b/client/go.c
index 4059650cf..cb4666c33 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(12 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(16 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:52:00 +0000
diff --git a/client/go.c b/client/go.c
index cb4666c33..e6c660411 100644
--- a/client/go.c
+++ b/client/go.c
@@ -289,7 +289,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample kick = sin(twopi * phasor(&s->kick59s[1], env + mod));
       env2 = env2 + env2 * env2 * env2 * env2;
       kick = 4 * hip(&s->hip59s[0], tanh(env2 * kick), 5);
-      kick *= 0;
+      kick *= 1;
       o[0] += kick;
       o[1] += kick;
     }
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(16 * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(pow(2, t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:52:07 +0000
diff --git a/client/go.c b/client/go.c
index e6c660411..b85f8b6d5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(pow(2, t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(pow(16, t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:52:14 +0000
diff --git a/client/go.c b/client/go.c
index b85f8b6d5..cc0cbadae 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(pow(16, t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:52:28 +0000
diff --git a/client/go.c b/client/go.c
index cc0cbadae..edb557c28 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * hz, 6))
+        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(2, 1 - wrap(4 * t) * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:52:29 +0000
diff --git a/client/go.c b/client/go.c
index edb557c28..7ca89af00 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(2, 1 - wrap(4 * t) * hz, 6))
+        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(2, 1 - wrap(4 * t)) * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:52:33 +0000
diff --git a/client/go.c b/client/go.c
index 7ca89af00..723f3eae7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(2, 1 - wrap(4 * t)) * hz, 6))
+        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(2, 1 - wrap(8 * t)) * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:52:37 +0000
diff --git a/client/go.c b/client/go.c
index 723f3eae7..c222749cb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(2, 1 - wrap(8 * t)) * hz, 6))
+        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(2, 1 - wrap(16 * t)) * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:52:38 +0000
diff --git a/client/go.c b/client/go.c
index c222749cb..91d921dc0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(2, 1 - wrap(16 * t)) * hz, 6))
+        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(4, 1 - wrap(16 * t)) * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:52:43 +0000
diff --git a/client/go.c b/client/go.c
index 91d921dc0..d9072dbc7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(4, 1 - wrap(16 * t)) * hz, 6))
+        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(8, 1 - wrap(16 * t)) * hz, 6))
         + sin((wrap(2 * t) < 0.5 ? 2 : 3) * twopi * vcf(&s->vcf59s[1], bosc
             , (wrap(4 * t) < 0.5 ? 8 : 12) * hz, 4)) * 0.7;
       bass *= 1.5;
diff @ 2019-11-23 19:52:49 +0000
diff --git a/client/go.c b/client/go.c
index d9072dbc7..c937f224f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -321,7 +321,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample bass
         = sub
         + lop(&s->lop59s[1], lop(&s->lop59s[2], bosc, 1000), 1000)
-        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 4 * pow(8, 1 - wrap(16 * t)) * hz, 6))
+        + sin(pow(16, 1 - t) * twopi * vcf(&s->vcf59s[0], bosc, 8 * pow(8, 1 - wrap(16 * t)) * hz