session-2019-04-18-183121

clive

a C audio live-coding skeleton

diff @ 2019-04-18 19:31:36 +0100
diff @ 2019-04-18 19:31:56 +0100
diff --git a/client/go.c b/client/go.c
index 1c68ba947..0fc98bcdb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -115,7 +115,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-04-18 19:32:06 +0100
diff --git a/client/go.c b/client/go.c
index 0fc98bcdb..7c9b1c18c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -129,9 +129,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-04-18 19:32:24 +0100
diff --git a/client/go.c b/client/go.c
index 7c9b1c18c..6abd8560e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -132,7 +132,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,
         lop(&s->so2.lag[c][1],  19, 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-04-18 19:32:30 +0100
diff --git a/client/go.c b/client/go.c
index 6abd8560e..5bd6689f8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -141,7 +141,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-04-18 19:32:41 +0100
diff --git a/client/go.c b/client/go.c
index 5bd6689f8..a7bd30d6f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -129,9 +129,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-2), feedback[c]);
+        lop(&s->so2.lag[c][0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
-        lop(&s->so2.lag[c][1],  19, 1e-2), down);
+        lop(&s->so2.lag[c][1],  19, 1e-3), down);
       feedback[c] = sin(2 * feedback[c] - down - up);
     }
     // compress feedback
diff @ 2019-04-18 19:32:49 +0100
diff --git a/client/go.c b/client/go.c
index a7bd30d6f..5530dc8ad 100644
--- a/client/go.c
+++ b/client/go.c
@@ -131,7 +131,7 @@ int go(S *s, int channels, const float *in, float *out) {
       sample down = pitchshift(&s->so2.shift[c][0], 1, ms4,
         lop(&s->so2.lag[c][0], -12, 1e-3), 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],  24, 1e-3), down);
       feedback[c] = sin(2 * feedback[c] - down - up);
     }
     // compress feedback
diff @ 2019-04-18 19:33:00 +0100
diff --git a/client/go.c b/client/go.c
index 5530dc8ad..e10e16333 100644
--- a/client/go.c
+++ b/client/go.c
@@ -132,7 +132,7 @@ int go(S *s, int channels, const float *in, float *out) {
         lop(&s->so2.lag[c][0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
         lop(&s->so2.lag[c][1],  24, 1e-3), down);
-      feedback[c] = sin(2 * feedback[c] - down - up);
+      feedback[c] = sin(1.5 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-04-18 19:33:09 +0100
diff --git a/client/go.c b/client/go.c
index e10e16333..618e44b58 100644
--- a/client/go.c
+++ b/client/go.c
@@ -132,7 +132,7 @@ int go(S *s, int channels, const float *in, float *out) {
         lop(&s->so2.lag[c][0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
         lop(&s->so2.lag[c][1],  24, 1e-3), down);
-      feedback[c] = sin(1.5 * (2 * feedback[c] - down - up));
+      feedback[c] = sin(2 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-04-18 19:33:15 +0100
diff --git a/client/go.c b/client/go.c
index 618e44b58..2cf3037ca 100644
--- a/client/go.c
+++ b/client/go.c
@@ -141,7 +141,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, 2000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2019-04-18 19:33:28 +0100
diff --git a/client/go.c b/client/go.c
index 2cf3037ca..aabd63160 100644
--- a/client/go.c
+++ b/client/go.c
@@ -121,7 +121,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     sample p = phasor(&s->so2.phase, 0.01);
-    sample modulation = 0 * cos(twopi * p);
+    sample modulation = ms4/16 * 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-04-18 19:33:34 +0100
diff --git a/client/go.c b/client/go.c
index aabd63160..36ca07434 100644
--- a/client/go.c
+++ b/client/go.c
@@ -120,7 +120,7 @@ int go(S *s, int channels, const float *in, float *out) {
     // trigger impulse on reload
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
-    sample p = phasor(&s->so2.phase, 0.01);
+    sample p = phasor(&s->so2.phase, bpm/60);
     sample modulation = ms4/16 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation)
diff @ 2019-04-18 19:33:38 +0100
diff --git a/client/go.c b/client/go.c
index 36ca07434..1ba4077cc 100644
--- a/client/go.c
+++ b/client/go.c
@@ -120,7 +120,7 @@ int go(S *s, int channels, const float *in, float *out) {
     // trigger impulse on reload
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
-    sample p = phasor(&s->so2.phase, bpm/60);
+    sample p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = ms4/16 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 - modulation)
diff @ 2019-04-18 19:33:46 +0100
diff --git a/client/go.c b/client/go.c
index 1ba4077cc..1d23c9472 100644
--- a/client/go.c
+++ b/client/go.c
@@ -123,8 +123,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = ms4/16 * cos(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, ms4 - modulation)
+      , delread4(&s->so2.echo[0].del, ms4 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-04-18 19:33:52 +0100
diff --git a/client/go.c b/client/go.c
index 1d23c9472..41e6c99f3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -121,7 +121,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     sample p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = ms4/16 * cos(twopi * p);
+    sample modulation = ms4/256 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, ms4 - modulation)
       , delread4(&s->so2.echo[0].del, ms4 + modulation)
diff @ 2019-04-18 19:33:58 +0100
diff --git a/client/go.c b/client/go.c
index 41e6c99f3..2696b03d8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -123,8 +123,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = ms4/256 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4 - modulation)
-      , delread4(&s->so2.echo[0].del, ms4 + modulation)
+      { delread4(&s->so2.echo[1].del, ms4/2 - modulation)
+      , delread4(&s->so2.echo[0].del, ms4/2 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-04-18 19:34:11 +0100
diff --git a/client/go.c b/client/go.c
index 2696b03d8..816ef92d4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -132,7 +132,7 @@ int go(S *s, int channels, const float *in, float *out) {
         lop(&s->so2.lag[c][0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
         lop(&s->so2.lag[c][1],  24, 1e-3), down);
-      feedback[c] = sin(2 * (2 * feedback[c] - down - up));
+      feedback[c] = sin(3 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-04-18 19:34:15 +0100
diff --git a/client/go.c b/client/go.c
index 816ef92d4..2696b03d8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -132,7 +132,7 @@ int go(S *s, int channels, const float *in, float *out) {
         lop(&s->so2.lag[c][0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
         lop(&s->so2.lag[c][1],  24, 1e-3), down);
-      feedback[c] = sin(3 * (2 * feedback[c] - down - up));
+      feedback[c] = sin(2 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-04-18 19:34:19 +0100
diff --git a/client/go.c b/client/go.c
index 2696b03d8..cd85964c7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -141,7 +141,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-04-18 19:34:23 +0100
diff --git a/client/go.c b/client/go.c
index cd85964c7..ed8680f4a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -141,7 +141,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-04-18 19:34:32 +0100
diff --git a/client/go.c b/client/go.c
index ed8680f4a..3b4cce53e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -123,8 +123,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = ms4/256 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4/2 - modulation)
-      , delread4(&s->so2.echo[0].del, ms4/2 + modulation)
+      { delread4(&s->so2.echo[1].del, ms4/4 - modulation)
+      , delread4(&s->so2.echo[0].del, ms4/4 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-04-18 19:34:37 +0100
diff --git a/client/go.c b/client/go.c
index 3b4cce53e..25e277e1f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -123,8 +123,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = ms4/256 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4/4 - modulation)
-      , delread4(&s->so2.echo[0].del, ms4/4 + modulation)
+      { delread4(&s->so2.echo[1].del, ms4/8 - modulation)
+      , delread4(&s->so2.echo[0].del, ms4/8 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-04-18 19:34:44 +0100
diff --git a/client/go.c b/client/go.c
index 25e277e1f..b39016abe 100644
--- a/client/go.c
+++ b/client/go.c
@@ -123,8 +123,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = ms4/256 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4/8 - modulation)
-      , delread4(&s->so2.echo[0].del, ms4/8 + modulation)
+      { delread4(&s->so2.echo[1].del, ms4/16 - modulation)
+      , delread4(&s->so2.echo[0].del, ms4/16 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-04-18 19:34:53 +0100
diff --git a/client/go.c b/client/go.c
index b39016abe..ec97ea307 100644
--- a/client/go.c
+++ b/client/go.c
@@ -123,8 +123,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = ms4/256 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4/16 - modulation)
-      , delread4(&s->so2.echo[0].del, ms4/16 + modulation)
+      { delread4(&s->so2.echo[1].del, ms4/32 - modulation)
+      , delread4(&s->so2.echo[0].del, ms4/32 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-04-18 19:35:00 +0100
diff --git a/client/go.c b/client/go.c
index ec97ea307..e903baa29 100644
--- a/client/go.c
+++ b/client/go.c
@@ -123,8 +123,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = ms4/256 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4/32 - modulation)
-      , delread4(&s->so2.echo[0].del, ms4/32 + modulation)
+      { delread4(&s->so2.echo[1].del, ms4/64 - modulation)
+      , delread4(&s->so2.echo[0].del, ms4/64 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-04-18 19:35:10 +0100
diff --git a/client/go.c b/client/go.c
index e903baa29..9a97559a8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -128,9 +128,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-3), 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],  24, 1e-3), down);
       feedback[c] = sin(2 * (2 * feedback[c] - down - up));
     }
diff @ 2019-04-18 19:35:22 +0100
diff --git a/client/go.c b/client/go.c
index 9a97559a8..fd67546c5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -129,9 +129,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,
-        lop(&s->so2.lag[c][0], -12, 1e-3), feedback[c]);
+        lop(&s->so2.lag[c][0],  12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4/2,
-        lop(&s->so2.lag[c][1],  24, 1e-3), down);
+        lop(&s->so2.lag[c][1], -24, 1e-3), down);
       feedback[c] = sin(2 * (2 * feedback[c] - down - up));
     }
     // compress feedback
diff @ 2019-04-18 19:35:37 +0100
diff @ 2019-04-18 19:36:02 +0100
diff --git a/client/go.c b/client/go.c
index cbd19c1a7..fa45030d3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -207,10 +207,6 @@ 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;
 
     // snd
     sample snd[2];
diff @ 2019-04-18 19:36:15 +0100
diff --git a/client/go.c b/client/go.c
index fa45030d3..2e7278284 100644
--- a/client/go.c
+++ b/client/go.c
@@ -190,7 +190,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.7 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
     uniform[0] = rand() / (double) RAND_MAX;
diff @ 2019-04-18 19:36:24 +0100
diff --git a/client/go.c b/client/go.c
index 2e7278284..74df1359b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -189,7 +189,7 @@ int go(S *s, int channels, const float *in, float *out) {
     int N = 16;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    sample probability = pow(0.5, N - zeroes);
+    sample probability = pow(0.55, N - zeroes);
     probability = (0.7 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
diff @ 2019-04-18 19:36:32 +0100
diff --git a/client/go.c b/client/go.c
index 74df1359b..60d9e28b7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -212,7 +212,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 = 100;
     snd[0] *= 10;
     snd[1] *= 10;
     snd[0] = vcf(&s->bvcf[0], snd[0] * q, freq[0], q);
diff @ 2019-04-18 19:36:44 +0100
diff --git a/client/go.c b/client/go.c
index 60d9e28b7..463c30870 100644
--- a/client/go.c
+++ b/client/go.c
@@ -190,7 +190,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.55, N - zeroes);
-    probability = (0.7 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (0.8 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
     uniform[0] = rand() / (double) RAND_MAX;
diff @ 2019-04-18 19:36:48 +0100
diff --git a/client/go.c b/client/go.c
index 463c30870..236592160 100644
--- a/client/go.c
+++ b/client/go.c
@@ -189,7 +189,7 @@ int go(S *s, int channels, const float *in, float *out) {
     int N = 16;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    sample probability = pow(0.55, N - zeroes);
+    sample probability = pow(0.57, N - zeroes);
     probability = (0.8 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
diff @ 2019-04-18 19:36:54 +0100
diff --git a/client/go.c b/client/go.c
index 236592160..039a27819 100644
--- a/client/go.c
+++ b/client/go.c
@@ -189,7 +189,7 @@ int go(S *s, int channels, const float *in, float *out) {
     int N = 16;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    sample probability = pow(0.57, N - zeroes);
+    sample probability = pow(0.6, N - zeroes);
     probability = (0.8 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
diff @ 2019-04-18 19:37:06 +0100
diff --git a/client/go.c b/client/go.c
index 039a27819..d115a2269 100644
--- a/client/go.c
+++ b/client/go.c
@@ -229,8 +229,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-04-18 19:37:15 +0100
diff --git a/client/go.c b/client/go.c
index d115a2269..b4874266c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -190,7 +190,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.6, N - zeroes);
-    probability = (0.8 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (1 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
     uniform[0] = rand() / (double) RAND_MAX;
diff @ 2019-04-18 19:37:20 +0100
diff --git a/client/go.c b/client/go.c
index b4874266c..ff191c55d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -189,7 +189,7 @@ int go(S *s, int channels, const float *in, float *out) {
     int N = 16;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    sample probability = pow(0.6, N - zeroes);
+    sample probability = pow(0.7, N - zeroes);
     probability = (1 + 0 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
diff @ 2019-04-18 19:37:29 +0100
diff --git a/client/go.c b/client/go.c
index ff191c55d..183ba3fd0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -186,7 +186,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 = 13;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
     sample probability = pow(0.7, N - zeroes);
diff @ 2019-04-18 19:37:36 +0100
diff --git a/client/go.c b/client/go.c
index 183ba3fd0..64f59509c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -190,7 +190,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.7, N - zeroes);
-    probability = (1 + 0 * (n >= 0xC001)) * probability - 0.5;
+    probability = (1 + 0.1 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
     uniform[0] = rand() / (double) RAND_MAX;
diff @ 2019-04-18 19:37:49 +0100
diff --git a/client/go.c b/client/go.c
index 64f59509c..6757e1ac5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -213,8 +213,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 = 100;
-    snd[0] *= 10;
-    snd[1] *= 10;
+    snd[0] *= 20;
+    snd[1] *= 20;
     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-04-18 19:37:59 +0100
diff --git a/client/go.c b/client/go.c
index 6757e1ac5..4a9654be3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -225,8 +225,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] += 0.1*samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
+    snd[1] += 0.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-04-18 19:38:05 +0100
diff --git a/client/go.c b/client/go.c
index 4a9654be3..155dc808b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -225,8 +225,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.1*samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
-    snd[1] += 0.1*samphold(&s->bsh2[1], snd[1], wrap(3 * pb[0]));
+    snd[0] += 0.2*samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
+    snd[1] += 0.2*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-04-18 19:38:16 +0100
diff --git a/client/go.c b/client/go.c
index 155dc808b..a28eca011 100644
--- a/client/go.c
+++ b/client/go.c
@@ -213,8 +213,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 = 100;
-    snd[0] *= 20;
-    snd[1] *= 20;
+    snd[0] *= 10;
+    snd[1] *= 10;
     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-04-18 19:38:19 +0100
diff --git a/client/go.c b/client/go.c
index a28eca011..8472cd7ab 100644
--- a/client/go.c
+++ b/client/go.c
@@ -225,8 +225,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.2*samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
-    snd[1] += 0.2*samphold(&s->bsh2[1], snd[1], wrap(3 * pb[0]));
+    snd[0] += 0.5*samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
+    snd[1] += 0.5*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-04-18 19:38:28 +0100
diff --git a/client/go.c b/client/go.c
index 8472cd7ab..37b0e0ec5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -213,8 +213,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 = 100;
-    snd[0] *= 10;
-    snd[1] *= 10;
+    snd[0] *= 5;
+    snd[1] *= 5;
     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-04-18 19:38:34 +0100
diff --git a/client/go.c b/client/go.c
index 37b0e0ec5..9753c898e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -225,8 +225,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.5*samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
-    snd[1] += 0.5*samphold(&s->bsh2[1], snd[1], wrap(3 * pb[0]));
+    snd[0] += 0.75*samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
+    snd[1] += 0.75*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-04-18 19:38:42 +0100
diff --git a/client/go.c b/client/go.c
index 9753c898e..f7f0d23f0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -225,8 +225,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.75*samphold(&s->bsh2[0], snd[0], wrap(3 * pa[0]));
-    snd[1] += 0.75*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-04-18 19:38:51 +0100
diff --git a/client/go.c b/client/go.c
index f7f0d23f0..34f4564f1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -204,9 +204,9 @@ int go(S *s, int channels, const float *in, float *out) {
     env[1] = lop(&s->benv[1], 0, 5);
     sample harmonic = 5 + 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[0] = lop(&s->bfreq[0], freq[0], 10);
     freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
-    freq[1] = lop(&s->bfreq[1], freq[1], 20);
+    freq[1] = lop(&s->bfreq[1], freq[1], 10);
 
     // snd
     sample snd[2];
diff @ 2019-04-18 19:38:55 +0100
diff --git a/client/go.c b/client/go.c
index 34f4564f1..cc71b72c2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -204,9 +204,9 @@ int go(S *s, int channels, const float *in, float *out) {
     env[1] = lop(&s->benv[1], 0, 5);
     sample harmonic = 5 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
-    freq[0] = lop(&s->bfreq[0], freq[0], 10);
+    freq[0] = lop(&s->bfreq[0], freq[0], 1);
     freq[1] = samphold(&s->bsh[1], 10 * harmonic, 1 - trigger[1]);
-    freq[1] = lop(&s->bfreq[1], freq[1], 10);
+    freq[1] = lop(&s->bfreq[1], freq[1], 1);
 
     // snd
     sample snd[2];
diff @ 2019-04-18 19:39:03 +0100
diff --git a/client/go.c b/client/go.c
index cc71b72c2..c0a3cd433 100644
--- a/client/go.c
+++ b/client/go.c
@@ -200,8 +200,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], 0, 3);
+    env[1] = lop(&s->benv[1], 0, 3);
     sample harmonic = 5 + clamp(N - zeroes, 0, 20);
     freq[0] = samphold(&s->bsh[0], 10 * harmonic, 1 - trigger[0]);
     freq[0] = lop(&s->bfreq[0], freq[0], 1);
diff @ 2019-04-18 19:39:18 +0100
diff --git a/client/go.c b/client/go.c
index c0a3cd433..d6352073d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -189,7 +189,7 @@ int go(S *s, int channels, const float *in, float *out) {
     int N = 13;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    sample probability = pow(0.7, N - zeroes);
+    sample probability = pow(0.6, N - zeroes);
     probability = (1 + 0.1 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
diff @ 2019-04-18 19:39:26 +0100
diff --git a/client/go.c b/client/go.c
index d6352073d..88941281c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -189,7 +189,7 @@ int go(S *s, int channels, const float *in, float *out) {
     int N = 13;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    sample probability = pow(0.6, N - zeroes);
+    sample probability = pow(0.55, N - zeroes);
     probability = (1 + 0.1 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
diff @ 2019-04-18 19:39:30 +0100
diff --git a/client/go.c b/client/go.c
index 88941281c..40d8bc494 100644
--- a/client/go.c
+++ b/client/go.c
@@ -189,7 +189,7 @@ int go(S *s, int channels, const float *in, float *out) {
     int N = 13;
     int n = (time / 5) & ((1 << N) - 1);
     sample zeroes = clamp(count_trailing_zeroes(n), 0, N);
-    sample probability = pow(0.55, N - zeroes);
+    sample probability = pow(0.52, N - zeroes);
     probability = (1 + 0.1 * (n >= 0xC001)) * probability - 0.5;
     probability = clamp(probability, 0, 1);
     sample uniform[2];
diff @ 2019-04-18 19:39:45 +0100
diff @ 2019-04-18 19:39:59 +0100
diff --git a/client/go.c b/client/go.c
index f1659288c..62257466e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -262,7 +262,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-04-18 19:40:05 +0100
diff --git a/client/go.c b/client/go.c
index 62257466e..ac3d87a38 100644
--- a/client/go.c
+++ b/client/go.c
@@ -257,8 +257,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, 5)*5)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
-    kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
-         *  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-04-18 19:40:13 +0100
diff --git a/client/go.c b/client/go.c
index ac3d87a38..5c9fc164f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -255,7 +255,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*7, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*9, 5)*5);
diff @ 2019-04-18 19:40:20 +0100
diff --git a/client/go.c b/client/go.c
index 5c9fc164f..9ba578268 100644
--- a/client/go.c
+++ b/client/go.c
@@ -256,7 +256,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 * 3, 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);
diff @ 2019-04-18 19:40:26 +0100
diff --git a/client/go.c b/client/go.c
index 9ba578268..50073e70f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -256,7 +256,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 * 3, 5)*5);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 15)*15);
     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);
diff @ 2019-04-18 19:40:35 +0100
diff --git a/client/go.c b/client/go.c
index 50073e70f..d2949f621 100644
--- a/client/go.c
+++ b/client/go.c
@@ -253,7 +253,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 = 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 * 3, 15)*15);
diff @ 2019-04-18 19:40:53 +0100
diff --git a/client/go.c b/client/go.c
index d2949f621..d0de29060 100644
--- a/client/go.c
+++ b/client/go.c
@@ -259,7 +259,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 15)*15);
     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);
+    sample crush = phasor(&s->tcrush, 3000 * pow(2, sin(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-04-18 19:40:59 +0100
diff --git a/client/go.c b/client/go.c
index d0de29060..5beae7414 100644
--- a/client/go.c
+++ b/client/go.c
@@ -259,7 +259,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 15)*15);
     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 * pow(2, sin(twopi * p)));
+    sample crush = phasor(&s->tcrush, 4000 * pow(2, sin(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-04-18 19:41:22 +0100
diff --git a/client/go.c b/client/go.c
index 5beae7414..ef5f5de68 100644
--- a/client/go.c
+++ b/client/go.c
@@ -243,7 +243,7 @@ int go(S *s, int channels, const float *in, float *out) {
   {
     sample tilex[2] = { 0, 0 };
     p = wrap(time / 5.0 / (1 << 16));
-    sample kick = 1 - wrap(16 * p);
+    sample kick = 1 - wrap(4 * wrap(4 * p));
     kick *= kick;
     kick *= kick;
     kick *= kick;
diff @ 2019-04-18 19:41:30 +0100
diff --git a/client/go.c b/client/go.c
index ef5f5de68..bc9f54d78 100644
--- a/client/go.c
+++ b/client/go.c
@@ -243,7 +243,7 @@ int go(S *s, int channels, const float *in, float *out) {
   {
     sample tilex[2] = { 0, 0 };
     p = wrap(time / 5.0 / (1 << 16));
-    sample kick = 1 - wrap(4 * wrap(4 * p));
+    sample kick = 1 - wrap(8./3 * wrap(4 * p));
     kick *= kick;
     kick *= kick;
     kick *= kick;
diff @ 2019-04-18 19:41:39 +0100
diff --git a/client/go.c b/client/go.c
index bc9f54d78..60bcbadc2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -248,7 +248,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick *= kick;
     kick *= kick;
     sample kickenv = kick;
-    kick *= 16;
+    kick *= 20;
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
diff @ 2019-04-18 19:41:43 +0100
diff --git a/client/go.c b/client/go.c
index 60bcbadc2..2a101cbac 100644
--- a/client/go.c
+++ b/client/go.c
@@ -248,7 +248,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick *= kick;
     kick *= kick;
     sample kickenv = kick;
-    kick *= 20;
+    kick *= 30;
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
diff @ 2019-04-18 19:41:49 +0100
diff --git a/client/go.c b/client/go.c
index 2a101cbac..b07d66d2d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -248,7 +248,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick *= kick;
     kick *= kick;
     sample kickenv = kick;
-    kick *= 30;
+    kick *= 40;
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
diff @ 2019-04-18 19:41:53 +0100
diff --git a/client/go.c b/client/go.c
index b07d66d2d..c70dc8e25 100644
--- a/client/go.c
+++ b/client/go.c
@@ -248,7 +248,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick *= kick;
     kick *= kick;
     sample kickenv = kick;
-    kick *= 40;
+    kick *= 50;
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
diff @ 2019-04-18 19:42:01 +0100
diff --git a/client/go.c b/client/go.c
index c70dc8e25..9ab90a8f5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -233,7 +233,7 @@ int go(S *s, int channels, const float *in, float *out) {
     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;
+    sample gain =0;
     mixdown[0] = snd[0] * gain;
     mixdown[1] = snd[1] * gain;
   }
diff @ 2019-04-18 19:42:11 +0100
diff --git a/client/go.c b/client/go.c
index 9ab90a8f5..bbcf01a8b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -257,8 +257,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 * 3, 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, 4000 * pow(2, sin(twopi * p)));
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
diff @ 2019-04-18 19:42:19 +0100
diff --git a/client/go.c b/client/go.c
index bbcf01a8b..b880278b7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -256,7 +256,7 @@ int go(S *s, int channels, const float *in, float *out) {
     hat *= 1;
     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 * 3, 15)*15);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 25)*25);
     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, 4000 * pow(2, sin(twopi * p)));
diff @ 2019-04-18 19:42:23 +0100
diff --git a/client/go.c b/client/go.c
index b880278b7..ce9250f49 100644
--- a/client/go.c
+++ b/client/go.c
@@ -252,7 +252,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 = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2019-04-18 19:42:31 +0100
diff --git a/client/go.c b/client/go.c
index ce9250f49..2c92bb992 100644
--- a/client/go.c
+++ b/client/go.c
@@ -252,7 +252,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(64 * p) < 0.125 * p;
     hat *= 1;
     sample khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2019-04-18 19:42:52 +0100
diff --git a/client/go.c b/client/go.c
index 2c92bb992..821a90148 100644
--- a/client/go.c
+++ b/client/go.c
@@ -254,7 +254,7 @@ int go(S *s, int channels, const float *in, float *out) {
     kick = tanh(kick);
     sample hat = wrap(64 * p) < 0.125 * p;
     hat *= 1;
-    sample khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
+    sample khz = 50 + 10 * (wrap(8 * p) > 0.5) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 25)*25);
     kick += sin(vcf(&s->tkick[2], kick, khz*7, 50)*5)
diff @ 2019-04-18 19:42:57 +0100
diff @ 2019-04-18 19:43:10 +0100
diff --git a/client/go.c b/client/go.c
index b0cf96bf2..3a063c1a5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -300,8 +300,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-04-18 19:43:17 +0100
diff --git a/client/go.c b/client/go.c
index 3a063c1a5..0837621e4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -293,7 +293,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 : 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-04-18 19:43:21 +0100
diff --git a/client/go.c b/client/go.c
index 0837621e4..ba1483ce4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -293,7 +293,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 = 60000 / bpm * (p < 0.5 ? 1 : 1./4);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:43:25 +0100
diff --git a/client/go.c b/client/go.c
index ba1483ce4..7646850ee 100644
--- a/client/go.c
+++ b/client/go.c
@@ -300,8 +300,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-04-18 19:43:31 +0100
diff --git a/client/go.c b/client/go.c
index 7646850ee..078b4f6ed 100644
--- a/client/go.c
+++ b/client/go.c
@@ -300,8 +300,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-04-18 19:43:38 +0100
diff --git a/client/go.c b/client/go.c
index 078b4f6ed..26159da57 100644
--- a/client/go.c
+++ b/client/go.c
@@ -300,8 +300,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-04-18 19:43:57 +0100
diff --git a/client/go.c b/client/go.c
index 26159da57..4335c85d2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -287,6 +287,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
 ///{{{ EL DAY DE LAY
   {
+    p = wrap(2 * p);
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
     sample t = twopi * p;
diff @ 2019-04-18 19:44:04 +0100
diff --git a/client/go.c b/client/go.c
index 4335c85d2..3f9b32b91 100644
--- a/client/go.c
+++ b/client/go.c
@@ -287,7 +287,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
 ///{{{ EL DAY DE LAY
   {
-    p = wrap(2 * p);
+    p = wrap(4 * p);
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
     sample t = twopi * p;
diff @ 2019-04-18 19:44:13 +0100
diff --git a/client/go.c b/client/go.c
index 3f9b32b91..d457bb9f6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -271,7 +271,7 @@ int go(S *s, int channels, const float *in, float *out) {
     sample crush = phasor(&s->tcrush, 4000 * pow(2, sin(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-04-18 19:44:23 +0100
diff --git a/client/go.c b/client/go.c
index d457bb9f6..779f6a70b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -301,8 +301,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.6, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.6, 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-04-18 19:44:29 +0100
diff --git a/client/go.c b/client/go.c
index 779f6a70b..94f8079b6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -301,8 +301,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.6, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.6, 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], 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-04-18 19:44:40 +0100
diff --git a/client/go.c b/client/go.c
index 94f8079b6..404a0cc81 100644
--- a/client/go.c
+++ b/client/go.c
@@ -287,7 +287,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
 ///{{{ EL DAY DE LAY
   {
-    p = wrap(4 * p);
+    p = wrap(2 * p);
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
     sample t = twopi * p;
diff @ 2019-04-18 19:44:50 +0100
diff --git a/client/go.c b/client/go.c
index 404a0cc81..e1bba77d1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -293,8 +293,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 : 1./4);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./16);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./4);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 2./3 : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:45:02 +0100
diff --git a/client/go.c b/client/go.c
index e1bba77d1..2e201b3ee 100644
--- a/client/go.c
+++ b/client/go.c
@@ -293,7 +293,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./2 : 1./4);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./8);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 2./3 : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2019-04-18 19:45:12 +0100
diff --git a/client/go.c b/client/go.c
index 2e201b3ee..20c56302a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -293,7 +293,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./2 : 1./8);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./24);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 2./3 : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2019-04-18 19:45:17 +0100
diff --git a/client/go.c b/client/go.c
index 20c56302a..8494b9af7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -294,7 +294,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./24);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 2./3 : 1./16);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 2./3 : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:45:24 +0100
diff --git a/client/go.c b/client/go.c
index 8494b9af7..10f9e2bd1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -294,7 +294,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./24);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 2./3 : 1./32);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 2./6 : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:45:29 +0100
diff --git a/client/go.c b/client/go.c
index 10f9e2bd1..bb71b86fb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -294,7 +294,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./24);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 2./6 : 1./32);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 2./8 : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:46:23 +0100
diff --git a/client/go.c b/client/go.c
index bb71b86fb..a1ead0334 100644
--- a/client/go.c
+++ b/client/go.c
@@ -129,6 +129,7 @@ typedef struct {
   LOP elop[2];
   LOP elop2[2];
   HIP ehip2[2];
+  SAMPHOLD elsh[4];
 ///]]] EL DAY DE LAY
 
 ///[[[ PEGASUS V3.7+SEF
@@ -294,7 +295,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./24);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 2./8 : 1./32);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p_)/8 : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:46:25 +0100
diff --git a/client/go.c b/client/go.c
index a1ead0334..95c7780bc 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,7 +295,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./24);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p_)/8 : 1./32);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:46:41 +0100
diff --git a/client/go.c b/client/go.c
index 95c7780bc..bf0af069d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -294,7 +294,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./2 : 1./24);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./24);
     sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2019-04-18 19:47:12 +0100
diff --git a/client/go.c b/client/go.c
index bf0af069d..10234b061 100644
--- a/client/go.c
+++ b/client/go.c
@@ -294,7 +294,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 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./24);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(1 << samphold(&s->elsh[1], rand() % 8, p));
     sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2019-04-18 19:47:13 +0100
diff --git a/client/go.c b/client/go.c
index 10234b061..caaef1b08 100644
--- a/client/go.c
+++ b/client/go.c
@@ -294,7 +294,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 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(1 << samphold(&s->elsh[1], rand() % 8, p));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(1 << samphold(&s->elsh[1], rand() % 8, p)));
     sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2019-04-18 19:47:20 +0100
diff --git a/client/go.c b/client/go.c
index caaef1b08..289e0a69a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,7 +295,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 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(1 << samphold(&s->elsh[1], rand() % 8, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./32);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(1 << samphold(&s->elsh[3], rand() % 8, p))));
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:47:24 +0100
diff --git a/client/go.c b/client/go.c
index 289e0a69a..8a18922a4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,7 +295,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 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(1 << samphold(&s->elsh[1], rand() % 8, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(1 << samphold(&s->elsh[3], rand() % 8, p))));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(1 << samphold(&s->elsh[3], rand() % 8, p)));
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:47:44 +0100
diff --git a/client/go.c b/client/go.c
index 8a18922a4..f5d107ce6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -294,8 +294,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 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(1 << samphold(&s->elsh[1], rand() % 8, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(1 << samphold(&s->elsh[3], rand() % 8, p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(samphold(&s->elsh[1], 1 << (rand() % 8), p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(samphold(&s->elsh[3], 1 <<  (rand() % 8), p)));
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:48:04 +0100
diff --git a/client/go.c b/client/go.c
index f5d107ce6..d98761a99 100644
--- a/client/go.c
+++ b/client/go.c
@@ -140,6 +140,7 @@ typedef struct {
 int go(S *s, int channels, const float *in, float *out) {
   if (s->reloaded) {
diff @ 2019-04-18 19:48:07 +0100
diff --git a/client/go.c b/client/go.c
index d98761a99..c8262e5e3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -140,7 +140,7 @@ typedef struct {
 int go(S *s, int channels, const float *in, float *out) {
   if (s->reloaded) {
diff @ 2019-04-18 19:48:15 +0100
diff --git a/client/go.c b/client/go.c
index c8262e5e3..d98761a99 100644
--- a/client/go.c
+++ b/client/go.c
@@ -140,7 +140,7 @@ typedef struct {
 int go(S *s, int channels, const float *in, float *out) {
   if (s->reloaded) {
diff @ 2019-04-18 19:48:31 +0100
diff --git a/client/go.c b/client/go.c
index d98761a99..bb1b435b5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,8 +295,8 @@ memset(s, 0, sizeof(*s));
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(samphold(&s->elsh[1], 1 << (rand() % 8), p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(samphold(&s->elsh[3], 1 <<  (rand() % 8), p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(samphold(&s->elsh[1], 1 << (rand() % 8) + 1, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(samphold(&s->elsh[3], 1 <<  (rand() % 8) + 1, p)));
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:48:39 +0100
diff --git a/client/go.c b/client/go.c
index bb1b435b5..e09292053 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,8 +295,8 @@ memset(s, 0, sizeof(*s));
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(samphold(&s->elsh[1], 1 << (rand() % 8) + 1, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(samphold(&s->elsh[3], 1 <<  (rand() % 8) + 1, p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 1, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 1, p)));
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:48:57 +0100
diff --git a/client/go.c b/client/go.c
index e09292053..159fc12f0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -303,8 +303,8 @@ memset(s, 0, sizeof(*s));
     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(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] = 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-04-18 19:49:04 +0100
diff --git a/client/go.c b/client/go.c
index 159fc12f0..0530075f6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -140,7 +140,7 @@ typedef struct {
 int go(S *s, int channels, const float *in, float *out) {
   if (s->reloaded) {
diff @ 2019-04-18 19:49:20 +0100
diff --git a/client/go.c b/client/go.c
index 0530075f6..6b9e8de35 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 crush = phasor(&s->tcrush, 4000 * pow(2, sin(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-04-18 19:49:49 +0100
diff --git a/client/go.c b/client/go.c
index 6b9e8de35..f17895420 100644
--- a/client/go.c
+++ b/client/go.c
@@ -303,8 +303,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-04-18 19:50:08 +0100
diff --git a/client/go.c b/client/go.c
index f17895420..dd394d123 100644
--- a/client/go.c
+++ b/client/go.c
@@ -303,8 +303,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, pow(wrap(8 * p), (sample) 0.25), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 1));
     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-04-18 19:50:33 +0100
diff --git a/client/go.c b/client/go.c
index dd394d123..c12d7e7bf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -305,8 +305,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, pow(wrap(8 * p), (sample) 0.25), 1));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 1));
-    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-04-18 19:50:37 +0100
diff --git a/client/go.c b/client/go.c
index c12d7e7bf..34b0e2bf7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -305,8 +305,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, pow(wrap(8 * p), (sample) 0.25), 1));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 1));
-    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-04-18 19:50:41 +0100
diff --git a/client/go.c b/client/go.c
index 34b0e2bf7..aed241861 100644
--- a/client/go.c
+++ b/client/go.c
@@ -305,8 +305,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, pow(wrap(8 * p), (sample) 0.25), 1));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 1));
-    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), 4000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 4000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-04-18 19:50:48 +0100
diff --git a/client/go.c b/client/go.c
index aed241861..da3e9a5ee 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 crush = phasor(&s->tcrush, 4000 * pow(2, sin(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-04-18 19:51:06 +0100
diff --git a/client/go.c b/client/go.c
index da3e9a5ee..4cedce1bc 100644
--- a/client/go.c
+++ b/client/go.c
@@ -303,8 +303,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), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 1));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), (sample) 0.125), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.125), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 4000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 4000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-04-18 19:51:16 +0100
diff --git a/client/go.c b/client/go.c
index 4cedce1bc..d8e60456f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -297,8 +297,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 1, p)));
     sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 1, p)));
-    ldelms = lop(&s->elop[0], ldelms, 5);
-    rdelms = lop(&s->elop[1], rdelms, 5);
+    ldelms = lop(&s->elop[0], ldelms, 15);
+    rdelms = lop(&s->elop[1], rdelms, 15);
     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-04-18 19:51:49 +0100
diff --git a/client/go.c b/client/go.c
index d8e60456f..d9e1fc21e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -305,7 +305,7 @@ 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, pow(wrap(8 * p), (sample) 0.125), 1));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.125), 1));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 4000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 50), 4000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 4000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
diff @ 2019-04-18 19:51:50 +0100
diff --git a/client/go.c b/client/go.c
index d9e1fc21e..452e8f221 100644
--- a/client/go.c
+++ b/client/go.c
@@ -306,7 +306,7 @@ int go(S *s, int channels, const float *in, float *out) {
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), (sample) 0.125), 1));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.125), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 50), 4000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 4000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 50), 4000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-04-18 19:51:57 +0100
diff --git a/client/go.c b/client/go.c
index 452e8f221..138a07847 100644
--- a/client/go.c
+++ b/client/go.c
@@ -305,8 +305,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, pow(wrap(8 * p), (sample) 0.125), 1));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.125), 1));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 50), 4000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 50), 4000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 100), 4000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 100), 4000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-04-18 19:52:01 +0100
diff --git a/client/go.c b/client/go.c
index 138a07847..52231c98e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -305,8 +305,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, pow(wrap(8 * p), (sample) 0.125), 1));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.125), 1));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 100), 4000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 100), 4000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 4000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 4000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-04-18 19:52:13 +0100
diff --git a/client/go.c b/client/go.c
index 52231c98e..b6ba6976f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -278,7 +278,7 @@ int go(S *s, int channels, const float *in, float *out) {
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
     compress(tilex, &s->tcompress, 5, 10, 25, 48, tilex);
-    sample gain = 1;
+    sample gain = 0;
     gain = samphold(&s->tgate[1], gain, p);
     tilex[0] *= gain;
     tilex[1] *= gain;
diff @ 2019-04-18 19:52:29 +0100
diff --git a/client/go.c b/client/go.c
index b6ba6976f..05fb24978 100644
--- a/client/go.c
+++ b/client/go.c
@@ -297,8 +297,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 1, p)));
     sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 1, p)));
-    ldelms = lop(&s->elop[0], ldelms, 15);
-    rdelms = lop(&s->elop[1], rdelms, 15);
+    ldelms = lop(&s->elop[0], ldelms, 1);
+    rdelms = lop(&s->elop[1], rdelms, 1);
     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-04-18 19:52:46 +0100
diff --git a/client/go.c b/client/go.c
index 05fb24978..d15bbbd1c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,8 +295,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 ? samphold(&s->elsh[0], (rand() % 8) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 1, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 8) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 1, p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 4) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 1, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 4) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 1, p)));
     ldelms = lop(&s->elop[0], ldelms, 1);
     rdelms = lop(&s->elop[1], rdelms, 1);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:52:53 +0100
diff --git a/client/go.c b/client/go.c
index d15bbbd1c..2f022597e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,8 +295,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 ? samphold(&s->elsh[0], (rand() % 4) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 1, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 4) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 1, p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 1, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 16) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 1, p)));
     ldelms = lop(&s->elop[0], ldelms, 1);
     rdelms = lop(&s->elop[1], rdelms, 1);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:53:04 +0100
diff --git a/client/go.c b/client/go.c
index 2f022597e..f944aeffb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,8 +295,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 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 1, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 16) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 1, p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 3, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 16) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 3, p)));
     ldelms = lop(&s->elop[0], ldelms, 1);
     rdelms = lop(&s->elop[1], rdelms, 1);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:53:10 +0100
diff --git a/client/go.c b/client/go.c
index f944aeffb..00e038f2b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,8 +295,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 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 3, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 16) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 3, p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 4, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 16) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 4, p)));
     ldelms = lop(&s->elop[0], ldelms, 1);
     rdelms = lop(&s->elop[1], rdelms, 1);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:53:14 +0100
diff --git a/client/go.c b/client/go.c
index 00e038f2b..853bbaa36 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,8 +295,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 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 4, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 16) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 4, p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 6, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 16) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 6, p)));
     ldelms = lop(&s->elop[0], ldelms, 1);
     rdelms = lop(&s->elop[1], rdelms, 1);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:53:27 +0100
diff --git a/client/go.c b/client/go.c
index 853bbaa36..25369c6e3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -303,8 +303,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.125), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.125), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.125), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.125), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 4000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 4000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-04-18 19:53:33 +0100
diff --git a/client/go.c b/client/go.c
index 25369c6e3..a365f90b7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -303,8 +303,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.125), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.125), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.125), 0));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.125), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 4000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 4000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2019-04-18 19:53:40 +0100
diff --git a/client/go.c b/client/go.c
index a365f90b7..c6886e411 100644
--- a/client/go.c
+++ b/client/go.c
@@ -297,8 +297,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 6, p)));
     sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 16) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 6, p)));
-    ldelms = lop(&s->elop[0], ldelms, 1);
-    rdelms = lop(&s->elop[1], rdelms, 1);
+    ldelms = lop(&s->elop[0], ldelms, 10);
+    rdelms = lop(&s->elop[1], rdelms, 10);
     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-04-18 19:53:55 +0100
diff --git a/client/go.c b/client/go.c
index c6886e411..eea8e99f4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -292,7 +292,7 @@ int go(S *s, int channels, const float *in, float *out) {
     p = wrap(2 * p);
     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.75 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 6, p)));
diff @ 2019-04-18 19:54:00 +0100
diff --git a/client/go.c b/client/go.c
index eea8e99f4..c8efac1db 100644
--- a/client/go.c
+++ b/client/go.c
@@ -292,7 +292,7 @@ int go(S *s, int channels, const float *in, float *out) {
     p = wrap(2 * p);
     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.75 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 6, p)));
diff @ 2019-04-18 19:54:04 +0100
diff --git a/client/go.c b/client/go.c
index c8efac1db..f1038c313 100644
--- a/client/go.c
+++ b/client/go.c
@@ -292,7 +292,7 @@ int go(S *s, int channels, const float *in, float *out) {
     p = wrap(2 * p);
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
-    sample t = 4 * twopi * p;
+    sample t = 8 * twopi * p;
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 6, p)));
diff @ 2019-04-18 19:54:06 +0100
diff --git a/client/go.c b/client/go.c
index f1038c313..ee8f6e9a9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -292,7 +292,7 @@ int go(S *s, int channels, const float *in, float *out) {
     p = wrap(2 * p);
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
-    sample t = 8 * twopi * p;
+    sample t = 16 * twopi * p;
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 6, p)));
diff @ 2019-04-18 19:54:18 +0100
diff --git a/client/go.c b/client/go.c
index ee8f6e9a9..93610e23b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -289,7 +289,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
 ///{{{ EL DAY DE LAY
   {
-    p = wrap(2 * p);
+    p = wrap(4 * p);
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
     sample t = 16 * twopi * p;
diff @ 2019-04-18 19:54:22 +0100
diff --git a/client/go.c b/client/go.c
index 93610e23b..f66da638a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -289,7 +289,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
 ///{{{ EL DAY DE LAY
   {
-    p = wrap(4 * p);
+    p = wrap(8 * p);
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
     sample t = 16 * twopi * p;
diff @ 2019-04-18 19:54:37 +0100
diff --git a/client/go.c b/client/go.c
index f66da638a..5f8b64697 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,8 +295,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample t = 16 * twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 16) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 6, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 16) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 6, p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 2) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 6, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 2) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 6, p)));
     ldelms = lop(&s->elop[0], ldelms, 10);
     rdelms = lop(&s->elop[1], rdelms, 10);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:54:54 +0100
diff --git a/client/go.c b/client/go.c
index 5f8b64697..851a62818 100644
--- a/client/go.c
+++ b/client/go.c
@@ -305,8 +305,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.125), 0));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.125), 0));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 4000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 4000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 4000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 4000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-04-18 19:55:05 +0100
diff --git a/client/go.c b/client/go.c
index 851a62818..da93d83eb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,8 +295,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample t = 16 * twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 2) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 8) + 6, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 2) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 8) + 6, p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 2) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 4) + 6, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 2) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 4) + 6, p)));
     ldelms = lop(&s->elop[0], ldelms, 10);
     rdelms = lop(&s->elop[1], rdelms, 10);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:55:12 +0100
diff --git a/client/go.c b/client/go.c
index da93d83eb..8e975c460 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,8 +295,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample t = 16 * twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 2) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 4) + 6, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 2) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 4) + 6, p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 2) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 2) + 6, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 2) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 2) + 6, p)));
     ldelms = lop(&s->elop[0], ldelms, 10);
     rdelms = lop(&s->elop[1], rdelms, 10);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:55:15 +0100
diff --git a/client/go.c b/client/go.c
index 8e975c460..40edb8ecf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,8 +295,8 @@ int go(S *s, int channels, const float *in, float *out) {
     sample t = 16 * twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 2) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 2) + 6, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 2) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 2) + 6, p)));
+    sample ldelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[0], (rand() % 2) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 2) + 8, p)));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 2) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 2) + 8, p)));
     ldelms = lop(&s->elop[0], ldelms, 10);
     rdelms = lop(&s->elop[1], rdelms, 10);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:55:23 +0100
diff --git a/client/go.c b/client/go.c
index 40edb8ecf..d003277c3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -296,7 +296,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 ? samphold(&s->elsh[0], (rand() % 2) + 1, p)/8 : 1./(1 + samphold(&s->elsh[1], 1 << (rand() % 2) + 8, p)));
-    sample rdelms = 60000 / bpm * (p < 0.5 ? samphold(&s->elsh[2], (rand() % 2) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 2) + 8, p)));
+    sample rdelms = 60000 / bpm * (p < 0.75 ? samphold(&s->elsh[2], (rand() % 2) + 1, p)/8 : 1./(1+ samphold(&s->elsh[3], 1 <<  (rand() % 2) + 8, p)));
     ldelms = lop(&s->elop[0], ldelms, 10);
     rdelms = lop(&s->elop[1], rdelms, 10);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-04-18 19:55:35 +0100
diff @ 2019-04-18 19:55:49 +0100
diff --git a/client/go.c b/client/go.c
index 854c6ce8e..f15c96721 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,8 +355,8 @@ int go(S *s, int channels, const float *in, float *out) {
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
-    mixdown[0] = es[0];
-    mixdown[1] = es[1];
+    mixdown[0] = 0*es[0];
+    mixdown[1] = 0*es[1];
   }
 ///}}} EL DAY DE LAY
 
diff @ 2019-04-18 19:56:07 +0100
diff --git a/client/go.c b/client/go.c
index f15c96721..91e7838e0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -296,6 +296,7 @@ int go(S *s, int channels, const float *in, float *out) {
 ///}}} BINARAY /5
 
 ///{{{ TOTAL INTRALIMINAL EXTRACTION
+if(0)
   {
     sample tilex[2] = { 0, 0 };
     p = wrap(time / 5.0 / (1 << 16));
@@ -333,6 +334,7 @@ int go(S *s, int channels, const float *in, float *out) {
 ///}}} TOTAL INTRALIMINAL EXTRACTION
 
 ///{{{ EL DAY DE LAY
+if(0)
   {
     p = wrap(8 * p);
     s->edelay1.length = 4 * SR;
diff @ 2019-04-18 19:56:19 +0100
diff --git a/client/go.c b/client/go.c
index 91e7838e0..66f4e1a7d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -242,9 +242,10 @@ int go(S *s, int channels, const float *in, float *out) {
 ///}}} SEA ORGAN 2.2
 
 ///{{{ BINARAY /5
-  {
     // seq
     time = s->time++;
+if(0)
+  {
     sample env[2];
     sample freq[2];
     int N = 13;
diff @ 2019-04-18 19:56:27 +0100
diff --git a/client/go.c b/client/go.c
index 66f4e1a7d..2f28f2df7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -205,6 +205,7 @@ int go(S *s, int channels, const float *in, float *out) {
 ///))) MIXDOWN
 
 ///{{{ SEA ORGAN 2.2
+if(0)
   {
     sample RESET = 0;
     sample so2[2] = { 0, 0 };
diff @ 2019-04-18 19:56:39 +0100
diff --git a/client/go.c b/client/go.c
index 2f28f2df7..cfe45c03f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -472,7 +472,7 @@ if(0)
     kick *= kick;
     kick *= kick;
     kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, 10),
-      tanh(sin(twopi * 20 * active * kick *
+      tanh(sin(twopi * 30 * active * kick *
         ((0 <= r && r < 0.5) || (0.625 <= r))
         ) * (0.5 + kick))));
     sample output[2] =
diff @ 2019-04-18 19:56:49 +0100
diff --git a/client/go.c b/client/go.c
index cfe45c03f..a586fc066 100644
--- a/client/go.c
+++ b/client/go.c
@@ -471,7 +471,7 @@ if(0)
     kick *= kick;
     kick *= kick;
     kick *= kick;
-    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, 10),
+    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, 15),
       tanh(sin(twopi * 30 * active * kick *
         ((0 <= r && r < 0.5) || (0.625 <= r))
         ) * (0.5 + kick))));
diff @ 2019-04-18 19:56:54 +0100
diff --git a/client/go.c b/client/go.c
index a586fc066..347d47523 100644
--- a/client/go.c
+++ b/client/go.c
@@ -471,7 +471,7 @@ if(0)
     kick *= kick;
     kick *= kick;
     kick *= kick;
-    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, 15),
+    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, 20),
       tanh(sin(twopi * 30 * active * kick *
         ((0 <= r && r < 0.5) || (0.625 <= r))
         ) * (0.5 + kick))));
diff @ 2019-04-18 19:56:58 +0100
diff --git a/client/go.c b/client/go.c
index 347d47523..6cb08650b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -471,7 +471,7 @@ if(0)
     kick *= kick;
     kick *= kick;
     kick *= kick;
-    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, 20),
+    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, 26),
       tanh(sin(twopi * 30 * active * kick *
         ((0 <= r && r < 0.5) || (0.625 <= r))
         ) * (0.5 + kick))));
diff @ 2019-04-18 19:57:09 +0100
diff --git a/client/go.c b/client/go.c
index 6cb08650b..2d9732b02 100644
--- a/client/go.c
+++ b/client/go.c
@@ -461,10 +461,10 @@ if(0)
     env2 = lop(&s->pdeclick[1], samphold(&s->psh[2], env2, env2), 40);
     // tones
     sample o = sin((1 + 2 * sin(pi * r)) * env * mixdown[0] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[0], delread1(&s->pdel2, ms4/4), 1500 * pow(2, sin(twopi * r * 32)), 3));
-    o += biquad(lowpass(&s->pbq[6], 2000 * pow(2, env), flatq), o);
+    o += biquad(lowpass(&s->pbq[6], 2000 * pow(4, env), flatq), o);
     o += biquad(highpass(&s->pbq[7], 50, flatq), o);
     sample o2= sin((1 + 2 * sin(pi * r)) * env2 *mixdown[1] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[1], delread1(&s->pdel1, ms4/4), 1500 * pow(2, cos(twopi * r * 32)), 3));
-    o2 += biquad(lowpass(&s->pbq[8], 2000 * pow(2, env2), flatq), o2);
+    o2 += biquad(lowpass(&s->pbq[8], 2000 * pow(4 env2), flatq), o2);
     o2 += biquad(highpass(&s->pbq[9], 50, flatq), o2);
     // kick
     sample kick = gate * (1 - wrap((r < 0.5 ? 6 : 6) * p));
diff @ 2019-04-18 19:57:19 +0100
diff --git a/client/go.c b/client/go.c
index 2d9732b02..09c9e41db 100644
--- a/client/go.c
+++ b/client/go.c
@@ -457,8 +457,8 @@ if(0)
            wrap(3 * p)))));
     env  = mix(1, env,  stop * r);
     env2 = mix(1, env2, stop * r);
-    env  = lop(&s->pdeclick[0], samphold(&s->psh[1], env, env), 40);
-    env2 = lop(&s->pdeclick[1], samphold(&s->psh[2], env2, env2), 40);
+    env  = lop(&s->pdeclick[0], samphold(&s->psh[1], env, env), 20);
+    env2 = lop(&s->pdeclick[1], samphold(&s->psh[2], env2, env2), 20);
     // tones
     sample o = sin((1 + 2 * sin(pi * r)) * env * mixdown[0] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[0], delread1(&s->pdel2, ms4/4), 1500 * pow(2, sin(twopi * r * 32)), 3));
     o += biquad(lowpass(&s->pbq[6], 2000 * pow(4, env), flatq), o);
diff @ 2019-04-18 19:57:28 +0100
diff --git a/client/go.c b/client/go.c
index 09c9e41db..2bbc9be0d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -461,10 +461,10 @@ if(0)
     env2 = lop(&s->pdeclick[1], samphold(&s->psh[2], env2, env2), 20);
     // tones
     sample o = sin((1 + 2 * sin(pi * r)) * env * mixdown[0] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[0], delread1(&s->pdel2, ms4/4), 1500 * pow(2, sin(twopi * r * 32)), 3));
-    o += biquad(lowpass(&s->pbq[6], 2000 * pow(4, env), flatq), o);
+    o += biquad(lowpass(&s->pbq[6], 4000 * pow(4, env), flatq), o);
     o += biquad(highpass(&s->pbq[7], 50, flatq), o);
     sample o2= sin((1 + 2 * sin(pi * r)) * env2 *mixdown[1] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[1], delread1(&s->pdel1, ms4/4), 1500 * pow(2, cos(twopi * r * 32)), 3));
-    o2 += biquad(lowpass(&s->pbq[8], 2000 * pow(4 env2), flatq), o2);
+    o2 += biquad(lowpass(&s->pbq[8], 4000 * pow(4 env2), flatq), o2);
     o2 += biquad(highpass(&s->pbq[9], 50, flatq), o2);
     // kick
     sample kick = gate * (1 - wrap((r < 0.5 ? 6 : 6) * p));
diff @ 2019-04-18 19:57:48 +0100
diff --git a/client/go.c b/client/go.c
index 2bbc9be0d..04bc4b0aa 100644
--- a/client/go.c
+++ b/client/go.c
@@ -395,7 +395,7 @@ if(0)
         * (wrap(4 * t) < 0.5)
         , 0, 1), 15);
       sample bell
-        = sin(4 * twopi * osc * pow(2, t < 0.5))
+        = sin(4 * twopi * osc * pow(2, wrap(8 * t) < 0.5))
         * sin(5 * twopi * osc * pow(2, wrap(2 * t) < 0.5))
         * sin(7 * twopi * osc * pow(2, wrap(4 * t) < 0.5))
         * env
diff @ 2019-04-18 19:57:56 +0100
diff --git a/client/go.c b/client/go.c
index 04bc4b0aa..222a3df3f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -396,7 +396,7 @@ if(0)
         , 0, 1), 15);
       sample bell
         = sin(4 * twopi * osc * pow(2, wrap(8 * t) < 0.5))
-        * sin(5 * twopi * osc * pow(2, wrap(2 * t) < 0.5))
+        * sin(5 * twopi * osc * pow(2, wrap(16 * t) < 0.5))
         * sin(7 * twopi * osc * pow(2, wrap(4 * t) < 0.5))
         * env
         * 4;
diff @ 2019-04-18 19:58:19 +0100
diff --git a/client/go.c b/client/go.c
index 222a3df3f..ba2ec6e9e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -397,7 +397,7 @@ if(0)
       sample bell
         = sin(4 * twopi * osc * pow(2, wrap(8 * t) < 0.5))
         * sin(5 * twopi * osc * pow(2, wrap(16 * t) < 0.5))
-        * sin(7 * twopi * osc * pow(2, wrap(4 * t) < 0.5))
+        * sin(7 * twopi * osc * pow(2, wrap(32 * t) < 0.5))
         * env
         * 4;
       sample becho = delread1(&s->del59, ms4);
@@ -464,7 +464,7 @@ if(0)
     o += biquad(lowpass(&s->pbq[6], 4000 * pow(4, env), flatq), o);
     o += biquad(highpass(&s->pbq[7], 50, flatq), o);
     sample o2= sin((1 + 2 * sin(pi * r)) * env2 *mixdown[1] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[1], delread1(&s->pdel1, ms4/4), 1500 * pow(2, cos(twopi * r * 32)), 3));
-    o2 += biquad(lowpass(&s->pbq[8], 4000 * pow(4 env2), flatq), o2);
+    o2 += biquad(lowpass(&s->pbq[8], 4000 * pow(4, env2), flatq), o2);
     o2 += biquad(highpass(&s->pbq[9], 50, flatq), o2);
     // kick
     sample kick = gate * (1 - wrap((r < 0.5 ? 6 : 6) * p));
diff @ 2019-04-18 19:58:30 +0100
diff --git a/client/go.c b/client/go.c
index ba2ec6e9e..e637e21ee 100644
--- a/client/go.c
+++ b/client/go.c
@@ -396,7 +396,7 @@ if(0)
         , 0, 1), 15);
       sample bell
         = sin(4 * twopi * osc * pow(2, wrap(8 * t) < 0.5))
-        * sin(5 * twopi * osc * pow(2, wrap(16 * t) < 0.5))
+        * sin(5 * twopi * osc * pow(2, wrap(1 * t) < 0.5))
         * sin(7 * twopi * osc * pow(2, wrap(32 * t) < 0.5))
         * env
         * 4;
diff @ 2019-04-18 19:58:31 +0100
diff --git a/client/go.c b/client/go.c
index e637e21ee..1109799c5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -397,7 +397,7 @@ if(0)
       sample bell
         = sin(4 * twopi * osc * pow(2, wrap(8 * t) < 0.5))
         * sin(5 * twopi * osc * pow(2, wrap(1 * t) < 0.5))
-        * sin(7 * twopi * osc * pow(2, wrap(32 * t) < 0.5))
+        * sin(7 * twopi * osc * pow(2, wrap(2 * t) < 0.5))
         * env
         * 4;
       sample becho = delread1(&s->del59, ms4);
diff @ 2019-04-18 19:58:48 +0100
diff --git a/client/go.c b/client/go.c
index 1109799c5..88d9f0cde 100644
--- a/client/go.c
+++ b/client/go.c
@@ -381,7 +381,7 @@ if(0)
     sample gate = r < 1;
     sample stop = r < 1 + 1./32;
     sample p = wrap(512/4 * r);
-    sample hz = 40 * pow(2, wrap(p * p * p * 8)/4);
+    sample hz = 50 * pow(2, wrap(p * p * p * 8)/4);
     sample t = p;
     sample osc = phasor(&s->osc59, hz);
     sample oo[2] = { 0, 0 };
diff @ 2019-04-18 19:59:14 +0100
diff --git a/client/go.c b/client/go.c
index 88d9f0cde..05cdcce64 100644
--- a/client/go.c
+++ b/client/go.c
@@ -409,7 +409,7 @@ if(0)
       sample bell2 = pitchshift(&s->ps59[1], 1, pms, -12 - 3*sin(pi * r * gate), -bell1);
       sample bell3 = pitchshift(&s->ps59[2], 1, pms,  3 - 6 * sin(pi * r * gate), -bell2);
       bell += bell1 + bell2 + bell3;
-      sample e = pow(32, clamp(r, 0, 1)) / 8;
+      sample e = pow(16, clamp(r, 0, 1)) / 8;
       bell = sin(bell * e)/e;
       bell *= env;
       delwrite(&s->del59,
diff @ 2019-04-18 19:59:19 +0100
diff --git a/client/go.c b/client/go.c
index 05cdcce64..86885f063 100644
--- a/client/go.c
+++ b/client/go.c
@@ -409,7 +409,7 @@ if(0)
       sample bell2 = pitchshift(&s->ps59[1], 1, pms, -12 - 3*sin(pi * r * gate), -bell1);
       sample bell3 = pitchshift(&s->ps59[2], 1, pms,  3 - 6 * sin(pi * r * gate), -bell2);
       bell += bell1 + bell2 + bell3;
-      sample e = pow(16, clamp(r, 0, 1)) / 8;
+      sample e = pow(8, clamp(r, 0, 1)) / 8;
       bell = sin(bell * e)/e;
       bell *= env;
       delwrite(&s->del59,
diff @ 2019-04-18 19:59:31 +0100
diff --git a/client/go.c b/client/go.c
index 86885f063..9c7d9abfe 100644
--- a/client/go.c
+++ b/client/go.c
@@ -419,7 +419,7 @@ if(0)
       sample l = clamp(mix(2, 4, r0), 0, 2) * delread4(&s->del59l, ms4 + lfo) + bell;
       sample r = clamp(mix(2, 4, r0), 0, 2) * delread4(&s->del59r, ms4 - lfo) + bell;
       // multiband compressor
-      sample input[2] = { lop(&s->belllo[0], l, 4000), lop(&s->belllo[1], r, 4000) };
+      sample input[2] = { lop(&s->belllo[0], l, 2000), lop(&s->belllo[1], r, 2000) };
       sample output[2] = { 0, 0 };
       for (int o = 4; o < OCTAVES; ++o)
       {
diff @ 2019-04-18 19:59:43 +0100
diff --git a/client/go.c b/client/go.c
index 9c7d9abfe..0456494f4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -461,10 +461,10 @@ if(0)
     env2 = lop(&s->pdeclick[1], samphold(&s->psh[2], env2, env2), 20);
     // tones
     sample o = sin((1 + 2 * sin(pi * r)) * env * mixdown[0] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[0], delread1(&s->pdel2, ms4/4), 1500 * pow(2, sin(twopi * r * 32)), 3));
-    o += biquad(lowpass(&s->pbq[6], 4000 * pow(4, env), flatq), o);
+    o += biquad(lowpass(&s->pbq[6], 4000 * pow(2, env), flatq), o);
     o += biquad(highpass(&s->pbq[7], 50, flatq), o);
     sample o2= sin((1 + 2 * sin(pi * r)) * env2 *mixdown[1] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[1], delread1(&s->pdel1, ms4/4), 1500 * pow(2, cos(twopi * r * 32)), 3));
-    o2 += biquad(lowpass(&s->pbq[8], 4000 * pow(4, env2), flatq), o2);
+    o2 += biquad(lowpass(&s->pbq[8], 4000 * pow(2, env2), flatq), o2);
     o2 += biquad(highpass(&s->pbq[9], 50, flatq), o2);
     // kick
     sample kick = gate * (1 - wrap((r < 0.5 ? 6 : 6) * p));
diff @ 2019-04-18 19:59:47 +0100
diff --git a/client/go.c b/client/go.c
index 0456494f4..da69800fd 100644
--- a/client/go.c
+++ b/client/go.c
@@ -461,10 +461,10 @@ if(0)
     env2 = lop(&s->pdeclick[1], samphold(&s->psh[2], env2, env2), 20);
     // tones
     sample o = sin((1 + 2 * sin(pi * r)) * env * mixdown[0] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[0], delread1(&s->pdel2, ms4/4), 1500 * pow(2, sin(twopi * r * 32)), 3));
-    o += biquad(lowpass(&s->pbq[6], 4000 * pow(2, env), flatq), o);
+    o += biquad(lowpass(&s->pbq[6], 1000 * pow(2, env), flatq), o);
     o += biquad(highpass(&s->pbq[7], 50, flatq), o);
     sample o2= sin((1 + 2 * sin(pi * r)) * env2 *mixdown[1] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[1], delread1(&s->pdel1, ms4/4), 1500 * pow(2, cos(twopi * r * 32)), 3));
-    o2 += biquad(lowpass(&s->pbq[8], 4000 * pow(2, env2), flatq), o2);
+    o2 += biquad(lowpass(&s->pbq[8], 1000 * pow(2, env2), flatq), o2);
     o2 += biquad(highpass(&s->pbq[9], 50, flatq), o2);
     // kick
     sample kick = gate * (1 - wrap((r < 0.5 ? 6 : 6) * p));
diff @ 2019-04-18 19:59:54 +0100
diff --git a/client/go.c b/client/go.c
index da69800fd..07ecf1e83 100644
--- a/client/go.c
+++ b/client/go.c
@@ -471,7 +471,7 @@ if(0)
     kick *= kick;
     kick *= kick;
     kick *= kick;
-    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, 26),
+    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, 6),
       tanh(sin(twopi * 30 * active * kick *
         ((0 <= r && r < 0.5) || (0.625 <= r))
         ) * (0.5 + kick))));
diff @ 2019-04-18 20:00:02 +0100
diff --git a/client/go.c b/client/go.c
index 07ecf1e83..d7173038b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -471,7 +471,7 @@ if(0)
     kick *= kick;
     kick *= kick;
     kick *= kick;
-    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, 6),
+    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, flatq),
       tanh(sin(twopi * 30 * active * kick *
         ((0 <= r && r < 0.5) || (0.625 <= r))
         ) * (0.5 + kick))));
diff @ 2019-04-18 20:00:06 +0100
diff --git a/client/go.c b/client/go.c
index d7173038b..a5235f9d3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -471,7 +471,7 @@ if(0)
     kick *= kick;
     kick *= kick;
     kick *= kick;
-    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz, flatq),
+    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz * 2, flatq),
       tanh(sin(twopi * 30 * active * kick *
         ((0 <= r && r < 0.5) || (0.625 <= r))
         ) * (0.5 + kick))));
diff @ 2019-04-18 20:00:09 +0100
diff --git a/client/go.c b/client/go.c
index a5235f9d3..f4e975395 100644
--- a/client/go.c
+++ b/client/go.c
@@ -471,7 +471,7 @@ if(0)
     kick *= kick;
     kick *= kick;
     kick *= kick;
-    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz * 2, flatq),
+    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz * 4, flatq),
       tanh(sin(twopi * 30 * active * kick *
         ((0 <= r && r < 0.5) || (0.625 <= r))
         ) * (0.5 + kick))));
diff @ 2019-04-18 20:00:13 +0100
diff --git a/client/go.c b/client/go.c
index f4e975395..93f6bbb36 100644
--- a/client/go.c
+++ b/client/go.c
@@ -471,7 +471,7 @@ if(0)
     kick *= kick;
     kick *= kick;
     kick *= kick;
-    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz * 4, flatq),
+    kick = tanh(2 * biquad(highpass(&s->pbq[12], hz * 8, flatq),
       tanh(sin(twopi * 30 * active * kick *
         ((0 <= r && r < 0.5) || (0.625 <= r))
         ) * (0.5 + kick))));
diff @ 2019-04-18 20:00:20 +0100
diff --git a/client/go.c b/client/go.c
index 93f6bbb36..2c908e8a7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -461,10 +461,10 @@ if(0)
     env2 = lop(&s->pdeclick[1], samphold(&s->psh[2], env2, env2), 20);
     // tones
     sample o = sin((1 + 2 * sin(pi * r)) * env * mixdown[0] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[0], delread1(&s->pdel2, ms4/4), 1500 * pow(2, sin(twopi * r * 32)), 3));
-    o += biquad(lowpass(&s->pbq[6], 1000 * pow(2, env), flatq), o);
+    o += biquad(lowpass(&s->pbq[6], 500 * pow(2, env), flatq), o);
     o += biquad(highpass(&s->pbq[7], 50, flatq), o);
     sample o2= sin((1 + 2 * sin(pi * r)) * env2 *mixdown[1] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[1], delread1(&s->pdel1, ms4/4), 1500 * pow(2, cos(twopi * r * 32)), 3));
-    o2 += biquad(lowpass(&s->pbq[8], 1000 * pow(2, env2), flatq), o2);
+    o2 += biquad(lowpass(&s->pbq[8], 500 * pow(2, env2), flatq), o2);
     o2 += biquad(highpass(&s->pbq[9], 50, flatq), o2);
     // kick
     sample kick = gate * (1 - wrap((r < 0.5 ? 6 : 6) * p));
diff @ 2019-04-18 20:00:25 +0100
diff --git a/client/go.c b/client/go.c
index 2c908e8a7..8431a3c16 100644
--- a/client/go.c
+++ b/client/go.c
@@ -461,10 +461,10 @@ if(0)
     env2 = lop(&s->pdeclick[1], samphold(&s->psh[2], env2, env2), 20);
     // tones
     sample o = sin((1 + 2 * sin(pi * r)) * env * mixdown[0] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[0], delread1(&s->pdel2, ms4/4), 1500 * pow(2, sin(twopi * r * 32)), 3));
-    o += biquad(lowpass(&s->pbq[6], 500 * pow(2, env), flatq), o);
+    o += biquad(lowpass(&s->pbq[6], 50 * pow(2, env), flatq), o);
     o += biquad(highpass(&s->pbq[7], 50, flatq), o);
     sample o2= sin((1 + 2 * sin(pi * r)) * env2 *mixdown[1] + (sin(pi * r * gate) * r * gate + 0.5 * (1 - gate)) * vcf(&s->pdelvcf[1], delread1(&s->pdel1, ms4/4), 1500 * pow(2, cos(twopi * r * 32)), 3));
-    o2 += biquad(lowpass(&s->pbq[8], 500 * pow(2, env2), flatq), o2);
+    o2 += biquad(lowpass(&s->pbq[8], 50 * pow(2, env2), flatq), o2);
     o2 += biquad(highpass(&s->pbq[9], 50, flatq), o2);
     // kick
     sample kick = gate * (1 - wrap((r < 0.5 ? 6 : 6) * p));
diff @ 2019-04-18 20:00:39 +0100
diff --git a/client/go.c b/client/go.c
index 8431a3c16..5b912391e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -429,8 +429,8 @@ if(0)
           band[c] = biquad(bandpass(&s->pmultiband[o][c], hz/4 * pow(2, o), flatq), input[c]);
         }
         compress(band, &s->pmulticomp[o], 1, 5, 10, 48, band);
-        output[0] += band[0] / (1 + 2*o);
-        output[1] += band[1] / (1 + 2*o);
+        output[0] += band[0] / (1 + 3*o);
+        output[1] += band[1] / (1 + 3*o);
       }
       compress(output, &s->bellfbcomp, 1, 5, 10, 48, output);
       l = output[0];
diff @ 2019-04-18 20:00:51 +0100
diff --git a/client/go.c b/client/go.c
index 5b912391e..03f74ea0c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -419,7 +419,7 @@ if(0)
       sample l = clamp(mix(2, 4, r0), 0, 2) * delread4(&s->del59l, ms4 + lfo) + bell;
       sample r = clamp(mix(2, 4, r0), 0, 2) * delread4(&s->del59r, ms4 - lfo) + bell;
       // multiband compressor
-      sample input[2] = { lop(&s->belllo[0], l, 2000), lop(&s->belllo[1], r, 2000) };
+      sample input[2] = { lop(&s->belllo[0], l, 1000), lop(&s->belllo[1], r, 1000) };
       sample output[2] = { 0, 0 };
       for (int o = 4; o < OCTAVES; ++o)
       {
diff @ 2019-04-18 20:00:58 +0100
diff --git a/client/go.c b/client/go.c
index 03f74ea0c..1b4543dfc 100644
--- a/client/go.c
+++ b/client/go.c
@@ -419,7 +419,7 @@ if(0)
       sample l = clamp(mix(2, 4, r0), 0, 2) * delread4(&s->del59l, ms4 + lfo) + bell;
       sample r = clamp(mix(2, 4, r0), 0, 2) * delread4(&s->del59r, ms4 - lfo) + bell;
       // multiband compressor
-      sample input[2] = { lop(&s->belllo[0], l, 1000), lop(&s->belllo[1], r, 1000) };
+      sample input[2] = { lop(&s->belllo[0], l, 500), lop(&s->belllo[1], r, 500) };
       sample output[2] = { 0, 0 };
       for (int o = 4; o < OCTAVES; ++o)
       {
diff @ 2019-04-18 20:01:01 +0100
diff --git a/client/go.c b/client/go.c
index 1b4543dfc..a436cdfe8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -419,7 +419,7 @@ if(0)
       sample l = clamp(mix(2, 4, r0), 0, 2) * delread4(&s->del59l, ms4 + lfo) + bell;
       sample r = clamp(mix(2, 4, r0), 0, 2) * delread4(&s->del59r, ms4 - lfo) + bell;
       // multiband compressor
-      sample input[2] = { lop(&s->belllo[0], l, 500), lop(&s->belllo[1], r, 500) };
+      sample input[2] = { lop(&s->belllo[0], l, 100), lop(&s->belllo[1], r, 100) };
       sample output[2] = { 0, 0 };
       for (int o = 4; o < OCTAVES; ++o)
       {

the end