session-2019-01-27-152547

clive

a C audio live-coding skeleton

diff @ 2019-01-27 15:26:25 +0000
diff --git a/client/go.c b/client/go.c
index 0955f5c39..8c9524d49 100644
--- a/client/go.c
+++ b/client/go.c
@@ -33,7 +33,7 @@
 ///==========================================================================
 ///==========================================================================
 
-#define RESET 1
+#define RESET 0
 
 typedef float sample;
 #define SR 48000
diff @ 2019-01-27 15:26:38 +0000
diff --git a/client/go.c b/client/go.c
index 8c9524d49..f6efe22d9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -125,9 +125,9 @@ 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[2 * c + 0], 2, 100,
-        lop(&s->so2.lag[0], -12, 1e-3), feedback[c]);
+        lop(&s->so2.lag[0], -12, 1e-4), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
-        lop(&s->so2.lag[0],  19, 1e-3), down);
+        lop(&s->so2.lag[0],  19, 1e-4), down);
       feedback[c] = feedback[c] - down - up;
     }
     // compress feedback
diff @ 2019-01-27 15:27:56 +0000
diff --git a/client/go.h b/client/go.h
index 728ba7a1a..1558ab23f 100644
--- a/client/go.h
+++ b/client/go.h
@@ -55,7 +55,9 @@ typedef struct
   REVERB cverb;
   LOP clop;
   // = append only data structure ======================================
-
+#define OCTAVES 10
+  BIQUAD multiband[OCTAVES][2];
+  COMPRESS multicomp[OCTAVES];
 
 } S;
 #endif
diff @ 2019-01-27 15:27:57 +0000
diff --git a/client/go.c b/client/go.c
index f6efe22d9..b9a679ab6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -130,6 +130,9 @@ go(S *s, int channels, const float *in, float *out)
         lop(&s->so2.lag[0],  19, 1e-4), down);
       feedback[c] = feedback[c] - down - up;
     }
+    // multiband compressor
+    sample input[2] = { feedback[0], feedback[1] };
+    
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
     sample gain = 1;
diff @ 2019-01-27 15:28:26 +0000
diff --git a/client/go.c b/client/go.c
index b9a679ab6..e9e2a8d47 100644
--- a/client/go.c
+++ b/client/go.c
@@ -132,6 +132,9 @@ go(S *s, int channels, const float *in, float *out)
     }
     // multiband compressor
     sample input[2] = { feedback[0], feedback[1] };
+    for (int o = 0; o < OCTAVES; ++o)
+    {
+    }
     
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
@@ -140,7 +143,7 @@ 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], 10, 500,
         tanh(so2[c] + RESET*impulse[c]));
     }
     mixdown[0] += so2[0];
diff @ 2019-01-27 15:29:29 +0000
diff --git a/client/go.c b/client/go.c
index e9e2a8d47..88ea3d10e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -134,6 +134,10 @@ go(S *s, int channels, const float *in, float *out)
     sample input[2] = { feedback[0], feedback[1] };
     for (int o = 0; o < OCTAVES; ++o)
     {
+      sample band[2];
+      for (int c = 0; c < 2; ++c)
+      {
+        band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq));
     }
     
     // compress feedback
diff @ 2019-01-27 15:29:30 +0000
diff --git a/client/go.c b/client/go.c
index 88ea3d10e..a93c9d63d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -138,6 +138,7 @@ go(S *s, int channels, const float *in, float *out)
       for (int c = 0; c < 2; ++c)
       {
         band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq));
+      }
     }
     
     // compress feedback
diff @ 2019-01-27 15:29:40 +0000
diff --git a/client/go.c b/client/go.c
index a93c9d63d..1322c4b4b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -137,7 +137,7 @@ go(S *s, int channels, const float *in, float *out)
       sample band[2];
       for (int c = 0; c < 2; ++c)
       {
-        band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq));
+        band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq), input[c]);
       }
     }
     
diff @ 2019-01-27 15:30:01 +0000
diff --git a/client/go.c b/client/go.c
index 1322c4b4b..33b28f4b7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -139,6 +139,7 @@ go(S *s, int channels, const float *in, float *out)
       {
         band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq), input[c]);
       }
+      compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
     }
     
     // compress feedback
diff @ 2019-01-27 15:30:26 +0000
diff --git a/client/go.c b/client/go.c
index 33b28f4b7..a5c3f2b59 100644
--- a/client/go.c
+++ b/client/go.c
@@ -140,6 +140,8 @@ go(S *s, int channels, const float *in, float *out)
         band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq), input[c]);
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
+      feedback[0] += band[0];
+      feedback[1] += band[1]'
     }
     
     // compress feedback
diff @ 2019-01-27 15:30:28 +0000
diff --git a/client/go.c b/client/go.c
index a5c3f2b59..8f6bd5de3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -141,7 +141,7 @@ go(S *s, int channels, const float *in, float *out)
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
       feedback[0] += band[0];
-      feedback[1] += band[1]'
+      feedback[1] += band[1];
     }
     
     // compress feedback
diff @ 2019-01-27 15:30:42 +0000
diff --git a/client/go.c b/client/go.c
index 8f6bd5de3..69a8340d5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -127,9 +127,10 @@ go(S *s, int channels, const float *in, float *out)
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100,
         lop(&s->so2.lag[0], -12, 1e-4), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
-        lop(&s->so2.lag[0],  19, 1e-4), down);
+        lop(&s->so2.lag[0],  12, 1e-4), down);
       feedback[c] = feedback[c] - down - up;
     }
+
     // multiband compressor
     sample input[2] = { feedback[0], feedback[1] };
     for (int o = 0; o < OCTAVES; ++o)
diff @ 2019-01-27 15:30:45 +0000
diff --git a/client/go.c b/client/go.c
index 69a8340d5..95a84ff8f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -127,7 +127,7 @@ go(S *s, int channels, const float *in, float *out)
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100,
         lop(&s->so2.lag[0], -12, 1e-4), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
-        lop(&s->so2.lag[0],  12, 1e-4), down);
+        lop(&s->so2.lag[0],  12, 1e-3), down);
       feedback[c] = feedback[c] - down - up;
     }
 
diff @ 2019-01-27 15:30:54 +0000
diff --git a/client/go.c b/client/go.c
index 95a84ff8f..63eb8b406 100644
--- a/client/go.c
+++ b/client/go.c
@@ -125,7 +125,7 @@ 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[2 * c + 0], 2, 100,
-        lop(&s->so2.lag[0], -12, 1e-4), feedback[c]);
+        lop(&s->so2.lag[0], -6, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
         lop(&s->so2.lag[0],  12, 1e-3), down);
       feedback[c] = feedback[c] - down - up;
diff @ 2019-01-27 15:31:00 +0000
diff --git a/client/go.c b/client/go.c
index 63eb8b406..918bbb0d9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -127,7 +127,7 @@ go(S *s, int channels, const float *in, float *out)
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100,
         lop(&s->so2.lag[0], -6, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
-        lop(&s->so2.lag[0],  12, 1e-3), down);
+        lop(&s->so2.lag[0],  3, 1e-3), down);
       feedback[c] = feedback[c] - down - up;
     }
 
diff @ 2019-01-27 15:31:14 +0000
diff --git a/client/go.c b/client/go.c
index 918bbb0d9..86523a2a6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -152,7 +152,7 @@ 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], 10, 500,
+      so2echo(&s->so2.echo[c], 10, 1500,
         tanh(so2[c] + RESET*impulse[c]));
     }
     mixdown[0] += so2[0];
diff @ 2019-01-27 15:31:24 +0000
diff --git a/client/go.c b/client/go.c
index 86523a2a6..d21cf963b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -128,7 +128,7 @@ go(S *s, int channels, const float *in, float *out)
         lop(&s->so2.lag[0], -6, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
         lop(&s->so2.lag[0],  3, 1e-3), down);
-      feedback[c] = feedback[c] - down - up;
+      feedback[c] = 2 *feedback[c] - down - up;
     }
 
     // multiband compressor
diff @ 2019-01-27 15:31:25 +0000
diff --git a/client/go.c b/client/go.c
index d21cf963b..80979c2b4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -128,7 +128,7 @@ go(S *s, int channels, const float *in, float *out)
         lop(&s->so2.lag[0], -6, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
         lop(&s->so2.lag[0],  3, 1e-3), down);
-      feedback[c] = 2 *feedback[c] - down - up;
+      feedback[c] = 2 * feedback[c] - down - up;
     }
 
     // multiband compressor
diff @ 2019-01-27 15:31:36 +0000
diff --git a/client/go.c b/client/go.c
index 80979c2b4..8f80bf6b1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -117,7 +117,7 @@ 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 = 10 * cos(twopi * p);
+    sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 200 - modulation)
       , delread4(&s->so2.echo[0].del, 200 + modulation)
diff @ 2019-01-27 15:31:45 +0000
diff --git a/client/go.c b/client/go.c
index 8f80bf6b1..4bb7c0f26 100644
--- a/client/go.c
+++ b/client/go.c
@@ -119,8 +119,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 0.01);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 200 - modulation)
-      , delread4(&s->so2.echo[0].del, 200 + modulation)
+      { delread4(&s->so2.echo[1].del, 100 - modulation)
+      , delread4(&s->so2.echo[0].del, 100 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-01-27 15:31:54 +0000
diff --git a/client/go.c b/client/go.c
index 4bb7c0f26..ee8ee6717 100644
--- a/client/go.c
+++ b/client/go.c
@@ -119,8 +119,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 0.01);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 100 - modulation)
-      , delread4(&s->so2.echo[0].del, 100 + modulation)
+      { delread4(&s->so2.echo[1].del, 50 - modulation)
+      , delread4(&s->so2.echo[0].del, 50 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-01-27 15:31:58 +0000
diff --git a/client/go.c b/client/go.c
index ee8ee6717..c5b96e62c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -119,8 +119,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 0.01);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 50 - modulation)
-      , delread4(&s->so2.echo[0].del, 50 + modulation)
+      { delread4(&s->so2.echo[1].del, 30 - modulation)
+      , delread4(&s->so2.echo[0].del, 30 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-01-27 15:32:05 +0000
diff --git a/client/go.c b/client/go.c
index c5b96e62c..f19d5a8af 100644
--- a/client/go.c
+++ b/client/go.c
@@ -119,8 +119,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 0.01);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 30 - modulation)
-      , delread4(&s->so2.echo[0].del, 30 + modulation)
+      { delread4(&s->so2.echo[1].del, 20 - modulation)
+      , delread4(&s->so2.echo[0].del, 20 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-01-27 15:32:13 +0000
diff --git a/client/go.c b/client/go.c
index f19d5a8af..84efb7b36 100644
--- a/client/go.c
+++ b/client/go.c
@@ -119,8 +119,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 0.01);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 20 - modulation)
-      , delread4(&s->so2.echo[0].del, 20 + modulation)
+      { delread4(&s->so2.echo[1].del, 10 - modulation)
+      , delread4(&s->so2.echo[0].del, 10 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-01-27 15:32:20 +0000
diff --git a/client/go.c b/client/go.c
index 84efb7b36..5a9a76e08 100644
--- a/client/go.c
+++ b/client/go.c
@@ -117,7 +117,7 @@ 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 = 1 * cos(twopi * p);
+    sample modulation = 5 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 10 - modulation)
       , delread4(&s->so2.echo[0].del, 10 + modulation)
diff @ 2019-01-27 15:32:24 +0000
diff --git a/client/go.c b/client/go.c
index 5a9a76e08..5cd77fb59 100644
--- a/client/go.c
+++ b/client/go.c
@@ -116,7 +116,7 @@ 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, 0.1);
     sample modulation = 5 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 10 - modulation)
diff @ 2019-01-27 15:32:38 +0000
diff --git a/client/go.c b/client/go.c
index 5cd77fb59..ea15a576e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -116,7 +116,7 @@ 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.1);
+    sample p = phasor(&s->so2.phase, 60 / bpm);
     sample modulation = 5 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 10 - modulation)
diff @ 2019-01-27 15:32:55 +0000
diff --git a/client/go.c b/client/go.c
index ea15a576e..df9b4e921 100644
--- a/client/go.c
+++ b/client/go.c
@@ -124,9 +124,9 @@ 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[2 * c + 0], 2, 100,
+      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 50,
         lop(&s->so2.lag[0], -6, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
+      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 50,
         lop(&s->so2.lag[0],  3, 1e-3), down);
       feedback[c] = 2 * feedback[c] - down - up;
     }
diff @ 2019-01-27 15:33:09 +0000
diff --git a/client/go.c b/client/go.c
index df9b4e921..33977a56e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -152,7 +152,7 @@ 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], 10, 1500,
+      so2echo(&s->so2.echo[c], 10, 2500,
         tanh(so2[c] + RESET*impulse[c]));
     }
     mixdown[0] += so2[0];
diff @ 2019-01-27 15:34:10 +0000
diff --git a/client/go.c b/client/go.c
index 33977a56e..dfa0cb8df 100644
--- a/client/go.c
+++ b/client/go.c
@@ -110,6 +110,45 @@ go(S *s, int channels, const float *in, float *out)
   int time = s->time++;
   int phase_reset = ((time / 5) & ((1 << 16) - 1)) == 0;
 
+  // = 1 = total intraliminal extraction ===============================
+  sample tilex[2] = { 0, 0 };
+  {
+    if (phase_reset)
+    {
+      s->tphase.phase = 0;
+      s->ttempo = SR * 1.0 / (5 << 16);
+    }
+    sample p = phasor(&s->tphase, s->ttempo);
+    sample kick = 1 - wrap(16 * p);
+    kick *= kick;
+    kick *= kick;
+    kick *= kick;
+    sample kickenv = kick;
+    kick *= 16;
+    kick = sin(twopi * kick);
+    kick *= 1 + kickenv;
+    kick = tanh(kick);
+    sample hat = wrap(16 * p + 0.5) < 0.5;
+    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 += 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);
+    sample crush = phasor(&s->tcrush, 2000);
+    tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
+    tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
+    sample kgain = 1;
+    kgain = samphold(&s->tgate[0], kgain, p);
+    tilex[0] += kgain * kick;
+    tilex[1] += kgain * kick;
+    compress(tilex, &s->tcompress, 5, 10, 25, 48, tilex);
+    sample gain = 1;
+    gain = samphold(&s->tgate[1], gain, p);
+    tilex[0] *= gain;
+    tilex[1] *= gain;
+  }
+
   // = 0 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
   {
@@ -144,6 +183,9 @@ go(S *s, int channels, const float *in, float *out)
       feedback[0] += band[0];
       feedback[1] += band[1];
     }
+
+    feedback[0] += tilex[0];
+    feedback[1] += tilex[1];
     
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
@@ -159,47 +201,6 @@ go(S *s, int channels, const float *in, float *out)
     mixdown[1] += so2[1];
   }
 
-  // = 1 = total intraliminal extraction ===============================
-  sample tilex[2] = { 0, 0 };
-  {
-    if (phase_reset)
-    {
-      s->tphase.phase = 0;
-      s->ttempo = SR * 1.0 / (5 << 16);
-    }
-    sample p = phasor(&s->tphase, s->ttempo);
-    sample kick = 1 - wrap(16 * p);
-    kick *= kick;
-    kick *= kick;
-    kick *= kick;
-    sample kickenv = kick;
-    kick *= 16;
-    kick = sin(twopi * kick);
-    kick *= 1 + kickenv;
-    kick = tanh(kick);
-    sample hat = wrap(16 * p + 0.5) < 0.5;
-    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 += 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);
-    sample crush = phasor(&s->tcrush, 2000);
-    tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
-    tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
-    sample kgain = 0;
-    kgain = samphold(&s->tgate[0], kgain, p);
-    tilex[0] += kgain * kick;
-    tilex[1] += kgain * kick;
-    compress(tilex, &s->tcompress, 5, 10, 25, 48, tilex);
-    sample gain = 1;
-    gain = samphold(&s->tgate[1], gain, p);
-    tilex[0] *= gain;
-    tilex[1] *= gain;
-    mixdown[0] += tilex[0];
-    mixdown[1] += tilex[1];
-  }
-
   // = 2 = binaray =====================================================
   sample env, freq;
   {
diff @ 2019-01-27 15:34:21 +0000
diff --git a/client/go.c b/client/go.c
index dfa0cb8df..02996c887 100644
--- a/client/go.c
+++ b/client/go.c
@@ -138,7 +138,7 @@ go(S *s, int channels, const float *in, float *out)
     sample crush = phasor(&s->tcrush, 2000);
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
-    sample kgain = 1;
+    sample kgain = 2;
     kgain = samphold(&s->tgate[0], kgain, p);
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
diff @ 2019-01-27 15:34:35 +0000
diff --git a/client/go.c b/client/go.c
index 02996c887..3d811d31b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -184,8 +184,8 @@ go(S *s, int channels, const float *in, float *out)
       feedback[1] += band[1];
     }
 
-    feedback[0] += tilex[0];
-    feedback[1] += tilex[1];
+    feedback[0] += 2 * tilex[0];
+    feedback[1] += 2 *tilex[1];
     
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-01-27 15:34:36 +0000
diff --git a/client/go.c b/client/go.c
index 3d811d31b..0b51ac433 100644
--- a/client/go.c
+++ b/client/go.c
@@ -185,7 +185,7 @@ go(S *s, int channels, const float *in, float *out)
     }
 
     feedback[0] += 2 * tilex[0];
-    feedback[1] += 2 *tilex[1];
+    feedback[1] += 2 * tilex[1];
     
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-01-27 15:34:41 +0000
diff --git a/client/go.c b/client/go.c
index 0b51ac433..92a780984 100644
--- a/client/go.c
+++ b/client/go.c
@@ -184,8 +184,8 @@ go(S *s, int channels, const float *in, float *out)
       feedback[1] += band[1];
     }
 
-    feedback[0] += 2 * tilex[0];
-    feedback[1] += 2 * tilex[1];
+    feedback[0] += 4 * tilex[0];
+    feedback[1] += 4 * tilex[1];
     
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-01-27 15:35:03 +0000
diff --git a/client/go.c b/client/go.c
index 92a780984..ddfd785ca 100644
--- a/client/go.c
+++ b/client/go.c
@@ -130,7 +130,7 @@ go(S *s, int channels, const float *in, float *out)
     kick = tanh(kick);
     sample hat = wrap(16 * p + 0.5) < 0.5;
     hat *= 0;
-    sample khz = 50 + 10 * (wrap(8 * p) > 1) + 25 * (wrap(2 * p) > 1);
+    sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 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)
diff @ 2019-01-27 15:35:12 +0000
diff --git a/client/go.c b/client/go.c
index ddfd785ca..de9bb8a94 100644
--- a/client/go.c
+++ b/client/go.c
@@ -131,7 +131,7 @@ go(S *s, int channels, const float *in, float *out)
     sample hat = wrap(16 * p + 0.5) < 0.5;
     hat *= 0;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 5)*5)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
diff @ 2019-01-27 15:35:32 +0000
diff --git a/client/go.c b/client/go.c
index de9bb8a94..381c40817 100644
--- a/client/go.c
+++ b/client/go.c
@@ -194,7 +194,7 @@ 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], 10, 2500,
+      so2echo(&s->so2.echo[c], 100, 2500,
         tanh(so2[c] + RESET*impulse[c]));
     }
     mixdown[0] += so2[0];
diff @ 2019-01-27 15:35:44 +0000
diff --git a/client/go.c b/client/go.c
index 381c40817..4a8d1e8a5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -132,7 +132,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= 0;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 5)*5);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
     sample crush = phasor(&s->tcrush, 2000);
diff @ 2019-01-27 15:36:00 +0000
diff --git a/client/go.c b/client/go.c
index 4a8d1e8a5..856f74b53 100644
--- a/client/go.c
+++ b/client/go.c
@@ -129,7 +129,7 @@ go(S *s, int channels, const float *in, float *out)
     kick *= 1 + kickenv;
     kick = tanh(kick);
     sample hat = wrap(16 * p + 0.5) < 0.5;
-    hat *= 0;
+    hat *= 1;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
diff @ 2019-01-27 15:36:02 +0000
diff --git a/client/go.c b/client/go.c
index 856f74b53..aba358b04 100644
--- a/client/go.c
+++ b/client/go.c
@@ -128,7 +128,7 @@ 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.5;
+    sample hat = wrap(16 * p + 0.5) < 0.15;
     hat *= 1;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2019-01-27 15:36:11 +0000
diff --git a/client/go.c b/client/go.c
index aba358b04..51c016c81 100644
--- a/client/go.c
+++ b/client/go.c
@@ -135,7 +135,7 @@ go(S *s, int channels, const float *in, float *out)
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
     kick += sin(vcf(&s->tkick[2], kick, khz*4-20, 5)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*4+20, 5)*5);
-    sample crush = phasor(&s->tcrush, 2000);
+    sample crush = phasor(&s->tcrush, 4000);
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
     sample kgain = 2;
diff @ 2019-01-27 15:36:26 +0000
diff --git a/client/go.c b/client/go.c
index 51c016c81..f98504807 100644
--- a/client/go.c
+++ b/client/go.c
@@ -133,8 +133,8 @@ go(S *s, int channels, const float *in, float *out)
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
-    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*9, 50)*5)
+         *  sin(vcf(&s->tkick[3], kick, khz*7, 50)*5);
     sample crush = phasor(&s->tcrush, 4000);
     tilex[0] = samphold(&s->tcrushsh[0], noise() * hat, crush);
     tilex[1] = samphold(&s->tcrushsh[1], noise() * hat, crush);
diff @ 2019-01-27 15:36:35 +0000
diff --git a/client/go.c b/client/go.c
index f98504807..2ffb0b389 100644
--- a/client/go.c
+++ b/client/go.c
@@ -129,7 +129,7 @@ go(S *s, int channels, const float *in, float *out)
     kick *= 1 + kickenv;
     kick = tanh(kick);
     sample hat = wrap(16 * p + 0.5) < 0.15;
-    hat *= 1;
+    hat *= 2;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
diff @ 2019-01-27 15:36:41 +0000
diff --git a/client/go.c b/client/go.c
index 2ffb0b389..64f88259d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -128,7 +128,7 @@ 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.15;
+    sample hat = wrap(32 * p) < 0.15;
     hat *= 2;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2019-01-27 15:36:46 +0000
diff --git a/client/go.c b/client/go.c
index 64f88259d..6edb9ee05 100644
--- a/client/go.c
+++ b/client/go.c
@@ -128,7 +128,7 @@ go(S *s, int channels, const float *in, float *out)
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
-    sample hat = wrap(32 * p) < 0.15;
+    sample hat = wrap(32 * p) < 0.15 * p;
     hat *= 2;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2019-01-27 15:36:59 +0000
diff --git a/client/go.c b/client/go.c
index 6edb9ee05..de67c6757 100644
--- a/client/go.c
+++ b/client/go.c
@@ -128,7 +128,7 @@ go(S *s, int channels, const float *in, float *out)
     kick = sin(twopi * kick);
     kick *= 1 + kickenv;
     kick = tanh(kick);
-    sample hat = wrap(32 * p) < 0.15 * p;
+    sample hat = wrap(32 * p) < 0.15 * (1 + sin(p));
     hat *= 2;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
diff @ 2019-01-27 15:37:25 +0000
diff --git a/client/go.c b/client/go.c
index de67c6757..370046cbb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -135,7 +135,7 @@ go(S *s, int channels, const float *in, float *out)
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
     kick += sin(vcf(&s->tkick[2], kick, khz*9, 50)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*7, 50)*5);
-    sample crush = phasor(&s->tcrush, 4000);
+    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 = 2;
diff @ 2019-01-27 15:37:38 +0000
diff --git a/client/go.c b/client/go.c
index 370046cbb..bce51367c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -194,7 +194,7 @@ 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], 100, 2500,
+      so2echo(&s->so2.echo[c], 400, 2500,
         tanh(so2[c] + RESET*impulse[c]));
     }
     mixdown[0] += so2[0];
diff @ 2019-01-27 15:37:44 +0000
diff --git a/client/go.c b/client/go.c
index bce51367c..1cba063c1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -194,7 +194,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 400, 2500,
+      so2echo(&s->so2.echo[c], 400, 4000,
         tanh(so2[c] + RESET*impulse[c]));
     }
     mixdown[0] += so2[0];
diff @ 2019-01-27 15:38:02 +0000
diff --git a/client/go.c b/client/go.c
index 1cba063c1..3230d0d30 100644
--- a/client/go.c
+++ b/client/go.c
@@ -164,9 +164,9 @@ 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[2 * c + 0], 1, 50,
-        lop(&s->so2.lag[0], -6, 1e-3), feedback[c]);
+        lop(&s->so2.lag[0], 0, 1e-5), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 50,
-        lop(&s->so2.lag[0],  3, 1e-3), down);
+        lop(&s->so2.lag[0],  0, 1e-5), down);
       feedback[c] = 2 * feedback[c] - down - up;
     }
 
diff @ 2019-01-27 15:38:03 +0000
diff --git a/client/go.c b/client/go.c
index 3230d0d30..bd195e71d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -166,7 +166,7 @@ go(S *s, int channels, const float *in, float *out)
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 50,
         lop(&s->so2.lag[0], 0, 1e-5), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 50,
-        lop(&s->so2.lag[0],  0, 1e-5), down);
+        lop(&s->so2.lag[0], 0, 1e-5), down);
       feedback[c] = 2 * feedback[c] - down - up;
     }
 
diff @ 2019-01-27 15:38:31 +0000
diff --git a/client/go.c b/client/go.c
index bd195e71d..a4cd3f65d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -267,8 +267,8 @@ 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), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 0.24));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.24));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-01-27 15:38:47 +0000
diff --git a/client/go.c b/client/go.c
index a4cd3f65d..926e08c52 100644
--- a/client/go.c
+++ b/client/go.c
@@ -260,7 +260,7 @@ 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);
-    sample rdelms = ldelms;
+    sample ldelms = 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-01-27 15:38:54 +0000
diff --git a/client/go.c b/client/go.c
index 926e08c52..6111a8912 100644
--- a/client/go.c
+++ b/client/go.c
@@ -260,7 +260,7 @@ 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);
-    sample ldelms = 60000 / bpm * (p < 0.5 ? 1 : 1./16);
+    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-01-27 15:39:00 +0000
diff --git a/client/go.c b/client/go.c
index 6111a8912..55427debd 100644
--- a/client/go.c
+++ b/client/go.c
@@ -259,7 +259,7 @@ 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);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./32);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2019-01-27 15:39:06 +0000
diff --git a/client/go.c b/client/go.c
index 55427debd..8f9d89e9c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -267,8 +267,8 @@ 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), 0.25), 0.24));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.24));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 0.5));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.5));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-01-27 15:39:21 +0000
diff --git a/client/go.c b/client/go.c
index 8f9d89e9c..64e9a7e8b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -261,8 +261,8 @@ go(S *s, int channels, const float *in, float *out)
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./32);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./16);
-    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-01-27 15:39:29 +0000
diff --git a/client/go.c b/client/go.c
index 64e9a7e8b..44665fc4f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -267,8 +267,8 @@ 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), 0.25), 0.5));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.5));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 0.65));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.65));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-01-27 15:39:38 +0000
diff --git a/client/go.c b/client/go.c
index 44665fc4f..150fd86fc 100644
--- a/client/go.c
+++ b/client/go.c
@@ -267,8 +267,8 @@ 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), 0.25), 0.65));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.65));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 0.75));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.75));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-01-27 15:39:46 +0000
diff --git a/client/go.c b/client/go.c
index 150fd86fc..d3a31acfe 100644
--- a/client/go.c
+++ b/client/go.c
@@ -267,8 +267,8 @@ 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), 0.25), 0.75));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.75));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 0.875));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.875));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-01-27 15:40:50 +0000
diff --git a/client/go.h b/client/go.h
index 1558ab23f..a5a478c5f 100644
--- a/client/go.h
+++ b/client/go.h
@@ -58,6 +58,9 @@ typedef struct
 #define OCTAVES 10
   BIQUAD multiband[OCTAVES][2];
   COMPRESS multicomp[OCTAVES];
+  LOP elop2[2];
+  HIP ehip2[2];
+
 
 } S;
 #endif
diff @ 2019-01-27 15:40:51 +0000
diff --git a/client/go.c b/client/go.c
index d3a31acfe..c85d03471 100644
--- a/client/go.c
+++ b/client/go.c
@@ -265,7 +265,9 @@ go(S *s, int channels, const float *in, float *out)
     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 };
+    el = lop(&s->elop2[0], el, 8000);
+    er = lop(&s->elop2[1], er, 8000);
+    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), 0.25), 0.875));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.875));
diff @ 2019-01-27 15:41:09 +0000
diff --git a/client/go.c b/client/go.c
index c85d03471..978692dc1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -267,6 +267,8 @@ go(S *s, int channels, const float *in, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     el = lop(&s->elop2[0], el, 8000);
     er = lop(&s->elop2[1], er, 8000);
+    el = hip(&s->ehip2[0], el, 80);
+    er = hip(&s->ehip2[1], er, 80);
     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), 0.25), 0.875));
diff @ 2019-01-27 15:41:21 +0000
diff --git a/client/go.c b/client/go.c
index 978692dc1..2372c8402 100644
--- a/client/go.c
+++ b/client/go.c
@@ -129,7 +129,7 @@ go(S *s, int channels, const float *in, float *out)
     kick *= 1 + kickenv;
     kick = tanh(kick);
     sample hat = wrap(32 * p) < 0.15 * (1 + sin(p));
-    hat *= 2;
+    hat *= 0;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
diff @ 2019-01-27 15:41:39 +0000
diff --git a/client/go.c b/client/go.c
index 2372c8402..f64913cea 100644
--- a/client/go.c
+++ b/client/go.c
@@ -271,8 +271,8 @@ go(S *s, int channels, const float *in, float *out)
     er = hip(&s->ehip2[1], er, 80);
     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), 0.25), 0.875));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.875));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 0.95));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.95));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-01-27 15:41:50 +0000
diff --git a/client/go.c b/client/go.c
index f64913cea..006c18acb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -269,7 +269,7 @@ go(S *s, int channels, const float *in, float *out)
     er = lop(&s->elop2[1], er, 8000);
     el = hip(&s->ehip2[0], el, 80);
     er = hip(&s->ehip2[1], er, 80);
-    sample es[2] = { co * el + si * er, -si * el + co * er };   
+    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), 0.25), 0.95));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.95));
diff @ 2019-01-27 15:42:07 +0000
diff --git a/client/go.c b/client/go.c
index 006c18acb..4b525fcd5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -256,7 +256,7 @@ go(S *s, int channels, const float *in, float *out)
     s->edelay2.length = 4 * SR;
     sample p = phasor(&s->ephase, hz);
     elphase = p;
-    sample t = twopi * p;
+    sample t = 2 * twopi * p;
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./32);
diff @ 2019-01-27 15:42:19 +0000
diff --git a/client/go.c b/client/go.c
index 4b525fcd5..81c245c07 100644
--- a/client/go.c
+++ b/client/go.c
@@ -259,7 +259,7 @@ go(S *s, int channels, const float *in, float *out)
     sample t = 2 * twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./32);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./32);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
diff @ 2019-01-27 15:42:31 +0000
diff --git a/client/go.c b/client/go.c
index 81c245c07..e03324283 100644
--- a/client/go.c
+++ b/client/go.c
@@ -260,7 +260,7 @@ 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./32);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 1 : 1./16);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-01-27 15:42:47 +0000
diff --git a/client/go.c b/client/go.c
index e03324283..592cd1fb5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -271,8 +271,8 @@ go(S *s, int channels, const float *in, float *out)
     er = hip(&s->ehip2[1], er, 80);
     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), 0.25), 0.95));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0.95));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 1));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-01-27 15:43:01 +0000
diff --git a/client/go.c b/client/go.c
index 592cd1fb5..e2478eb82 100644
--- a/client/go.c
+++ b/client/go.c
@@ -143,7 +143,7 @@ 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-01-27 15:43:44 +0000
diff --git a/client/go.c b/client/go.c
index e2478eb82..d42bd3a7c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -170,19 +170,6 @@ go(S *s, int channels, const float *in, float *out)
       feedback[c] = 2 * feedback[c] - down - up;
     }
 
-    // multiband compressor
-    sample input[2] = { feedback[0], feedback[1] };
-    for (int o = 0; o < OCTAVES; ++o)
-    {
-      sample band[2];
-      for (int c = 0; c < 2; ++c)
-      {
-        band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq), input[c]);
-      }
-      compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
-      feedback[0] += band[0];
-      feedback[1] += band[1];
-    }
 
     feedback[0] += 4 * tilex[0];
     feedback[1] += 4 * tilex[1];
@@ -270,6 +257,21 @@ go(S *s, int channels, const float *in, float *out)
     el = hip(&s->ehip2[0], el, 80);
     er = hip(&s->ehip2[1], er, 80);
     sample es[2] = { co * el + si * er, -si * el + co * er };
+
+    // multiband compressor
+    sample input[2] = { es[0], es[1] };
+    for (int o = 0; o < OCTAVES; ++o)
+    {
+      sample band[2];
+      for (int c = 0; c < 2; ++c)
+      {
+        band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq), input[c]);
+      }
+      compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
+      es[0] += band[0];
+      es[1] += band[1];
+    }
+
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 1));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 1));
diff @ 2019-01-27 15:43:54 +0000
diff --git a/client/go.c b/client/go.c
index d42bd3a7c..d24e32108 100644
--- a/client/go.c
+++ b/client/go.c
@@ -265,7 +265,7 @@ go(S *s, int channels, const float *in, float *out)
       sample band[2];
       for (int c = 0; c < 2; ++c)
       {
-        band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq), input[c]);
+        band[c] = biquad(bandpass(&s->multiband[o][c], 10 * pow(2, o), flatq), input[c]);
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
       es[0] += band[0];
diff @ 2019-01-27 15:43:58 +0000
diff --git a/client/go.c b/client/go.c
index d24e32108..ea977559f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -254,8 +254,8 @@ go(S *s, int channels, const float *in, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     el = lop(&s->elop2[0], el, 8000);
     er = lop(&s->elop2[1], er, 8000);
-    el = hip(&s->ehip2[0], el, 80);
-    er = hip(&s->ehip2[1], er, 80);
+    el = hip(&s->ehip2[0], el, 8);
+    er = hip(&s->ehip2[1], er, 8);
     sample es[2] = { co * el + si * er, -si * el + co * er };
 
     // multiband compressor
diff @ 2019-01-27 15:44:12 +0000
diff --git a/client/go.c b/client/go.c
index ea977559f..b11e3f40d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -246,7 +246,7 @@ go(S *s, int channels, const float *in, float *out)
     sample t = 2 * twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./32);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./48);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./16);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
diff @ 2019-01-27 15:44:17 +0000
diff --git a/client/go.c b/client/go.c
index b11e3f40d..a34464305 100644
--- a/client/go.c
+++ b/client/go.c
@@ -247,7 +247,7 @@ 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./48);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./16);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./96);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-01-27 15:44:20 +0000
diff --git a/client/go.c b/client/go.c
index a34464305..cbafc8bdc 100644
--- a/client/go.c
+++ b/client/go.c
@@ -248,8 +248,8 @@ go(S *s, int channels, const float *in, float *out)
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./48);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./96);
-    ldelms = lop(&s->elop[0], ldelms, 15);
-    rdelms = lop(&s->elop[1], rdelms, 15);
+    ldelms = lop(&s->elop[0], ldelms, 5);
+    rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
     sample er = delread4(&s->edelay2, rdelms + si);
     el = lop(&s->elop2[0], el, 8000);
diff @ 2019-01-27 15:44:25 +0000
diff --git a/client/go.c b/client/go.c
index cbafc8bdc..bdce1545c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -248,8 +248,8 @@ go(S *s, int channels, const float *in, float *out)
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./48);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./4 : 1./96);
-    ldelms = lop(&s->elop[0], ldelms, 5);
-    rdelms = lop(&s->elop[1], rdelms, 5);
+    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);
     el = lop(&s->elop2[0], el, 8000);
diff @ 2019-01-27 15:44:36 +0000
diff --git a/client/go.c b/client/go.c
index bdce1545c..66b37f4f0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -252,8 +252,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 1);
     sample el = delread4(&s->edelay1, ldelms + co);
     sample er = delread4(&s->edelay2, rdelms + si);
-    el = lop(&s->elop2[0], el, 8000);
-    er = lop(&s->elop2[1], er, 8000);
+    el = lop(&s->elop2[0], el, 2000);
+    er = lop(&s->elop2[1], er, 2000);
     el = hip(&s->ehip2[0], el, 8);
     er = hip(&s->ehip2[1], er, 8);
     sample es[2] = { co * el + si * er, -si * el + co * er };
diff @ 2019-01-27 15:44:39 +0000
diff --git a/client/go.c b/client/go.c
index 66b37f4f0..92b33eca6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -252,8 +252,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 1);
     sample el = delread4(&s->edelay1, ldelms + co);
     sample er = delread4(&s->edelay2, rdelms + si);
-    el = lop(&s->elop2[0], el, 2000);
-    er = lop(&s->elop2[1], er, 2000);
+    el = lop(&s->elop2[0], el, 1000);
+    er = lop(&s->elop2[1], er, 1000);
     el = hip(&s->ehip2[0], el, 8);
     er = hip(&s->ehip2[1], er, 8);
     sample es[2] = { co * el + si * er, -si * el + co * er };
diff @ 2019-01-27 15:44:44 +0000
diff --git a/client/go.c b/client/go.c
index 92b33eca6..86a078920 100644
--- a/client/go.c
+++ b/client/go.c
@@ -252,8 +252,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 1);
     sample el = delread4(&s->edelay1, ldelms + co);
     sample er = delread4(&s->edelay2, rdelms + si);
-    el = lop(&s->elop2[0], el, 1000);
-    er = lop(&s->elop2[1], er, 1000);
+    el = lop(&s->elop2[0], el, 500);
+    er = lop(&s->elop2[1], er, 500);
     el = hip(&s->ehip2[0], el, 8);
     er = hip(&s->ehip2[1], er, 8);
     sample es[2] = { co * el + si * er, -si * el + co * er };
diff @ 2019-01-27 15:44:47 +0000
diff --git a/client/go.c b/client/go.c
index 86a078920..d9454fe8a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -252,8 +252,8 @@ go(S *s, int channels, const float *in, float *out)
     rdelms = lop(&s->elop[1], rdelms, 1);
     sample el = delread4(&s->edelay1, ldelms + co);
     sample er = delread4(&s->edelay2, rdelms + si);
-    el = lop(&s->elop2[0], el, 500);
-    er = lop(&s->elop2[1], er, 500);
+    el = lop(&s->elop2[0], el, 250);
+    er = lop(&s->elop2[1], er, 250);
     el = hip(&s->ehip2[0], el, 8);
     er = hip(&s->ehip2[1], er, 8);
     sample es[2] = { co * el + si * er, -si * el + co * er };
diff @ 2019-01-27 15:44:54 +0000
diff --git a/client/go.c b/client/go.c
index d9454fe8a..b6cd73a81 100644
--- a/client/go.c
+++ b/client/go.c
@@ -254,8 +254,8 @@ go(S *s, int channels, const float *in, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     el = lop(&s->elop2[0], el, 250);
     er = lop(&s->elop2[1], er, 250);
-    el = hip(&s->ehip2[0], el, 8);
-    er = hip(&s->ehip2[1], er, 8);
+    el = hip(&s->ehip2[0], el, 18);
+    er = hip(&s->ehip2[1], er, 18);
     sample es[2] = { co * el + si * er, -si * el + co * er };
 
     // multiband compressor
diff @ 2019-01-27 15:45:22 +0000
diff --git a/client/go.c b/client/go.c
index b6cd73a81..2e473ed45 100644
--- a/client/go.c
+++ b/client/go.c
@@ -278,8 +278,8 @@ 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] = es[0] + tilex[0];
+    mixdown[1] = es[1] + tilex[1];
   }
 
   // = 5 = fifty-nine stellations ======================================
diff @ 2019-01-27 15:45:38 +0000
diff --git a/client/go.c b/client/go.c
index 2e473ed45..ace3bac06 100644
--- a/client/go.c
+++ b/client/go.c
@@ -132,7 +132,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= 0;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 2, 50)*50);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*50);
     kick += sin(vcf(&s->tkick[2], kick, khz*9, 50)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*7, 50)*5);
     sample crush = phasor(&s->tcrush, 4000 * pow(2, sin(twopi * p)));
@@ -143,7 +143,7 @@ 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 = 0;
+    sample gain = 1;
     gain = samphold(&s->tgate[1], gain, p);
     tilex[0] *= gain;
     tilex[1] *= gain;
diff @ 2019-01-27 15:45:48 +0000
diff --git a/client/go.c b/client/go.c
index ace3bac06..b82a8a284 100644
--- a/client/go.c
+++ b/client/go.c
@@ -138,7 +138,7 @@ 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 = 2;
+    sample kgain = 1;
     kgain = samphold(&s->tgate[0], kgain, p);
     tilex[0] += kgain * kick;
     tilex[1] += kgain * kick;
diff @ 2019-01-27 15:45:59 +0000
diff --git a/client/go.c b/client/go.c
index b82a8a284..f6a33ef9a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -132,7 +132,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= 0;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 50)*50);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 100)*50);
     kick += sin(vcf(&s->tkick[2], kick, khz*9, 50)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*7, 50)*5);
     sample crush = phasor(&s->tcrush, 4000 * pow(2, sin(twopi * p)));
diff @ 2019-01-27 15:46:06 +0000
diff --git a/client/go.c b/client/go.c
index f6a33ef9a..df5c688fb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -132,7 +132,7 @@ go(S *s, int channels, const float *in, float *out)
     hat *= 0;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
     kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
-    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 100)*50);
+    kick += sin(vcf(&s->tkick[1], kick, khz * 3, 100)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*9, 50)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*7, 50)*5);
     sample crush = phasor(&s->tcrush, 4000 * pow(2, sin(twopi * p)));
diff @ 2019-01-27 15:46:08 +0000
diff --git a/client/go.c b/client/go.c
index df5c688fb..d22c5ebe8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -131,7 +131,7 @@ go(S *s, int channels, const float *in, float *out)
     sample hat = wrap(32 * p) < 0.15 * (1 + sin(p));
     hat *= 0;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*15)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*5)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 100)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*9, 50)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*7, 50)*5);
diff @ 2019-01-27 15:46:10 +0000
diff --git a/client/go.c b/client/go.c
index d22c5ebe8..93f5a4b94 100644
--- a/client/go.c
+++ b/client/go.c
@@ -131,7 +131,7 @@ go(S *s, int channels, const float *in, float *out)
     sample hat = wrap(32 * p) < 0.15 * (1 + sin(p));
     hat *= 0;
     sample khz = 50 + 10 * (wrap(8 * p) > 0.75) + 25 * (wrap(2 * p) > 1);
-    kick +=tanh(vcf(&s->tkick[0], kick, khz, 15)*5)*2;
+    kick +=tanh(vcf(&s->tkick[0], kick, khz, 5)*5)*2;
     kick += sin(vcf(&s->tkick[1], kick, khz * 3, 100)*5);
     kick += sin(vcf(&s->tkick[2], kick, khz*9, 50)*5)
          *  sin(vcf(&s->tkick[3], kick, khz*7, 50)*5);
diff @ 2019-01-27 15:46:30 +0000
diff --git a/client/go.c b/client/go.c
index 93f5a4b94..5970af4ba 100644
--- a/client/go.c
+++ b/client/go.c
@@ -348,7 +348,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     { // bell
       sample env = lop(&s->lop59[4],
-        0 * clamp(2 * (0.5 - wrap(0.5 + 4 * t)), 0, 1), 15);
+        1 * clamp(2 * (0.5 - wrap(0.5 + 4 * t)), 0, 1), 15);
       sample env2 = lop(&s->lop59[5], clamp
         ( 2
         * (0.5 - wrap(8 * t))
diff @ 2019-01-27 15:46:55 +0000
diff --git a/client/go.c b/client/go.c
index 5970af4ba..4aa16a9f4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -254,8 +254,8 @@ go(S *s, int channels, const float *in, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     el = lop(&s->elop2[0], el, 250);
     er = lop(&s->elop2[1], er, 250);
-    el = hip(&s->ehip2[0], el, 18);
-    er = hip(&s->ehip2[1], er, 18);
+    el = hip(&s->ehip2[0], el, 100);
+    er = hip(&s->ehip2[1], er, 100);
     sample es[2] = { co * el + si * er, -si * el + co * er };
 
     // multiband compressor
diff @ 2019-01-27 15:47:22 +0000
diff --git a/client/go.c b/client/go.c
index 4aa16a9f4..21fad96f4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ go(S *s, int channels, const float *in, float *out)
         * (wrap(4 * t) < 0.5)
         , 0, 1), 15);
       sample bell
-        = sin(4 * twopi * osc)
+        = sin(4 * twopi * osc * pow(2, floor(4 * t)))
         * sin(5 * twopi * osc)
         * sin(7 * twopi * osc)
         * env
diff @ 2019-01-27 15:47:41 +0000
diff --git a/client/go.c b/client/go.c
index 21fad96f4..6b1c91918 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ go(S *s, int channels, const float *in, float *out)
         * (wrap(4 * t) < 0.5)
         , 0, 1), 15);
       sample bell
-        = sin(4 * twopi * osc * pow(2, floor(4 * t)))
+        = sin(4 * twopi * osc * pow(2, fmod((5 * floor(8 * t)), 8))
         * sin(5 * twopi * osc)
         * sin(7 * twopi * osc)
         * env
diff @ 2019-01-27 15:47:48 +0000
diff --git a/client/go.c b/client/go.c
index 6b1c91918..86d62780b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ go(S *s, int channels, const float *in, float *out)
         * (wrap(4 * t) < 0.5)
         , 0, 1), 15);
       sample bell
-        = sin(4 * twopi * osc * pow(2, fmod((5 * floor(8 * t)), 8))
+        = sin(4 * twopi * osc * pow(2, fmod((5 * floor(8 * t)), 8)))
         * sin(5 * twopi * osc)
         * sin(7 * twopi * osc)
         * env
diff @ 2019-01-27 15:48:00 +0000
diff --git a/client/go.c b/client/go.c
index 86d62780b..7c61c062c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ go(S *s, int channels, const float *in, float *out)
         * (wrap(4 * t) < 0.5)
         , 0, 1), 15);
       sample bell
-        = sin(4 * twopi * osc * pow(2, fmod((5 * floor(8 * t)), 8)))
+        = sin(4 * twopi * osc * pow(2, fmod((5 * floor(4 * t)), 8)))
         * sin(5 * twopi * osc)
         * sin(7 * twopi * osc)
         * env
diff @ 2019-01-27 15:48:05 +0000
diff --git a/client/go.c b/client/go.c
index 7c61c062c..03f5a147c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ go(S *s, int channels, const float *in, float *out)
         * (wrap(4 * t) < 0.5)
         , 0, 1), 15);
       sample bell
-        = sin(4 * twopi * osc * pow(2, fmod((5 * floor(4 * t)), 8)))
+        = sin(4 * twopi * osc * pow(2, fmod((5 * floor(4 * t)), 2)))
         * sin(5 * twopi * osc)
         * sin(7 * twopi * osc)
         * env
diff @ 2019-01-27 15:48:07 +0000
diff --git a/client/go.c b/client/go.c
index 03f5a147c..27d751adf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ go(S *s, int channels, const float *in, float *out)
         * (wrap(4 * t) < 0.5)
         , 0, 1), 15);
       sample bell
-        = sin(4 * twopi * osc * pow(2, fmod((5 * floor(4 * t)), 2)))
+        = sin(4 * twopi * osc * pow(2, fmod((5 * floor(4 * t)), 2.5)))
         * sin(5 * twopi * osc)
         * sin(7 * twopi * osc)
         * env
diff @ 2019-01-27 15:48:19 +0000
diff --git a/client/go.c b/client/go.c
index 27d751adf..794ef48c6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -356,7 +356,7 @@ go(S *s, int channels, const float *in, float *out)
         , 0, 1), 15);
       sample bell
         = sin(4 * twopi * osc * pow(2, fmod((5 * floor(4 * t)), 2.5)))
-        * sin(5 * twopi * osc)
+        * sin(5 * twopi * osc * pow(2, t > 0.5))
         * sin(7 * twopi * osc)
         * env
         * 4;
diff @ 2019-01-27 15:48:32 +0000
diff --git a/client/go.c b/client/go.c
index 794ef48c6..dd0f74d75 100644
--- a/client/go.c
+++ b/client/go.c
@@ -357,7 +357,7 @@ go(S *s, int channels, const float *in, float *out)
       sample bell
         = sin(4 * twopi * osc * pow(2, fmod((5 * floor(4 * t)), 2.5)))
         * sin(5 * twopi * osc * pow(2, t > 0.5))
-        * sin(7 * twopi * osc)
+        * sin(7 * twopi * osc * pow(2, wrap(2 * t) > 0.5))
         * env
         * 4;
       sample bell1 = pitchshift(&s->ps59[0], 2, 100, 3, bell);
diff @ 2019-01-27 15:48:45 +0000
diff --git a/client/go.c b/client/go.c
index dd0f74d75..d09336983 100644
--- a/client/go.c
+++ b/client/go.c
@@ -355,7 +355,7 @@ go(S *s, int channels, const float *in, float *out)
         * (wrap(4 * t) < 0.5)
         , 0, 1), 15);
       sample bell
-        = sin(4 * twopi * osc * pow(2, fmod((5 * floor(4 * t)), 2.5)))
+        = sin(4 * twopi * osc * pow(2, wrap(3 * t) < 0.5))
         * sin(5 * twopi * osc * pow(2, t > 0.5))
         * sin(7 * twopi * osc * pow(2, wrap(2 * t) > 0.5))
         * env
diff @ 2019-01-27 15:49:00 +0000
diff --git a/client/go.c b/client/go.c
index d09336983..57c24fd30 100644
--- a/client/go.c
+++ b/client/go.c
@@ -138,7 +138,7 @@ 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-01-27 15:49:27 +0000
diff --git a/client/go.c b/client/go.c
index 57c24fd30..eab5bd54a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -313,7 +313,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     { // hihat
       sample closed = 1 - wrap(8 * t - 0.58);
-      sample open   = 1 - wrap(4 * t - 0.50);
+      sample open   = 0;//1 - wrap(4 * t - 0.50);
       closed *= closed;
       closed *= closed;
       closed *= 1.3;
diff @ 2019-01-27 15:49:32 +0000
diff --git a/client/go.c b/client/go.c
index eab5bd54a..b727a6418 100644
--- a/client/go.c
+++ b/client/go.c
@@ -325,7 +325,7 @@ go(S *s, int channels, const float *in, float *out)
       open   *= open;
       sample env = open + closed;
       sample h = noise();
-      h *= 0;
+      h *= 1;
       o[0] += 4 * tanh(env * hip(&s->hip59[2], hip(&s->hip59[3],
               h * noise(), 3000), 1500));
       o[1] += 4 * tanh(env * hip(&s->hip59[4], hip(&s->hip59[5],
diff @ 2019-01-27 15:49:42 +0000
diff --git a/client/go.c b/client/go.c
index b727a6418..284773bfb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -307,7 +307,7 @@ go(S *s, int channels, const float *in, float *out)
       sample kick = sin(twopi * phasor(&s->kick59[1], env + mod));
       env2 = env2 + env2 * env2 * env2 * env2;
       kick = 4 * hip(&s->hip59[0], tanh(env2 * kick), 5);
-      kick *= 0;
+      kick *= 1;
       o[0] += kick;
       o[1] += kick;
     }
diff @ 2019-01-27 15:49:56 +0000
diff --git a/client/go.c b/client/go.c
index 284773bfb..87031b78f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -348,7 +348,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     { // bell
       sample env = lop(&s->lop59[4],
-        1 * clamp(2 * (0.5 - wrap(0.5 + 4 * t)), 0, 1), 15);
+        1 * clamp(2 * (0.5 - wrap(0.5 + 8 * t)), 0, 1), 15);
       sample env2 = lop(&s->lop59[5], clamp
         ( 2
         * (0.5 - wrap(8 * t))
diff @ 2019-01-27 15:50:11 +0000
diff --git a/client/go.c b/client/go.c
index 87031b78f..539a9ef07 100644
--- a/client/go.c
+++ b/client/go.c
@@ -372,7 +372,7 @@ go(S *s, int channels, const float *in, float *out)
       becho *= env2;
       bell += becho;
       bell *= 4;
-      sample lfo = 11 * sin(16 * twopi * t);
+      sample lfo = 5 * sin(16 * twopi * t);
       sample l = 0.3 * delread4(&s->del59l, ms4 + lfo) + bell;
       sample r = 0.3 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
diff @ 2019-01-27 15:50:20 +0000
diff --git a/client/go.c b/client/go.c
index 539a9ef07..b8eac547b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -373,8 +373,8 @@ go(S *s, int channels, const float *in, float *out)
       bell += becho;
       bell *= 4;
       sample lfo = 5 * sin(16 * twopi * t);
-      sample l = 0.3 * delread4(&s->del59l, ms4 + lfo) + bell;
-      sample r = 0.3 * delread4(&s->del59r, ms4 - lfo) + bell;
+      sample l = 0.4 * delread4(&s->del59l, ms4 + lfo) + bell;
+      sample r = 0.4 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2019-01-27 15:50:22 +0000
diff --git a/client/go.c b/client/go.c
index b8eac547b..881485a34 100644
--- a/client/go.c
+++ b/client/go.c
@@ -374,7 +374,7 @@ go(S *s, int channels, const float *in, float *out)
       bell *= 4;
       sample lfo = 5 * sin(16 * twopi * t);
       sample l = 0.4 * delread4(&s->del59l, ms4 + lfo) + bell;
-      sample r = 0.4 * delread4(&s->del59r, ms4 - lfo) + bell;
+      sample r = -0.4 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2019-01-27 15:50:24 +0000
diff --git a/client/go.c b/client/go.c
index 881485a34..b8eac547b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -374,7 +374,7 @@ go(S *s, int channels, const float *in, float *out)
       bell *= 4;
       sample lfo = 5 * sin(16 * twopi * t);
       sample l = 0.4 * delread4(&s->del59l, ms4 + lfo) + bell;
-      sample r = -0.4 * delread4(&s->del59r, ms4 - lfo) + bell;
+      sample r = 0.4 * delread4(&s->del59r, ms4 - lfo) + bell;
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2019-01-27 15:50:54 +0000
diff --git a/client/go.h b/client/go.h
index a5a478c5f..ee7d1e758 100644
--- a/client/go.h
+++ b/client/go.h
@@ -60,7 +60,7 @@ typedef struct
   COMPRESS multicomp[OCTAVES];
   LOP elop2[2];
   HIP ehip2[2];
-
+  HIP leakdc[2];
 
 } S;
 #endif
diff @ 2019-01-27 15:50:56 +0000
diff --git a/client/go.c b/client/go.c
index b8eac547b..841910c0d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -375,6 +375,8 @@ go(S *s, int channels, const float *in, float *out)
       sample lfo = 5 * sin(16 * twopi * t);
       sample l = 0.4 * delread4(&s->del59l, ms4 + lfo) + bell;
       sample r = 0.4 * delread4(&s->del59r, ms4 - lfo) + bell;
+      l = hip(&s->leakdc[0], l, 5);
+      r = hip(&s->leakdc[1], r, 5);
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2019-01-27 15:50:58 +0000
diff --git a/client/go.c b/client/go.c
index 841910c0d..1e501327d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -373,8 +373,8 @@ go(S *s, int channels, const float *in, float *out)
       bell += becho;
       bell *= 4;
       sample lfo = 5 * sin(16 * twopi * t);
-      sample l = 0.4 * delread4(&s->del59l, ms4 + lfo) + bell;
-      sample r = 0.4 * delread4(&s->del59r, ms4 - lfo) + bell;
+      sample l = 0.5 * delread4(&s->del59l, ms4 + lfo) + bell;
+      sample r = 0.5 * delread4(&s->del59r, ms4 - lfo) + bell;
       l = hip(&s->leakdc[0], l, 5);
       r = hip(&s->leakdc[1], r, 5);
       delwrite(&s->del59l, -r);
diff @ 2019-01-27 15:51:08 +0000
diff --git a/client/go.c b/client/go.c
index 1e501327d..80e6adab7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -366,7 +366,7 @@ go(S *s, int channels, const float *in, float *out)
       bell += bell1 + bell2 + bell3;
       bell *= env;
       sample becho = delread1(&s->del59, ms4);
-      becho = lop(&s->lop59[3], becho, 1000) * 0.5;
+      becho = lop(&s->lop59[3], becho, 1000) * 0.6;
       delwrite(&s->del59,
         bell3 + pitchshift(&s->ps59[3], 2, 100, 3, becho));
       becho *= env2;
diff @ 2019-01-27 15:51:20 +0000
diff --git a/client/go.c b/client/go.c
index 80e6adab7..6060d684a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -366,7 +366,7 @@ go(S *s, int channels, const float *in, float *out)
       bell += bell1 + bell2 + bell3;
       bell *= env;
       sample becho = delread1(&s->del59, ms4);
-      becho = lop(&s->lop59[3], becho, 1000) * 0.6;
+      becho = lop(&s->lop59[3], becho, 1000) * 0.7;
       delwrite(&s->del59,
         bell3 + pitchshift(&s->ps59[3], 2, 100, 3, becho));
       becho *= env2;
diff @ 2019-01-27 15:51:24 +0000
diff --git a/client/go.c b/client/go.c
index 6060d684a..1e790f3a4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -366,7 +366,7 @@ go(S *s, int channels, const float *in, float *out)
       bell += bell1 + bell2 + bell3;
       bell *= env;
       sample becho = delread1(&s->del59, ms4);
-      becho = lop(&s->lop59[3], becho, 1000) * 0.7;
+      becho = lop(&s->lop59[3], becho, 1000) * -0.7;
       delwrite(&s->del59,
         bell3 + pitchshift(&s->ps59[3], 2, 100, 3, becho));
       becho *= env2;
diff @ 2019-01-27 15:51:34 +0000
diff --git a/client/go.c b/client/go.c
index 1e790f3a4..b088fad30 100644
--- a/client/go.c
+++ b/client/go.c
@@ -369,7 +369,7 @@ go(S *s, int channels, const float *in, float *out)
       becho = lop(&s->lop59[3], becho, 1000) * -0.7;
       delwrite(&s->del59,
         bell3 + pitchshift(&s->ps59[3], 2, 100, 3, becho));
-      becho *= env2;
+      //becho *= env2;
       bell += becho;
       bell *= 4;
       sample lfo = 5 * sin(16 * twopi * t);
diff @ 2019-01-27 15:51:46 +0000
diff --git a/client/go.c b/client/go.c
index b088fad30..e723c5aca 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,7 +295,7 @@ go(S *s, int channels, const float *in, float *out)
     sample o[2] = { 0, 0 };
     { // kick
       sample peak = hz * 8;
-      sample env = 1 - wrap(2 * t);
+      sample env = 1 - wrap(4 * t);
       sample env2 = env * 2;
       env *= env;
       env *= env;
diff @ 2019-01-27 15:51:53 +0000
diff --git a/client/go.c b/client/go.c
index e723c5aca..71af1107e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -294,7 +294,7 @@ go(S *s, int channels, const float *in, float *out)
     sample osc = phasor(&s->osc59, hz);
     sample o[2] = { 0, 0 };
     { // kick
-      sample peak = hz * 8;
+      sample peak = hz * 4;
       sample env = 1 - wrap(4 * t);
       sample env2 = env * 2;
       env *= env;
diff @ 2019-01-27 15:51:57 +0000
diff --git a/client/go.c b/client/go.c
index 71af1107e..3b4640c09 100644
--- a/client/go.c
+++ b/client/go.c
@@ -299,6 +299,7 @@ go(S *s, int channels, const float *in, float *out)
       sample env2 = env * 2;
       env *= env;
       env *= env;
+      env *= env;
       env *= sqrt(sqrt(peak));
       sample env3 = env * env * env;
       sample mod = sin(twopi * phasor(&s->kick59[0], env * peak)) * env3;
diff @ 2019-01-27 15:52:11 +0000
diff --git a/client/go.c b/client/go.c
index 3b4640c09..326f0480f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -314,7 +314,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     { // hihat
       sample closed = 1 - wrap(8 * t - 0.58);
-      sample open   = 0;//1 - wrap(4 * t - 0.50);
+      sample open   = 1 - wrap(4 * t - 0.50);
       closed *= closed;
       closed *= closed;
       closed *= 1.3;
diff @ 2019-01-27 15:52:23 +0000
diff --git a/client/go.c b/client/go.c
index 326f0480f..980a5365d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -357,7 +357,7 @@ go(S *s, int channels, const float *in, float *out)
         , 0, 1), 15);
       sample bell
         = sin(4 * twopi * osc * pow(2, wrap(3 * t) < 0.5))
-        * sin(5 * twopi * osc * pow(2, t > 0.5))
+        * sin(5 * twopi * osc * pow(2, t > 0.25))
         * sin(7 * twopi * osc * pow(2, wrap(2 * t) > 0.5))
         * env
         * 4;
diff @ 2019-01-27 15:52:47 +0000
diff --git a/client/go.c b/client/go.c
index 980a5365d..9e6f61fbb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -278,8 +278,8 @@ 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] + tilex[0];
-    mixdown[1] = es[1] + tilex[1];
+    mixdown[0] = tilex[0];
+    mixdown[1] = tilex[1];
   }
 
   // = 5 = fifty-nine stellations ======================================
diff @ 2019-01-27 15:53:07 +0000
diff --git a/client/go.c b/client/go.c
index 9e6f61fbb..cbb06cb51 100644
--- a/client/go.c
+++ b/client/go.c
@@ -376,8 +376,8 @@ go(S *s, int channels, const float *in, float *out)
       sample lfo = 5 * sin(16 * twopi * t);
       sample l = 0.5 * delread4(&s->del59l, ms4 + lfo) + bell;
       sample r = 0.5 * delread4(&s->del59r, ms4 - lfo) + bell;
-      l = hip(&s->leakdc[0], l, 5);
-      r = hip(&s->leakdc[1], r, 5);
+      l = hip(&s->leakdc[0], l, 500);
+      r = hip(&s->leakdc[1], r, 500);
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2019-01-27 15:53:14 +0000
diff --git a/client/go.c b/client/go.c
index cbb06cb51..14a2595e3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -376,8 +376,8 @@ go(S *s, int channels, const float *in, float *out)
       sample lfo = 5 * sin(16 * twopi * t);
       sample l = 0.5 * delread4(&s->del59l, ms4 + lfo) + bell;
       sample r = 0.5 * delread4(&s->del59r, ms4 - lfo) + bell;
-      l = hip(&s->leakdc[0], l, 500);
-      r = hip(&s->leakdc[1], r, 500);
+      l = hip(&s->leakdc[0], l, 5000);
+      r = hip(&s->leakdc[1], r, 5000);
       delwrite(&s->del59l, -r);
       delwrite(&s->del59r,  l);
       o[0] += l;
diff @ 2019-01-27 15:53:26 +0000
diff --git a/client/go.c b/client/go.c
index 14a2595e3..9a08f0af8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,7 +295,7 @@ go(S *s, int channels, const float *in, float *out)
     sample o[2] = { 0, 0 };
     { // kick
       sample peak = hz * 4;
-      sample env = 1 - wrap(4 * t);
+      sample env = 1 - wrap(16 * t);
       sample env2 = env * 2;
       env *= env;
       env *= env;
diff @ 2019-01-27 15:53:35 +0000
diff --git a/client/go.c b/client/go.c
index 9a08f0af8..8e42cc2f9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,7 +295,7 @@ go(S *s, int channels, const float *in, float *out)
     sample o[2] = { 0, 0 };
     { // kick
       sample peak = hz * 4;
-      sample env = 1 - wrap(16 * t);
+      sample env = 1 - wrap(32 * t);
       sample env2 = env * 2;
       env *= env;
       env *= env;
diff @ 2019-01-27 15:53:42 +0000
diff --git a/client/go.c b/client/go.c
index 8e42cc2f9..44705305d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -294,7 +294,7 @@ go(S *s, int channels, const float *in, float *out)
     sample osc = phasor(&s->osc59, hz);
     sample o[2] = { 0, 0 };
     { // kick
-      sample peak = hz * 4;
+      sample peak = hz * 6;
       sample env = 1 - wrap(32 * t);
       sample env2 = env * 2;
       env *= env;
diff @ 2019-01-27 15:53:47 +0000
diff --git a/client/go.c b/client/go.c
index 44705305d..f06ba6f82 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,7 +295,7 @@ go(S *s, int channels, const float *in, float *out)
     sample o[2] = { 0, 0 };
     { // kick
       sample peak = hz * 6;
-      sample env = 1 - wrap(32 * t);
+      sample env = 1 - wrap(64 * t);
       sample env2 = env * 2;
       env *= env;
       env *= env;
diff @ 2019-01-27 15:53:54 +0000
diff --git a/client/go.c b/client/go.c
index f06ba6f82..6b95a990c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -295,7 +295,7 @@ go(S *s, int channels, const float *in, float *out)
     sample o[2] = { 0, 0 };
     { // kick
       sample peak = hz * 6;
-      sample env = 1 - wrap(64 * t);
+      sample env = 1 - wrap(256 * t);
       sample env2 = env * 2;
       env *= env;
       env *= env;
diff @ 2019-01-27 15:54:02 +0000
diff --git a/client/go.c b/client/go.c
index 6b95a990c..f2a470a54 100644
--- a/client/go.c
+++ b/client/go.c
@@ -308,7 +308,7 @@ go(S *s, int channels, const float *in, float *out)
       sample kick = sin(twopi * phasor(&s->kick59[1], env + mod));
       env2 = env2 + env2 * env2 * env2 * env2;
       kick = 4 * hip(&s->hip59[0], tanh(env2 * kick), 5);
-      kick *= 1;
+      kick *= 0;
       o[0] += kick;
       o[1] += kick;
     }
diff @ 2019-01-27 15:54:13 +0000
diff --git a/client/go.c b/client/go.c
index f2a470a54..a0e246451 100644
--- a/client/go.c
+++ b/client/go.c
@@ -349,7 +349,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     { // bell
       sample env = lop(&s->lop59[4],
-        1 * clamp(2 * (0.5 - wrap(0.5 + 8 * t)), 0, 1), 15);
+        1 * clamp(2 * (0.5 - wrap(0.5 + 0 * t)), 0, 1), 15);
       sample env2 = lop(&s->lop59[5], clamp
         ( 2
         * (0.5 - wrap(8 * t))
diff @ 2019-01-27 15:54:30 +0000
diff --git a/client/go.c b/client/go.c
index a0e246451..c6b8de964 100644
--- a/client/go.c
+++ b/client/go.c
@@ -313,8 +313,8 @@ go(S *s, int channels, const float *in, float *out)
       o[1] += kick;
     }
     { // hihat
-      sample closed = 1 - wrap(8 * t - 0.58);
-      sample open   = 1 - wrap(4 * t - 0.50);
+      sample closed = 1 - wrap(0 * t - 0.58);
+      sample open   = 1 - wrap(0 * t - 0.50);
       closed *= closed;
       closed *= closed;
       closed *= 1.3;
diff @ 2019-01-27 15:54:49 +0000
diff --git a/client/go.c b/client/go.c
index c6b8de964..d34a561aa 100644
--- a/client/go.c
+++ b/client/go.c
@@ -314,7 +314,7 @@ go(S *s, int channels, const float *in, float *out)
     }
     { // hihat
       sample closed = 1 - wrap(0 * t - 0.58);
-      sample open   = 1 - wrap(0 * t - 0.50);
+      mple open   = 0- wrap(0 * t - 0.50);
       closed *= closed;
       closed *= closed;
       closed *= 1.3;

the end