session-2022-05-18-185943

clive

Preston Jazz & Improvisation Festival presents Day Of Music & Culture: Pt.4 Algorave, The Continental, Preston PR1 8JP with Yaxu, Heavy Lifting, and mathr

diff @ 2022-05-18 19:59:57 +0100
diff --git a/client/go.c b/client/go.c
index ca8b38250..d6aee1e3b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -44,7 +44,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   sample ms4 = 1000 * 60 / bpm / 4;
   sample p;
   {
-    sample RESET = 1;
+    sample RESET = 0;
     sample so2[2] = { 0, 0 };
     // trigger impulse on reload
     sample impulse[2] = { s->reloaded, s->reloaded };
diff @ 2022-05-18 20:00:05 +0100
diff --git a/client/go.c b/client/go.c
index d6aee1e3b..60ae61816 100644
--- a/client/go.c
+++ b/client/go.c
@@ -70,7 +70,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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, 1500,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-05-18 20:00:20 +0100
diff --git a/client/go.c b/client/go.c
index 60ae61816..4b2a884c5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -70,7 +70,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 20, 1500,
+     so2echo(&s->so2.echo[c], 50, 1500,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-05-18 20:00:34 +0100
diff --git a/client/go.c b/client/go.c
index 4b2a884c5..53520e7e3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -58,9 +58,9 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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 @ 2022-05-18 20:00:46 +0100
diff --git a/client/go.c b/client/go.c
index 53520e7e3..b2cea7a89 100644
--- a/client/go.c
+++ b/client/go.c
@@ -52,8 +52,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = 0 * 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, 2 * ms4 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, 2 * ms4 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-05-18 20:00:49 +0100
diff --git a/client/go.c b/client/go.c
index b2cea7a89..188534b3e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0 * cos(twopi * p);
+    sample modulation = 0.001 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:01:04 +0100
diff --git a/client/go.c b/client/go.c
index 188534b3e..6ce286690 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.001 * cos(twopi * p);
+    sample modulation = 0.002 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:01:10 +0100
diff --git a/client/go.c b/client/go.c
index 6ce286690..3bb2673a2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.002 * cos(twopi * p);
+    sample modulation = 0.004 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:01:22 +0100
diff --git a/client/go.c b/client/go.c
index 3bb2673a2..bcbc857bb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -60,7 +60,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       sample down = pitchshift(&s->so2.shift[c][0], 1, ms4,
         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);
+        lop(&s->so2.lag[c][1],  24, 1e-2), down);
       feedback[c] = 2 * feedback[c] - down - up;
     }
     // compress feedback
diff @ 2022-05-18 20:02:09 +0100
diff --git a/client/go.c b/client/go.c
index bcbc857bb..a5af95580 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,6 +63,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
         lop(&s->so2.lag[c][1],  24, 1e-2), down);
       feedback[c] = 2 * feedback[c] - down - up;
     }
+    // beats
+    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 5);
+    feedback[0] += kick;
+    feedback[1] += kick;
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
     sample gain = 1;
diff @ 2022-05-18 20:02:14 +0100
diff --git a/client/go.c b/client/go.c
index a5af95580..469fb1fee 100644
--- a/client/go.c
+++ b/client/go.c
@@ -64,7 +64,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       feedback[c] = 2 * feedback[c] - down - up;
     }
     // beats
-    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 5);
+    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 6);
     feedback[0] += kick;
     feedback[1] += kick;
     // compress feedback
diff @ 2022-05-18 20:02:17 +0100
diff --git a/client/go.c b/client/go.c
index 469fb1fee..d4100b2b8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -64,7 +64,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       feedback[c] = 2 * feedback[c] - down - up;
     }
     // beats
-    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 6);
+    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 7);
     feedback[0] += kick;
     feedback[1] += kick;
     // compress feedback
diff @ 2022-05-18 20:02:20 +0100
diff --git a/client/go.c b/client/go.c
index d4100b2b8..602fb3943 100644
--- a/client/go.c
+++ b/client/go.c
@@ -64,7 +64,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       feedback[c] = 2 * feedback[c] - down - up;
     }
     // beats
-    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 7);
+    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 8);
     feedback[0] += kick;
     feedback[1] += kick;
     // compress feedback
diff @ 2022-05-18 20:02:21 +0100
diff --git a/client/go.c b/client/go.c
index 602fb3943..4011578d9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -64,7 +64,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       feedback[c] = 2 * feedback[c] - down - up;
     }
     // beats
-    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 8);
+    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 9);
     feedback[0] += kick;
     feedback[1] += kick;
     // compress feedback
diff @ 2022-05-18 20:02:23 +0100
diff --git a/client/go.c b/client/go.c
index 4011578d9..964e867ec 100644
--- a/client/go.c
+++ b/client/go.c
@@ -64,7 +64,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       feedback[c] = 2 * feedback[c] - down - up;
     }
     // beats
-    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 9);
+    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
     feedback[0] += kick;
     feedback[1] += kick;
     // compress feedback
diff @ 2022-05-18 20:02:36 +0100
diff --git a/client/go.c b/client/go.c
index 964e867ec..7e5219316 100644
--- a/client/go.c
+++ b/client/go.c
@@ -36,7 +36,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   }
 
 ///((( MIXDOWN
-  sample bpm = 117.1875;
+  sample bpm = 118.1875;
   sample mixdown[2] = { 0, 0 };
 ///))) MIXDOWN
 
diff @ 2022-05-18 20:02:51 +0100
diff --git a/client/go.c b/client/go.c
index 7e5219316..4a6e314f1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -52,8 +52,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = 0.004 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 2 * ms4 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, 2 * ms4 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, 4./3 * ms4 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, 4./3 * ms4 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-05-18 20:03:04 +0100
diff --git a/client/go.c b/client/go.c
index 4a6e314f1..c935e8e6f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -78,8 +78,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
-    mixdown[0] += so2[0];
-    mixdown[1] += so2[1];
+    mixdown[0] += so2[0] + kick;
+    mixdown[1] += so2[1] + kick;
   }
 ///}}} SEA ORGAN 2.2
 ///{{{ SMOLTECH
diff @ 2022-05-18 20:03:13 +0100
diff --git a/client/go.c b/client/go.c
index c935e8e6f..610ba4442 100644
--- a/client/go.c
+++ b/client/go.c
@@ -36,7 +36,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   }
 
 ///((( MIXDOWN
-  sample bpm = 118.1875;
+  sample bpm = 119.1875;
   sample mixdown[2] = { 0, 0 };
 ///))) MIXDOWN
 
diff @ 2022-05-18 20:03:24 +0100
diff --git a/client/go.c b/client/go.c
index 610ba4442..50e38bc05 100644
--- a/client/go.c
+++ b/client/go.c
@@ -52,8 +52,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = 0.004 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 4./3 * ms4 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, 4./3 * ms4 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-05-18 20:03:36 +0100
diff --git a/client/go.h b/client/go.h
index cc51a110c..2b728fa3a 100644
--- a/client/go.h
+++ b/client/go.h
@@ -56,6 +56,7 @@ typedef struct {
 ///]]] MIXDOWN
 ///[[[ SEA ORGAN 2.2
   SO2 so2;
+  BIQUAD so2k;
 ///]]] SEA ORGAN 2.2
 ///[[[ SMOLTECH
 ///]]] SMOLTECH
diff @ 2022-05-18 20:04:01 +0100
diff --git a/client/go.c b/client/go.c
index 50e38bc05..0fdd457d5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -78,6 +78,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
+    kick = biquad(highpass(&s->so2k, 60, 10), kick);
     mixdown[0] += so2[0] + kick;
     mixdown[1] += so2[1] + kick;
   }
diff @ 2022-05-18 20:04:16 +0100
diff --git a/client/go.c b/client/go.c
index 0fdd457d5..21bdc71be 100644
--- a/client/go.c
+++ b/client/go.c
@@ -74,7 +74,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 50, 1500,
+     so2echo(&s->so2.echo[c], 150, 1500,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-05-18 20:04:22 +0100
diff --git a/client/go.c b/client/go.c
index 21bdc71be..d072581ac 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.004 * cos(twopi * p);
+    sample modulation = 0.008 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:04:25 +0100
diff --git a/client/go.c b/client/go.c
index d072581ac..7c2ac24c0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.008 * cos(twopi * p);
+    sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:04:28 +0100
diff --git a/client/go.c b/client/go.c
index 7c2ac24c0..eb7f8dae1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.01 * cos(twopi * p);
+    sample modulation = 0.1 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:04:33 +0100
diff --git a/client/go.c b/client/go.c
index eb7f8dae1..3c5b21953 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.1 * cos(twopi * p);
+    sample modulation = 0.1 * cos(twopi * p * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:04:35 +0100
diff --git a/client/go.c b/client/go.c
index 3c5b21953..1aea9270c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.1 * cos(twopi * p * 2);
+    sample modulation = 0.1 * cos(twopi * p * 2 * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:04:37 +0100
diff --git a/client/go.c b/client/go.c
index 1aea9270c..753ecffed 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.1 * cos(twopi * p * 2 * 2);
+    sample modulation = 0.1 * cos(twopi * p * 2 * 2 * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:04:39 +0100
diff --git a/client/go.c b/client/go.c
index 753ecffed..0bff6ae44 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.1 * cos(twopi * p * 2 * 2 * 2);
+    sample modulation = 0.1 * cos(twopi * p * 2 * 2 * 2 * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:04:44 +0100
diff --git a/client/go.c b/client/go.c
index 0bff6ae44..37e023205 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.1 * cos(twopi * p * 2 * 2 * 2 * 2);
+    sample modulation = 0.01 * cos(twopi * p * 2 * 2 * 2 * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:04:47 +0100
diff --git a/client/go.c b/client/go.c
index 37e023205..3a3255dd9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.01 * cos(twopi * p * 2 * 2 * 2 * 2);
+    sample modulation = 0.01 * cos(twopi * p * 2 * 2 * 2 * 2 * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:04:54 +0100
diff --git a/client/go.c b/client/go.c
index 3a3255dd9..df5ce7b2d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.01 * cos(twopi * p * 2 * 2 * 2 * 2 * 2);
+    sample modulation = 0.01 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:04:58 +0100
diff --git a/client/go.c b/client/go.c
index df5ce7b2d..ec7cf3de7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.01 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
+    sample modulation = 0.001 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:05:01 +0100
diff --git a/client/go.c b/client/go.c
index ec7cf3de7..17098383d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.001 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
+    sample modulation = 0.002 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:05:03 +0100
diff --git a/client/go.c b/client/go.c
index 17098383d..00789c9fe 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.002 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
+    sample modulation = 0.003 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:05:04 +0100
diff --git a/client/go.c b/client/go.c
index 00789c9fe..fa9bfba98 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.003 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
+    sample modulation = 0.004 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:05:05 +0100
diff --git a/client/go.c b/client/go.c
index fa9bfba98..0e96c6376 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,7 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample impulse[2] = { s->reloaded, s->reloaded };
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.004 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
+    sample modulation = 0.005 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
diff @ 2022-05-18 20:05:12 +0100
diff --git a/client/go.c b/client/go.c
index 0e96c6376..36e509ab9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = 2 * feedback[c] - down - up;
+      feedback[c] = sin(2 * feedback[c] - down - up);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:20 +0100
diff --git a/client/go.c b/client/go.c
index 36e509ab9..5996b5fb4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin(2 * feedback[c] - down - up);
+      feedback[c] = sin((2 * feedback[c] - down - up)*1.1);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:22 +0100
diff --git a/client/go.c b/client/go.c
index 5996b5fb4..00901db3a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*1.1);
+      feedback[c] = sin((2 * feedback[c] - down - up)*1.2);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:23 +0100
diff --git a/client/go.c b/client/go.c
index 00901db3a..46136dc57 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*1.2);
+      feedback[c] = sin((2 * feedback[c] - down - up)*1.3);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:25 +0100
diff --git a/client/go.c b/client/go.c
index 46136dc57..ce647c1be 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*1.3);
+      feedback[c] = sin((2 * feedback[c] - down - up)*1.4);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:26 +0100
diff --git a/client/go.c b/client/go.c
index ce647c1be..fb2c38b0d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*1.4);
+      feedback[c] = sin((2 * feedback[c] - down - up)*1.5);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:27 +0100
diff --git a/client/go.c b/client/go.c
index fb2c38b0d..b06d0a028 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*1.5);
+      feedback[c] = sin((2 * feedback[c] - down - up)*1.6);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:28 +0100
diff --git a/client/go.c b/client/go.c
index b06d0a028..047042148 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*1.6);
+      feedback[c] = sin((2 * feedback[c] - down - up)*1.7);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:29 +0100
diff --git a/client/go.c b/client/go.c
index 047042148..c9e877519 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*1.7);
+      feedback[c] = sin((2 * feedback[c] - down - up)*1.8);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:30 +0100
diff --git a/client/go.c b/client/go.c
index c9e877519..9fe30cdbe 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*1.8);
+      feedback[c] = sin((2 * feedback[c] - down - up)*1.9);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:32 +0100
diff --git a/client/go.c b/client/go.c
index 9fe30cdbe..38723ac6a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*1.9);
+      feedback[c] = sin((2 * feedback[c] - down - up)*2);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:34 +0100
diff --git a/client/go.c b/client/go.c
index 38723ac6a..1b04aac66 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*2);
+      feedback[c] = sin((2 * feedback[c] - down - up)*2.2);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:35 +0100
diff --git a/client/go.c b/client/go.c
index 1b04aac66..5b9d7451a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*2.2);
+      feedback[c] = sin((2 * feedback[c] - down - up)*2.4);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:39 +0100
diff --git a/client/go.c b/client/go.c
index 5b9d7451a..9cabcf64b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*2.4);
+      feedback[c] = sin((2 * feedback[c] - down - up)*2.5);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:43 +0100
diff --git a/client/go.c b/client/go.c
index 9cabcf64b..87d1392aa 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*2.5);
+      feedback[c] = sin((2 * feedback[c] - down - up)*2.6);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:45 +0100
diff --git a/client/go.c b/client/go.c
index 87d1392aa..62519ddc9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*2.6);
+      feedback[c] = sin((2 * feedback[c] - down - up)*2.7);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:46 +0100
diff --git a/client/go.c b/client/go.c
index 62519ddc9..d2729b872 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*2.7);
+      feedback[c] = sin((2 * feedback[c] - down - up)*2.8);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:47 +0100
diff --git a/client/go.c b/client/go.c
index d2729b872..1d7095a7f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*2.8);
+      feedback[c] = sin((2 * feedback[c] - down - up)*2.9);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:48 +0100
diff --git a/client/go.c b/client/go.c
index 1d7095a7f..3d5286f27 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*2.9);
+      feedback[c] = sin((2 * feedback[c] - down - up)*3);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:05:56 +0100
diff --git a/client/go.c b/client/go.c
index 3d5286f27..8b6655b26 100644
--- a/client/go.c
+++ b/client/go.c
@@ -74,7 +74,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 150, 1500,
+     so2echo(&s->so2.echo[c], 20, 1500,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-05-18 20:05:58 +0100
diff --git a/client/go.c b/client/go.c
index 8b6655b26..ec4dfe47d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -74,7 +74,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 20, 1500,
+     so2echo(&s->so2.echo[c], 20, 500,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-05-18 20:06:03 +0100
diff --git a/client/go.c b/client/go.c
index ec4dfe47d..2d53298ce 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*3);
+      feedback[c] = sin((2 * feedback[c] - down - up)*4);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:06:10 +0100
diff --git a/client/go.c b/client/go.c
index 2d53298ce..891b45e71 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*4);
+      feedback[c] = sin((2 * feedback[c] - down - up)*5);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:06:15 +0100
diff --git a/client/go.c b/client/go.c
index 891b45e71..8c9adff29 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*5);
+      feedback[c] = sin((2 * feedback[c] - down - up)*6);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:06:29 +0100
diff --git a/client/go.c b/client/go.c
index 8c9adff29..ef37ca5ba 100644
--- a/client/go.c
+++ b/client/go.c
@@ -78,7 +78,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
-    kick = biquad(highpass(&s->so2k, 60, 10), kick);
+    kick = biquad(highpass(&s->so2k, 60 * pow(2, p), 10), kick);
     mixdown[0] += so2[0] + kick;
     mixdown[1] += so2[1] + kick;
   }
diff @ 2022-05-18 20:06:38 +0100
diff --git a/client/go.c b/client/go.c
index ef37ca5ba..88742cffa 100644
--- a/client/go.c
+++ b/client/go.c
@@ -78,7 +78,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
-    kick = biquad(highpass(&s->so2k, 60 * pow(2, p), 10), kick);
+    kick = biquad(highpass(&s->so2k, 60 * pow(2, 1 -p), 10), kick);
     mixdown[0] += so2[0] + kick;
     mixdown[1] += so2[1] + kick;
   }
diff @ 2022-05-18 20:06:39 +0100
diff --git a/client/go.c b/client/go.c
index 88742cffa..a43ed4b18 100644
--- a/client/go.c
+++ b/client/go.c
@@ -78,7 +78,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
-    kick = biquad(highpass(&s->so2k, 60 * pow(2, 1 -p), 10), kick);
+    kick = biquad(highpass(&s->so2k, 60 * pow(2, 1 - p), 10), kick);
     mixdown[0] += so2[0] + kick;
     mixdown[1] += so2[1] + kick;
   }
diff @ 2022-05-18 20:06:47 +0100
diff --git a/client/go.c b/client/go.c
index a43ed4b18..e4225e310 100644
--- a/client/go.c
+++ b/client/go.c
@@ -78,7 +78,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
-    kick = biquad(highpass(&s->so2k, 60 * pow(2, 1 - p), 10), kick);
+    kick = biquad(highpass(&s->so2k, 60 * pow(2, 1 - wrap(4 * p)), 10), kick);
     mixdown[0] += so2[0] + kick;
     mixdown[1] += so2[1] + kick;
   }
diff @ 2022-05-18 20:07:06 +0100
diff --git a/client/go.c b/client/go.c
index e4225e310..ec14c431e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -78,7 +78,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
-    kick = biquad(highpass(&s->so2k, 60 * pow(2, 1 - wrap(4 * p)), 10), kick);
+    kick = biquad(highpass(&s->so2k, 60 * pow(2, sin(twopi * 4 * p)), 10), kick);
     mixdown[0] += so2[0] + kick;
     mixdown[1] += so2[1] + kick;
   }
diff @ 2022-05-18 20:07:24 +0100
diff --git a/client/go.c b/client/go.c
index ec14c431e..045814715 100644
--- a/client/go.c
+++ b/client/go.c
@@ -79,6 +79,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     }
     // output
     kick = biquad(highpass(&s->so2k, 60 * pow(2, sin(twopi * 4 * p)), 10), kick);
+    kick += sin(kick);
     mixdown[0] += so2[0] + kick;
     mixdown[1] += so2[1] + kick;
   }
diff @ 2022-05-18 20:07:36 +0100
diff --git a/client/go.c b/client/go.c
index 045814715..7751bfd3c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -79,7 +79,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     }
     // output
     kick = biquad(highpass(&s->so2k, 60 * pow(2, sin(twopi * 4 * p)), 10), kick);
-    kick += sin(kick);
+    kick += sin(kick * kick * kick);
     mixdown[0] += so2[0] + kick;
     mixdown[1] += so2[1] + kick;
   }
diff @ 2022-05-18 20:07:57 +0100
diff --git a/client/go.c b/client/go.c
index 7751bfd3c..3e51f727d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*6);
+      feedback[c] = sin((2 * feedback[c] - down - up)*2);
     }
     // beats
     sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
diff @ 2022-05-18 20:08:34 +0100
diff --git a/client/go.c b/client/go.c
index 3e51f727d..d3347650f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -51,9 +51,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = 0.005 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
+    sample hz = 60 * pow(2, sin(twopi * 4 * p));
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 2./3 * ms4 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, 2./3 * ms4 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, 1000 / (3 * hz) * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, 1000 / (3 * hz) * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
@@ -78,7 +79,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
-    kick = biquad(highpass(&s->so2k, 60 * pow(2, sin(twopi * 4 * p)), 10), kick);
+    kick = biquad(highpass(&s->so2k, hz, 10), kick);
     kick += sin(kick * kick * kick);
     mixdown[0] += so2[0] + kick;
     mixdown[1] += so2[1] + kick;
diff @ 2022-05-18 20:09:08 +0100
diff @ 2022-05-18 20:09:33 +0100
diff --git a/client/go.c b/client/go.c
index 7d796b4e1..e71699fad 100644
--- a/client/go.c
+++ b/client/go.c
@@ -105,8 +105,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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, pow(wrap(8 * p), (sample) 0.25), 0.1));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.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 @ 2022-05-18 20:09:48 +0100
diff --git a/client/go.c b/client/go.c
index e71699fad..5f464b107 100644
--- a/client/go.c
+++ b/client/go.c
@@ -94,6 +94,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
+    p = wrap(4 * p);
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
diff @ 2022-05-18 20:09:53 +0100
diff --git a/client/go.c b/client/go.c
index 5f464b107..82bd8a76b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -106,8 +106,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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.1));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.1));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.2));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.2));
     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 @ 2022-05-18 20:10:01 +0100
diff --git a/client/go.c b/client/go.c
index 82bd8a76b..766ca2650 100644
--- a/client/go.c
+++ b/client/go.c
@@ -106,8 +106,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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.2));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.2));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.5));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.5));
     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 @ 2022-05-18 20:10:20 +0100
diff --git a/client/go.c b/client/go.c
index 766ca2650..6ac772798 100644
--- a/client/go.c
+++ b/client/go.c
@@ -99,7 +99,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./4);
-    sample rdelms = ldelms;
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./64);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2022-05-18 20:10:27 +0100
diff --git a/client/go.c b/client/go.c
index 6ac772798..dd225e8f7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -98,7 +98,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./4);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./48);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./64);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2022-05-18 20:10:36 +0100
diff --git a/client/go.c b/client/go.c
index dd225e8f7..8f809aac2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -106,8 +106,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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.5));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.5));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.65));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.65));
     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 @ 2022-05-18 20:10:46 +0100
diff --git a/client/go.c b/client/go.c
index 8f809aac2..4a2521be4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -106,8 +106,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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.65));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.65));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.75));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.75));
     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 @ 2022-05-18 20:10:55 +0100
diff --git a/client/go.c b/client/go.c
index 4a2521be4..7f0d1b131 100644
--- a/client/go.c
+++ b/client/go.c
@@ -106,8 +106,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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.75));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.75));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.75));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.75));
     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 @ 2022-05-18 20:11:01 +0100
diff --git a/client/go.c b/client/go.c
index 7f0d1b131..0536adbca 100644
--- a/client/go.c
+++ b/client/go.c
@@ -106,8 +106,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.75));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.75));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.5));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.5));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 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 @ 2022-05-18 20:11:09 +0100
diff --git a/client/go.c b/client/go.c
index 0536adbca..0971d4f0c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -108,8 +108,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.5));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.5));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 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], 2), 2000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 2), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2022-05-18 20:11:12 +0100
diff --git a/client/go.c b/client/go.c
index 0971d4f0c..10ccb98e0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -108,8 +108,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.5));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.5));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 2), 2000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 2), 2000);
+    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 @ 2022-05-18 20:12:08 +0100
diff --git a/client/go.c b/client/go.c
index 10ccb98e0..1db7694c1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -94,11 +94,13 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
+    int ix = (int)(4 * p) & 3;
     p = wrap(4 * p);
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./48);
+    sample seq[] = { 64, 64, 48, 72 };
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./seq[ix]);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./64);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2022-05-18 20:12:24 +0100
diff --git a/client/go.c b/client/go.c
index 1db7694c1..868a1e526 100644
--- a/client/go.c
+++ b/client/go.c
@@ -101,7 +101,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample si = sin(t);
     sample seq[] = { 64, 64, 48, 72 };
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./seq[ix]);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./64);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./(2 * seq[ix]));
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2022-05-18 20:13:12 +0100
diff --git a/client/go.c b/client/go.c
index 868a1e526..d8209e8bb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,6 +95,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
     int ix = (int)(4 * p) & 3;
+    int jx = (((((int)(16 * p) & 0xf) * 5) & 0x7) * 3) * 0x3;
     p = wrap(4 * p);
     sample t = twopi * p;
     sample co = cos(t);
diff @ 2022-05-18 20:13:16 +0100
diff --git a/client/go.c b/client/go.c
index d8209e8bb..d17537828 100644
--- a/client/go.c
+++ b/client/go.c
@@ -102,7 +102,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample si = sin(t);
     sample seq[] = { 64, 64, 48, 72 };
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./seq[ix]);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./(2 * seq[ix]));
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./(2 * seq[jx]));
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2022-05-18 20:13:25 +0100
diff --git a/client/go.c b/client/go.c
index d17537828..258710338 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,7 +95,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
     int ix = (int)(4 * p) & 3;
-    int jx = (((((int)(16 * p) & 0xf) * 5) & 0x7) * 3) * 0x3;
+    int jx = (((((int)(16 * p) & 0xf) * 5) & 0x7) * 3) & 0x3;
     p = wrap(4 * p);
     sample t = twopi * p;
     sample co = cos(t);
diff @ 2022-05-18 20:13:32 +0100
diff --git a/client/go.c b/client/go.c
index 258710338..7cd21aeeb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -9,7 +9,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
 {
   if (s->reloaded)
   {
-    //memset(s, 0, sizeof(*s));
+    memset(s, 0, sizeof(*s));
 ///««« MIXDOWN
     for (int o = 0; o < OCTAVES; ++o)
     {
diff @ 2022-05-18 20:13:33 +0100
diff --git a/client/go.c b/client/go.c
index 7cd21aeeb..258710338 100644
--- a/client/go.c
+++ b/client/go.c
@@ -9,7 +9,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
 {
   if (s->reloaded)
   {
-    memset(s, 0, sizeof(*s));
+    //memset(s, 0, sizeof(*s));
 ///««« MIXDOWN
     for (int o = 0; o < OCTAVES; ++o)
     {
diff @ 2022-05-18 20:14:08 +0100
diff --git a/client/go.c b/client/go.c
index 258710338..5ef178009 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,7 +95,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
     int ix = (int)(4 * p) & 3;
-    int jx = (((((int)(16 * p) & 0xf) * 5) & 0x7) * 3) & 0x3;
+    int jx = (((((int)(16 * p) & 0xf) * 5) & 0x7) * 3) & 0x3; // oops, that * cut everything (/0)
     p = wrap(4 * p);
     sample t = twopi * p;
     sample co = cos(t);
diff @ 2022-05-18 20:14:35 +0100
diff --git a/client/go.c b/client/go.c
index 5ef178009..5d11ac6e8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,8 +109,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.5));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.5));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.8));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.8));
     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);
diff @ 2022-05-18 20:14:40 +0100
diff --git a/client/go.c b/client/go.c
index 5d11ac6e8..a0bdcc3a4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,8 +109,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.8));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0.8));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2022-05-18 20:15:40 +0100
diff --git a/client/go.c b/client/go.c
index a0bdcc3a4..7670014b7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -111,8 +111,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 20), 2000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 20), 2000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 2000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2022-05-18 20:16:09 +0100
diff --git a/client/go.c b/client/go.c
index 7670014b7..600484b56 100644
--- a/client/go.c
+++ b/client/go.c
@@ -42,6 +42,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
 
 ///{{{ SEA ORGAN 2.2
   sample ms4 = 1000 * 60 / bpm / 4;
+  sample kick;
   sample p;
   {
     sample RESET = 0;
@@ -65,7 +66,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       feedback[c] = sin((2 * feedback[c] - down - up)*2);
     }
     // beats
-    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
+    kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
     feedback[0] += kick;
     feedback[1] += kick;
     // compress feedback
@@ -116,8 +117,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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] + kick;
+    mixdown[1] = es[1] + kick;
   }
 
 ///}}} EL DAY DE LAY
diff @ 2022-05-18 20:16:27 +0100
diff --git a/client/go.c b/client/go.c
index 600484b56..e3d44c782 100644
--- a/client/go.c
+++ b/client/go.c
@@ -52,7 +52,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = 0.005 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
-    sample hz = 60 * pow(2, sin(twopi * 4 * p));
+    sample hz = 60 * pow(2, sin(twopi * p));
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000 / (3 * hz) * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 1000 / (3 * hz) * (1 + modulation))
diff @ 2022-05-18 20:16:42 +0100
diff --git a/client/go.c b/client/go.c
index e3d44c782..8fe610965 100644
--- a/client/go.c
+++ b/client/go.c
@@ -36,7 +36,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   }
 
 ///((( MIXDOWN
-  sample bpm = 119.1875;
+  sample bpm = 129.1875;
   sample mixdown[2] = { 0, 0 };
 ///))) MIXDOWN
 
diff @ 2022-05-18 20:17:01 +0100
diff --git a/client/go.c b/client/go.c
index 8fe610965..e232fee9f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -117,8 +117,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, 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] + kick;
-    mixdown[1] = es[1] + kick;
+    mixdown[0] = tanh(es[0] + kick);
+    mixdown[1] = tanh(es[1] + kick);
   }
 
 ///}}} EL DAY DE LAY
diff @ 2022-05-18 20:17:13 +0100
diff --git a/client/go.c b/client/go.c
index e232fee9f..da5c2c354 100644
--- a/client/go.c
+++ b/client/go.c
@@ -110,8 +110,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2022-05-18 20:17:22 +0100
diff --git a/client/go.c b/client/go.c
index da5c2c354..3f10b89cd 100644
--- a/client/go.c
+++ b/client/go.c
@@ -110,8 +110,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0.5));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0.5));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2022-05-18 20:17:35 +0100
diff --git a/client/go.c b/client/go.c
index 3f10b89cd..a2966a9a1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,7 +96,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
     int ix = (int)(4 * p) & 3;
-    int jx = (((((int)(16 * p) & 0xf) * 5) & 0x7) * 3) & 0x3; // oops, that * cut everything (/0)
+    int jx = (((((int)(8 * p) & 0xf) * 5) & 0x7) * 3) & 0x3; // oops, that * cut everything (/0)
     p = wrap(4 * p);
     sample t = twopi * p;
     sample co = cos(t);
diff @ 2022-05-18 20:17:49 +0100
diff --git a/client/go.c b/client/go.c
index a2966a9a1..693016bae 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,7 +109,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     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 };
-    compress(es, &s->ecompress1, 5, 10, 25, 48, es);
+    compress(es, &s->ecompress1, 1, 1, 1, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0.5));
     es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0.5));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 2000);
diff @ 2022-05-18 20:18:00 +0100
diff --git a/client/go.c b/client/go.c
index 693016bae..8056dc740 100644
--- a/client/go.c
+++ b/client/go.c
@@ -114,7 +114,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0.5));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 2000);
-    compress(es, &s->ecompress2, 5, 10, 25, 48, es);
+    compress(es, &s->ecompress2, 1, 1, 1, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
     mixdown[0] = tanh(es[0] + kick);
diff @ 2022-05-18 20:18:23 +0100
diff --cc client/go.c
index 8056dc740,01791e234..94275fb08
--- a/client/go.c
+++ b/client/go.c
@@@ -89,38 -54,50 +98,80 @@@ int go(S *s, int inchannels, const floa
  ///{{{ SMOLTECH
  ///}}} SMOLTECH
  ///{{{ GRADIENT
+ 
+   {
+     sample hz = 47.3;
+     sample g = phasor(&s->gradient, bpm/60.0 / (1 << 9));
+     sample k = wrap((1 << 9) * g);
+     k = pow(1 - k, 16);
+     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
+     k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 10), k));
+     sample n = wrap((1 << 9) * g / 2 + 0.5);
+     n = 32 * pow(1 - n, 32);
+     sample nh = wrap((1 << 9) * g * 4000);
+     sample bip = wrap(4 * (1 << 9) * g);
+     int bix = floor(4 * (1 << 9) * g);
+     int bkx = bix % 16;
+     bix %= 8;
+     int bjx = bix;
+     bix *= 3; bjx *= 5; bkx *= 7;
+     bix %= 8; bjx %= 8; bkx %= 16;
+     sample f[2] =
+       { pow(2, 1 - cos(twopi * (g + bix / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bjx / 8.0))), 1 - bip)
+       , pow(2, 1 - cos(twopi * (g + bjx / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bix / 8.0))), 1 - bip)
+       };
+     bip = pow(1 - bip, 4);
+     bip *= (1 + bjx);
+     bip *= twopi;
+     bip = tanh((1 - cos(twopi * (2 * g + bix / 8.0))) * sin(bip));
+     bip *= 16;
+     sample sn[2] =
+       { samphold(&s->gradientsh[0], n * noise(), nh)
+       , samphold(&s->gradientsh[1], n * noise(), nh)
+       };
+     sample v[2] =
+       { early_ref(&s->gradiente[0], biquad(highpass(&s->gradientbq[0], hz * f[0], 5), bip), 0.995) +
+         early_ref(&s->gradiente[2], sn[0], 1)
+       , early_ref(&s->gradiente[1], biquad(highpass(&s->gradientbq[1], hz * f[1], 5), bip), 0.995) +
+         early_ref(&s->gradiente[3], sn[1], 1)
+       };
+     reverb(v, &s->gradientv, v, 10 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
+     mixdown[0] += v[0] + 4 * k + tanh(0.25 * sn[0]);
+     mixdown[1] += v[1] + 4 * k + tanh(0.25 * sn[1]);
+   }
+ 
  ///}}} GRADIENT
  ///{{{ EL DAY DE LAY
 +
 +  {
 +    s->edelay1.length = 4 * SR;
 +    s->edelay2.length = 4 * SR;
 +    int ix = (int)(4 * p) & 3;
 +    int jx = (((((int)(8 * p) & 0xf) * 5) & 0x7) * 3) & 0x3; // oops, that * cut everything (/0)
 +    p = wrap(4 * p);
 +    sample t = twopi * p;
 +    sample co = cos(t);
 +    sample si = sin(t);
 +    sample seq[] = { 64, 64, 48, 72 };
 +    sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./seq[ix]);
 +    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./(2 * seq[jx]));
 +    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);
 +    sample es[2] = { co * el + si * er, -si * el + co * er };
 +    compress(es, &s->ecompress1, 1, 1, 1, 48, es);
 +    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0.5));
 +    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0.5));
 +    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 2000);
 +    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 2000);
 +    compress(es, &s->ecompress2, 1, 1, 1, 48, es);
 +    delwrite(&s->edelay1, es[0]);
 +    delwrite(&s->edelay2, es[1]);
 +    mixdown[0] = tanh(es[0] + kick);
 +    mixdown[1] = tanh(es[1] + kick);
 +  }
 +
  ///}}} EL DAY DE LAY
  ///{{{ NON-SMOOTH
  ///}}} NON-SMOOTH
diff --cc client/go.h
index 69ac9136b,ecd773459..077870ddc
--- a/client/go.h
+++ b/client/go.h
@@@ -61,17 -41,13 +61,22 @@@ typedef struct 
  ///[[[ SMOLTECH
  ///]]] SMOLTECH
  ///[[[ GRADIENT
+   PHASOR gradient;
+   BIQUAD gradientbq[4];
+   EARLYREF gradiente[4];
+   REVERB gradientv;
+   SAMPHOLD gradientsh[2];
  ///]]] GRADIENT
  ///[[[ EL DAY DE LAY
 +  COMPRESS ecompress1;
 +  COMPRESS ecompress2;
 +  DELAY edelay1;
 +  float edelay1buf[4 * SR];
 +  DELAY edelay2;
 +  float edelay2buf[4 * SR];
 +  LOP elop[2];
 +  LOP elop2[2];
 +  HIP ehip2[2];
  ///]]] EL DAY DE LAY
  ///[[[ NON-SMOOTH
  ///]]] NON-SMOOTH
diff @ 2022-05-18 20:19:01 +0100
diff --git a/client/go.c b/client/go.c
index 94275fb08..8f3cde0b5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     // modulate delay times
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample modulation = 0.005 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
-    sample hz = 60 * pow(2, sin(twopi * p));
+    sample hz = 47.3;
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000 / (3 * hz) * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 1000 / (3 * hz) * (1 + modulation))
diff @ 2022-05-18 20:19:11 +0100
diff --git a/client/go.c b/client/go.c
index 8f3cde0b5..71a7a0533 100644
--- a/client/go.c
+++ b/client/go.c
@@ -106,7 +106,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 10), k));
-    sample n = wrap((1 << 9) * g / 2 + 0.5);
+    sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 9) * g * 4000);
     sample bip = wrap(4 * (1 << 9) * g);
diff @ 2022-05-18 20:19:18 +0100
diff --git a/client/go.c b/client/go.c
index 71a7a0533..a5d6e95ef 100644
--- a/client/go.c
+++ b/client/go.c
@@ -108,7 +108,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 10), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
-    sample nh = wrap((1 << 9) * g * 4000);
+    sample nh = wrap((1 << 10) * g * 4000);
     sample bip = wrap(4 * (1 << 9) * g);
     int bix = floor(4 * (1 << 9) * g);
     int bkx = bix % 16;
diff @ 2022-05-18 20:19:25 +0100
diff --git a/client/go.c b/client/go.c
index a5d6e95ef..74e40a4b8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,7 +109,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 10) * g * 4000);
-    sample bip = wrap(4 * (1 << 9) * g);
+    sample bip = wrap(4 * (1 << 10) * g);
     int bix = floor(4 * (1 << 9) * g);
     int bkx = bix % 16;
     bix %= 8;
diff @ 2022-05-18 20:19:29 +0100
diff --git a/client/go.c b/client/go.c
index 74e40a4b8..a5d6e95ef 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,7 +109,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 10) * g * 4000);
-    sample bip = wrap(4 * (1 << 10) * g);
+    sample bip = wrap(4 * (1 << 9) * g);
     int bix = floor(4 * (1 << 9) * g);
     int bkx = bix % 16;
     bix %= 8;
diff @ 2022-05-18 20:19:31 +0100
diff --git a/client/go.c b/client/go.c
index a5d6e95ef..3dae4b178 100644
--- a/client/go.c
+++ b/client/go.c
@@ -110,7 +110,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 10) * g * 4000);
     sample bip = wrap(4 * (1 << 9) * g);
-    int bix = floor(4 * (1 << 9) * g);
+    int bix = floor(4 * (1 << 10) * g);
     int bkx = bix % 16;
     bix %= 8;
     int bjx = bix;
diff @ 2022-05-18 20:19:33 +0100
diff --git a/client/go.c b/client/go.c
index 3dae4b178..a5d6e95ef 100644
--- a/client/go.c
+++ b/client/go.c
@@ -110,7 +110,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 10) * g * 4000);
     sample bip = wrap(4 * (1 << 9) * g);
-    int bix = floor(4 * (1 << 10) * g);
+    int bix = floor(4 * (1 << 9) * g);
     int bkx = bix % 16;
     bix %= 8;
     int bjx = bix;
diff @ 2022-05-18 20:19:55 +0100
diff --git a/client/go.c b/client/go.c
index a5d6e95ef..4d944e10f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -135,7 +135,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       , early_ref(&s->gradiente[1], biquad(highpass(&s->gradientbq[1], hz * f[1], 5), bip), 0.995) +
         early_ref(&s->gradiente[3], sn[1], 1)
       };
-    reverb(v, &s->gradientv, v, 10 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
+    reverb(v, &s->gradientv, v, 20 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
     mixdown[0] += v[0] + 4 * k + tanh(0.25 * sn[0]);
     mixdown[1] += v[1] + 4 * k + tanh(0.25 * sn[1]);
   }
diff @ 2022-05-18 20:19:58 +0100
diff --git a/client/go.c b/client/go.c
index 4d944e10f..434617edc 100644
--- a/client/go.c
+++ b/client/go.c
@@ -135,7 +135,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       , early_ref(&s->gradiente[1], biquad(highpass(&s->gradientbq[1], hz * f[1], 5), bip), 0.995) +
         early_ref(&s->gradiente[3], sn[1], 1)
       };
-    reverb(v, &s->gradientv, v, 20 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
+    reverb(v, &s->gradientv, v, 30 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
     mixdown[0] += v[0] + 4 * k + tanh(0.25 * sn[0]);
     mixdown[1] += v[1] + 4 * k + tanh(0.25 * sn[1]);
   }
diff @ 2022-05-18 20:20:00 +0100
diff --git a/client/go.c b/client/go.c
index 434617edc..fa5ecf2d2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -135,7 +135,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       , early_ref(&s->gradiente[1], biquad(highpass(&s->gradientbq[1], hz * f[1], 5), bip), 0.995) +
         early_ref(&s->gradiente[3], sn[1], 1)
       };
-    reverb(v, &s->gradientv, v, 30 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
+    reverb(v, &s->gradientv, v, 50 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
     mixdown[0] += v[0] + 4 * k + tanh(0.25 * sn[0]);
     mixdown[1] += v[1] + 4 * k + tanh(0.25 * sn[1]);
   }
diff @ 2022-05-18 20:20:03 +0100
diff --git a/client/go.c b/client/go.c
index fa5ecf2d2..400394aca 100644
--- a/client/go.c
+++ b/client/go.c
@@ -135,7 +135,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       , early_ref(&s->gradiente[1], biquad(highpass(&s->gradientbq[1], hz * f[1], 5), bip), 0.995) +
         early_ref(&s->gradiente[3], sn[1], 1)
       };
-    reverb(v, &s->gradientv, v, 50 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
+    reverb(v, &s->gradientv, v, 150 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
     mixdown[0] += v[0] + 4 * k + tanh(0.25 * sn[0]);
     mixdown[1] += v[1] + 4 * k + tanh(0.25 * sn[1]);
   }
diff @ 2022-05-18 20:20:12 +0100
diff --git a/client/go.c b/client/go.c
index 400394aca..28553ce4e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -135,7 +135,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       , early_ref(&s->gradiente[1], biquad(highpass(&s->gradientbq[1], hz * f[1], 5), bip), 0.995) +
         early_ref(&s->gradiente[3], sn[1], 1)
       };
-    reverb(v, &s->gradientv, v, 150 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
+    reverb(v, &s->gradientv, v, 250 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
     mixdown[0] += v[0] + 4 * k + tanh(0.25 * sn[0]);
     mixdown[1] += v[1] + 4 * k + tanh(0.25 * sn[1]);
   }
diff @ 2022-05-18 20:20:16 +0100
diff --git a/client/go.c b/client/go.c
index 28553ce4e..2667d4bfd 100644
--- a/client/go.c
+++ b/client/go.c
@@ -135,7 +135,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       , early_ref(&s->gradiente[1], biquad(highpass(&s->gradientbq[1], hz * f[1], 5), bip), 0.995) +
         early_ref(&s->gradiente[3], sn[1], 1)
       };
-    reverb(v, &s->gradientv, v, 250 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
+    reverb(v, &s->gradientv, v, 500 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
     mixdown[0] += v[0] + 4 * k + tanh(0.25 * sn[0]);
     mixdown[1] += v[1] + 4 * k + tanh(0.25 * sn[1]);
   }
diff @ 2022-05-18 20:20:28 +0100
diff --git a/client/go.c b/client/go.c
index 2667d4bfd..21627a7f6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -161,8 +161,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 1, 1, 1, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0.5));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0.5));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.5));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.5));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 2000);
     compress(es, &s->ecompress2, 1, 1, 1, 48, es);
diff @ 2022-05-18 20:20:36 +0100
diff --git a/client/go.c b/client/go.c
index 21627a7f6..9645127c9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -161,8 +161,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 1, 1, 1, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.5));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.5));
+    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], 200), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 2000);
     compress(es, &s->ecompress2, 1, 1, 1, 48, es);
diff @ 2022-05-18 20:20:50 +0100
diff --git a/client/go.c b/client/go.c
index 9645127c9..90bcb11a3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -115,7 +115,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     bix %= 8;
     int bjx = bix;
     bix *= 3; bjx *= 5; bkx *= 7;
-    bix %= 8; bjx %= 8; bkx %= 16;
+    bix %= 7; bjx %= 8; bkx %= 16;
     sample f[2] =
       { pow(2, 1 - cos(twopi * (g + bix / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bjx / 8.0))), 1 - bip)
       , pow(2, 1 - cos(twopi * (g + bjx / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bix / 8.0))), 1 - bip)
diff @ 2022-05-18 20:20:53 +0100
diff --git a/client/go.c b/client/go.c
index 90bcb11a3..19ace0778 100644
--- a/client/go.c
+++ b/client/go.c
@@ -115,7 +115,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     bix %= 8;
     int bjx = bix;
     bix *= 3; bjx *= 5; bkx *= 7;
-    bix %= 7; bjx %= 8; bkx %= 16;
+    bix %= 7; bjx %= 6; bkx %= 16;
     sample f[2] =
       { pow(2, 1 - cos(twopi * (g + bix / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bjx / 8.0))), 1 - bip)
       , pow(2, 1 - cos(twopi * (g + bjx / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bix / 8.0))), 1 - bip)
diff @ 2022-05-18 20:20:56 +0100
diff --git a/client/go.c b/client/go.c
index 19ace0778..a80fc05b3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -115,7 +115,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     bix %= 8;
     int bjx = bix;
     bix *= 3; bjx *= 5; bkx *= 7;
-    bix %= 7; bjx %= 6; bkx %= 16;
+    bix %= 7; bjx %= 6; bkx %= 15;
     sample f[2] =
       { pow(2, 1 - cos(twopi * (g + bix / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bjx / 8.0))), 1 - bip)
       , pow(2, 1 - cos(twopi * (g + bjx / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bix / 8.0))), 1 - bip)
diff @ 2022-05-18 20:21:14 +0100
diff --git a/client/go.c b/client/go.c
index a80fc05b3..094f7e809 100644
--- a/client/go.c
+++ b/client/go.c
@@ -108,7 +108,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 10), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
-    sample nh = wrap((1 << 10) * g * 4000);
+    sample nh = wrap((1 << 11) * g * 4000);
     sample bip = wrap(4 * (1 << 9) * g);
     int bix = floor(4 * (1 << 9) * g);
     int bkx = bix % 16;
diff @ 2022-05-18 20:21:19 +0100
diff --git a/client/go.c b/client/go.c
index 094f7e809..950bef11b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,7 +109,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
-    sample bip = wrap(4 * (1 << 9) * g);
+    sample bip = wrap(4 * (1 << 11) * g);
     int bix = floor(4 * (1 << 9) * g);
     int bkx = bix % 16;
     bix %= 8;
diff @ 2022-05-18 20:21:21 +0100
diff --git a/client/go.c b/client/go.c
index 950bef11b..51c6e0962 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,7 +109,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
-    sample bip = wrap(4 * (1 << 11) * g);
+    sample bip = wrap(4 * (1 << 12) * g);
     int bix = floor(4 * (1 << 9) * g);
     int bkx = bix % 16;
     bix %= 8;
diff @ 2022-05-18 20:21:25 +0100
diff --git a/client/go.c b/client/go.c
index 51c6e0962..e75f94c79 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,7 +109,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
-    sample bip = wrap(4 * (1 << 12) * g);
+    sample bip = wrap(4 * (1 << 13) * g);
     int bix = floor(4 * (1 << 9) * g);
     int bkx = bix % 16;
     bix %= 8;
diff @ 2022-05-18 20:21:32 +0100
diff --git a/client/go.c b/client/go.c
index e75f94c79..39a5abced 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,7 +109,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
-    sample bip = wrap(4 * (1 << 13) * g);
+    sample bip = wrap(4 * (1 << 14) * g);
     int bix = floor(4 * (1 << 9) * g);
     int bkx = bix % 16;
     bix %= 8;
diff @ 2022-05-18 20:21:36 +0100
diff --git a/client/go.c b/client/go.c
index 39a5abced..5d93ac807 100644
--- a/client/go.c
+++ b/client/go.c
@@ -102,7 +102,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     sample hz = 47.3;
     sample g = phasor(&s->gradient, bpm/60.0 / (1 << 9));
-    sample k = wrap((1 << 9) * g);
+    sample k = wrap((1 << 10) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 10), k));
diff @ 2022-05-18 20:21:50 +0100
diff --git a/client/go.c b/client/go.c
index 5d93ac807..5af3e76ed 100644
--- a/client/go.c
+++ b/client/go.c
@@ -104,7 +104,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample g = phasor(&s->gradient, bpm/60.0 / (1 << 9));
     sample k = wrap((1 << 10) * g);
     k = pow(1 - k, 16);
-    k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
+    k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 16 * k));
     k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 10), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
diff @ 2022-05-18 20:22:09 +0100
diff --git a/client/go.c b/client/go.c
index 5af3e76ed..4e80eea2a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,50 +50,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
 ///))) MIXDOWN
 
 ///{{{ SEA ORGAN 2.2
-  sample ms4 = 1000 * 60 / bpm / 4;
   sample kick;
   sample p;
-  {
-    sample RESET = 0;
-    sample so2[2] = { 0, 0 };
-    // trigger impulse on reload
-    sample impulse[2] = { s->reloaded, s->reloaded };
-    // modulate delay times
-    p = phasor(&s->so2.phase, bpm/60 / 16);
-    sample modulation = 0.005 * cos(twopi * p * 2 * 2 * 2 * 2 * 2 * 2);
-    sample hz = 47.3;
-    sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 1000 / (3 * hz) * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, 1000 / (3 * hz) * (1 + modulation))
-      };
-    // 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]);
-      sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
-        lop(&s->so2.lag[c][1],  24, 1e-2), down);
-      feedback[c] = sin((2 * feedback[c] - down - up)*2);
-    }
-    // beats
-    kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
-    feedback[0] += kick;
-    feedback[1] += kick;
-    // compress feedback
-    compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
-    sample gain = 1;
-    so2[0] *= gain;
-    so2[1] *= gain;
-    // write to delay lines
-    for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 20, 500,
-        tanh(so2[c] + RESET*impulse[c]));
-    }
-    // output
-    kick = biquad(highpass(&s->so2k, hz, 10), kick);
-    kick += sin(kick * kick * kick);
-    mixdown[0] += so2[0] + kick;
-    mixdown[1] += so2[1] + kick;
-  }
 ///}}} SEA ORGAN 2.2
 ///{{{ SMOLTECH
 ///}}} SMOLTECH
diff @ 2022-05-18 20:22:16 +0100
diff --git a/client/go.c b/client/go.c
index 4e80eea2a..d2bc6c265 100644
--- a/client/go.c
+++ b/client/go.c
@@ -60,7 +60,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     sample hz = 47.3;
     sample g = phasor(&s->gradient, bpm/60.0 / (1 << 9));
-    sample k = wrap((1 << 10) * g);
+    sample k = wrap((1 << 8) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 16 * k));
     k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 10), k));
diff @ 2022-05-18 20:22:34 +0100
diff --git a/client/go.c b/client/go.c
index d2bc6c265..866830372 100644
--- a/client/go.c
+++ b/client/go.c
@@ -93,7 +93,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       , early_ref(&s->gradiente[1], biquad(highpass(&s->gradientbq[1], hz * f[1], 5), bip), 0.995) +
         early_ref(&s->gradiente[3], sn[1], 1)
       };
-    reverb(v, &s->gradientv, v, 500 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
+    reverb(v, &s->gradientv, v, 5 * pow(8, 1 - cos(twopi * (4 * g + bkx / 16.0))));
     mixdown[0] += v[0] + 4 * k + tanh(0.25 * sn[0]);
     mixdown[1] += v[1] + 4 * k + tanh(0.25 * sn[1]);
   }
diff @ 2022-05-18 20:22:46 +0100
diff --git a/client/go.c b/client/go.c
index 866830372..d46e0fbfc 100644
--- a/client/go.c
+++ b/client/go.c
@@ -119,8 +119,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 1, 1, 1, 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.5, pow(wrap(8 * p), (sample) 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), (sample) 0.25), 0));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 200), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 200), 2000);
     compress(es, &s->ecompress2, 1, 1, 1, 48, es);
diff @ 2022-05-18 20:23:01 +0100
diff --git a/client/go.c b/client/go.c
index d46e0fbfc..fa3835412 100644
--- a/client/go.c
+++ b/client/go.c
@@ -59,7 +59,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
 
   {
     sample hz = 47.3;
-    sample g = phasor(&s->gradient, bpm/60.0 / (1 << 9));
+    sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
     sample k = wrap((1 << 8) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 16 * k));
diff @ 2022-05-18 20:23:16 +0100
diff --git a/client/go.c b/client/go.c
index fa3835412..1ca628807 100644
--- a/client/go.c
+++ b/client/go.c
@@ -73,7 +73,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     bix %= 8;
     int bjx = bix;
     bix *= 3; bjx *= 5; bkx *= 7;
-    bix %= 7; bjx %= 6; bkx %= 15;
+    bix %= 8; bjx %= 8; bkx %= 16;
     sample f[2] =
       { pow(2, 1 - cos(twopi * (g + bix / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bjx / 8.0))), 1 - bip)
       , pow(2, 1 - cos(twopi * (g + bjx / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bix / 8.0))), 1 - bip)
diff @ 2022-05-18 20:23:25 +0100
diff --git a/client/go.c b/client/go.c
index 1ca628807..e09d7661b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -72,7 +72,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     int bkx = bix % 16;
     bix %= 8;
     int bjx = bix;
-    bix *= 3; bjx *= 5; bkx *= 7;
+    bix *= 3; bjx *= 3; bkx *= 7;
     bix %= 8; bjx %= 8; bkx %= 16;
     sample f[2] =
       { pow(2, 1 - cos(twopi * (g + bix / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bjx / 8.0))), 1 - bip)
diff @ 2022-05-18 20:23:27 +0100
diff --git a/client/go.c b/client/go.c
index e09d7661b..4e132f97d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -72,7 +72,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     int bkx = bix % 16;
     bix %= 8;
     int bjx = bix;
-    bix *= 3; bjx *= 3; bkx *= 7;
+    bix *= 5; bjx *= 3; bkx *= 7;
     bix %= 8; bjx %= 8; bkx %= 16;
     sample f[2] =
       { pow(2, 1 - cos(twopi * (g + bix / 8.0))) * pow(2 * (1 - 0.9 * cos(twopi * (32 * g + bjx / 8.0))), 1 - bip)
diff @ 2022-05-18 20:23:48 +0100
diff --git a/client/go.c b/client/go.c
index 4e132f97d..eb404e33c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -113,8 +113,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample seq[] = { 64, 64, 48, 72 };
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./seq[ix]);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./(2 * seq[jx]));
-    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 @ 2022-05-18 20:23:54 +0100
diff --git a/client/go.c b/client/go.c
index eb404e33c..76f8e694a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -113,8 +113,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample seq[] = { 64, 64, 48, 72 };
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./seq[ix]);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./2 : 1./(2 * seq[jx]));
-    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 @ 2022-05-18 20:24:03 +0100
diff --git a/client/go.c b/client/go.c
index 76f8e694a..8b9cb795e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -106,7 +106,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     s->edelay2.length = 4 * SR;
     int ix = (int)(4 * p) & 3;
     int jx = (((((int)(8 * p) & 0xf) * 5) & 0x7) * 3) & 0x3; // oops, that * cut everything (/0)
-    p = wrap(4 * p);
+    p = wrap(16 * p);
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
diff @ 2022-05-18 20:24:17 +0100
diff --git a/client/go.c b/client/go.c
index 8b9cb795e..3187f8c0b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -67,7 +67,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
-    sample bip = wrap(4 * (1 << 14) * g);
+    sample bip = wrap(4 * (1 << 9) * g);
     int bix = floor(4 * (1 << 9) * g);
     int bkx = bix % 16;
     bix %= 8;
diff @ 2022-05-18 20:24:28 +0100
diff --git a/client/go.c b/client/go.c
index 3187f8c0b..482b7e5f1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -60,7 +60,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     sample hz = 47.3;
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
-    sample k = wrap((1 << 8) * g);
+    sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 16 * k));
     k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 10), k));
diff @ 2022-05-18 20:24:34 +0100
diff --git a/client/go.c b/client/go.c
index 482b7e5f1..85c53e81c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -62,7 +62,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
-    k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 16 * k));
+    k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 10), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
diff @ 2022-05-18 20:24:37 +0100
diff --git a/client/go.c b/client/go.c
index 85c53e81c..764d4ac2b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,7 +63,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
-    k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 10), k));
+    k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 100), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
diff @ 2022-05-18 20:24:49 +0100
diff --git a/client/go.c b/client/go.c
index 764d4ac2b..e29bb9afa 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,7 +63,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
-    k = 4 * sin(0.25 * biquad(highpass(&s->gradientbq[2], hz, 100), k));
+    k = 4 * sin(0.325 * biquad(highpass(&s->gradientbq[2], hz, 100), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
diff @ 2022-05-18 20:24:51 +0100
diff --git a/client/go.c b/client/go.c
index e29bb9afa..dfeceddff 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,7 +63,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
-    k = 4 * sin(0.325 * biquad(highpass(&s->gradientbq[2], hz, 100), k));
+    k = 4 * sin(0.4325 * biquad(highpass(&s->gradientbq[2], hz, 100), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
diff @ 2022-05-18 20:24:53 +0100
diff --git a/client/go.c b/client/go.c
index dfeceddff..108c4015e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,7 +63,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
-    k = 4 * sin(0.4325 * biquad(highpass(&s->gradientbq[2], hz, 100), k));
+    k = 4 * sin(0.54325 * biquad(highpass(&s->gradientbq[2], hz, 100), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
diff @ 2022-05-18 20:24:55 +0100
diff --git a/client/go.c b/client/go.c
index 108c4015e..456d55ed2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,7 +63,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
-    k = 4 * sin(0.54325 * biquad(highpass(&s->gradientbq[2], hz, 100), k));
+    k = 4 * sin(0.654325 * biquad(highpass(&s->gradientbq[2], hz, 100), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
diff @ 2022-05-18 20:25:11 +0100
diff --git a/client/go.c b/client/go.c
index 456d55ed2..a331fafa4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,7 +63,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
-    k = 4 * sin(0.654325 * biquad(highpass(&s->gradientbq[2], hz, 100), k));
+    k = 4 * sin(0.5 * (1.5 - cos(twopi * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
diff @ 2022-05-18 20:25:19 +0100
diff --git a/client/go.c b/client/go.c
index a331fafa4..b47dd4bd3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,7 +63,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
-    k = 4 * sin(0.5 * (1.5 - cos(twopi * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k));
+    k = 4 * sin(0.5 * (1.5 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
diff @ 2022-05-18 20:25:32 +0100
diff --git a/client/go.c b/client/go.c
index b47dd4bd3..b552db2bc 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,7 +63,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
-    k = 4 * sin(0.5 * (1.5 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k));
+    k = 4 * sin(0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k));
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
diff @ 2022-05-18 20:25:49 +0100
diff --git a/client/go.c b/client/go.c
index b552db2bc..da10d4ac2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -64,6 +64,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin(0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k));
+    
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
     sample nh = wrap((1 << 11) * g * 4000);
diff @ 2022-05-18 20:26:06 +0100
diff --git a/client/go.h b/client/go.h
index 077870ddc..0c0f6c3f4 100644
--- a/client/go.h
+++ b/client/go.h
@@ -78,6 +78,7 @@ typedef struct {
   LOP elop2[2];
   HIP ehip2[2];
 ///]]] EL DAY DE LAY
+  BIQUAD harmonics[16];
 ///[[[ NON-SMOOTH
 ///]]] NON-SMOOTH
 ///[[[ CHARRED BARD
diff @ 2022-05-18 20:26:46 +0100
diff --git a/client/go.c b/client/go.c
index da10d4ac2..5c16a77fa 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,7 +63,9 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
-    k = 4 * sin(0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k));
+    k = 4 * sin(
+      0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
+      0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k));
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
diff @ 2022-05-18 20:27:02 +0100
diff --git a/client/go.c b/client/go.c
index 5c16a77fa..ec277c486 100644
--- a/client/go.c
+++ b/client/go.c
@@ -65,7 +65,9 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin(
       0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
-      0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k));
+      0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
+      0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
+      );
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
diff @ 2022-05-18 20:27:05 +0100
diff --git a/client/go.c b/client/go.c
index ec277c486..2ab38b561 100644
--- a/client/go.c
+++ b/client/go.c
@@ -67,6 +67,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
+      0
       );
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:27:20 +0100
diff --git a/client/go.c b/client/go.c
index 2ab38b561..3cde839c2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,12 +63,11 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
-    k = 4 * sin(
+    k = 4 * sin()
       0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
-      0
-      );
+      0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
     n = 32 * pow(1 - n, 32);
diff @ 2022-05-18 20:27:24 +0100
diff --git a/client/go.c b/client/go.c
index 3cde839c2..250607b6c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,7 +63,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample k = wrap((1 << 9) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
-    k = 4 * sin()
+    k = 4 * sin((
       0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
diff @ 2022-05-18 20:27:35 +0100
diff --git a/client/go.c b/client/go.c
index 250607b6c..f7a595252 100644
--- a/client/go.c
+++ b/client/go.c
@@ -67,6 +67,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
+      0.5 * (2 - cos(twopi * 128 * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
       0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:27:44 +0100
diff --git a/client/go.c b/client/go.c
index f7a595252..472c22a39 100644
--- a/client/go.c
+++ b/client/go.c
@@ -67,7 +67,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
-      0.5 * (2 - cos(twopi * 128 * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
+      0.5 * (2 - cos(twopi * (1 << 6) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
       0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:27:54 +0100
diff --git a/client/go.c b/client/go.c
index 472c22a39..ae9a90aa3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -67,7 +67,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
-      0.5 * (2 - cos(twopi * (1 << 6) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
+      0.5 * (2 - cos(twopi * (1 << 8) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
       0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:28:17 +0100
diff --git a/client/go.c b/client/go.c
index ae9a90aa3..ce60611c7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -68,6 +68,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 8) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
+      0.5 * (2 - cos(twopi * (1 << 9) * g)) * biquad(highpass(&s->harmonics[3], hz * 8, 100), k) +
       0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:28:21 +0100
diff --git a/client/go.c b/client/go.c
index ce60611c7..35ac5ab56 100644
--- a/client/go.c
+++ b/client/go.c
@@ -68,7 +68,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 8) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
-      0.5 * (2 - cos(twopi * (1 << 9) * g)) * biquad(highpass(&s->harmonics[3], hz * 8, 100), k) +
+      0.5 * (2 - cos(twopi * (1 << 9) * g)) * biquad(highpass(&s->harmonics[3], hz * 8, 1000), k) +
       0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:28:25 +0100
diff --git a/client/go.c b/client/go.c
index 35ac5ab56..5fbf49532 100644
--- a/client/go.c
+++ b/client/go.c
@@ -68,7 +68,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 8) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
-      0.5 * (2 - cos(twopi * (1 << 9) * g)) * biquad(highpass(&s->harmonics[3], hz * 8, 1000), k) +
+      0.5 * (2 - cos(twopi * (1 << 9) * g)) * biquad(highpass(&s->harmonics[3], hz * 16, 1000), k) +
       0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:28:34 +0100
diff --git a/client/go.c b/client/go.c
index 5fbf49532..a79eb12ca 100644
--- a/client/go.c
+++ b/client/go.c
@@ -68,7 +68,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 8) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
-      0.5 * (2 - cos(twopi * (1 << 9) * g)) * biquad(highpass(&s->harmonics[3], hz * 16, 1000), k) +
+      0.5 * (2 - cos(twopi * (1 << 10) * g)) * biquad(highpass(&s->harmonics[3], hz * 16, 1000), k) +
       0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:28:44 +0100
diff --git a/client/go.c b/client/go.c
index a79eb12ca..ca0c64a6a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -69,6 +69,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 8) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 10) * g)) * biquad(highpass(&s->harmonics[3], hz * 16, 1000), k) +
+      0.5 * (2 - cos(twopi * (1 << 12) * g)) * biquad(highpass(&s->harmonics[4], hz * 17, 1000), k) +
       0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:28:46 +0100
diff --git a/client/go.c b/client/go.c
index ca0c64a6a..cae2b7e82 100644
--- a/client/go.c
+++ b/client/go.c
@@ -69,7 +69,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 8) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 10) * g)) * biquad(highpass(&s->harmonics[3], hz * 16, 1000), k) +
-      0.5 * (2 - cos(twopi * (1 << 12) * g)) * biquad(highpass(&s->harmonics[4], hz * 17, 1000), k) +
+      0.5 * (2 - cos(twopi * (1 << 12) * g)) * biquad(highpass(&s->harmonics[4], hz * 18, 1000), k) +
       0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:29:02 +0100
diff --git a/client/go.c b/client/go.c
index cae2b7e82..efdafa747 100644
--- a/client/go.c
+++ b/client/go.c
@@ -70,6 +70,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * (1 << 8) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 10) * g)) * biquad(highpass(&s->harmonics[3], hz * 16, 1000), k) +
       0.5 * (2 - cos(twopi * (1 << 12) * g)) * biquad(highpass(&s->harmonics[4], hz * 18, 1000), k) +
+      0.5 * (2 - cos(twopi * (1 << 11) * g)) * biquad(highpass(&s->harmonics[4], hz / 2, 1000), k) +
       0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:29:07 +0100
diff --git a/client/go.c b/client/go.c
index efdafa747..093421cad 100644
--- a/client/go.c
+++ b/client/go.c
@@ -70,7 +70,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * (1 << 8) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 10) * g)) * biquad(highpass(&s->harmonics[3], hz * 16, 1000), k) +
       0.5 * (2 - cos(twopi * (1 << 12) * g)) * biquad(highpass(&s->harmonics[4], hz * 18, 1000), k) +
-      0.5 * (2 - cos(twopi * (1 << 11) * g)) * biquad(highpass(&s->harmonics[4], hz / 2, 1000), k) +
+      0.5 * (2 - cos(twopi * (1 << 11) * g)) * biquad(highpass(&s->harmonics[4], hz / 2, 100), k) +
       0) / 4);
     
     sample n = wrap((1 << 10) * g / 2 + 0.5);
diff @ 2022-05-18 20:29:08 +0100
diff --git a/client/go.c b/client/go.c
index 093421cad..757184cbe 100644
--- a/client/go.c
+++ b/client/go.c
@@ -68,8 +68,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
       0.5 * (2 - cos(twopi * 64 * g)) * biquad(highpass(&s->harmonics[1], hz * 3, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 8) * g)) * biquad(highpass(&s->harmonics[2], hz * 5, 100), k) +
-      0.5 * (2 - cos(twopi * (1 << 10) * g)) * biquad(highpass(&s->harmonics[3], hz * 16, 1000), k) +
-      0.5 * (2 - cos(twopi * (1 << 12) * g)) * biquad(highpass(&s->harmonics[4], hz * 18, 1000), k) +
+      0.5 * (2 - cos(twopi * (1 << 10) * g)) * biquad(highpass(&s->harmonics[3], hz * 16, 100), k) +
+      0.5 * (2 - cos(twopi * (1 << 12) * g)) * biquad(highpass(&s->harmonics[4], hz * 18, 100), k) +
       0.5 * (2 - cos(twopi * (1 << 11) * g)) * biquad(highpass(&s->harmonics[4], hz / 2, 100), k) +
       0) / 4);
     
diff @ 2022-05-18 20:29:24 +0100
diff --git a/client/go.c b/client/go.c
index 757184cbe..6830bbf06 100644
--- a/client/go.c
+++ b/client/go.c
@@ -45,7 +45,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   }
 
 ///((( MIXDOWN
-  sample bpm = 129.1875;
+  sample bpm = 133.1875;
   sample mixdown[2] = { 0, 0 };
 ///))) MIXDOWN
 
diff @ 2022-05-18 20:29:28 +0100
diff --git a/client/go.c b/client/go.c
index 6830bbf06..be084aee6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -45,7 +45,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   }
 
 ///((( MIXDOWN
-  sample bpm = 133.1875;
+  sample bpm = 138.1875;
   sample mixdown[2] = { 0, 0 };
 ///))) MIXDOWN
 
diff @ 2022-05-18 20:29:40 +0100
diff --git a/client/go.c b/client/go.c
index be084aee6..8ddb945d6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -60,7 +60,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     sample hz = 47.3;
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
-    sample k = wrap((1 << 9) * g);
+    sample k = wrap((1 << 10) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin((
diff @ 2022-05-18 20:29:47 +0100
diff --git a/client/go.c b/client/go.c
index 8ddb945d6..c90d7c398 100644
--- a/client/go.c
+++ b/client/go.c
@@ -60,7 +60,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     sample hz = 47.3;
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
-    sample k = wrap((1 << 10) * g);
+    sample k = wrap((1 << 11) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin((
diff @ 2022-05-18 20:29:50 +0100
diff --git a/client/go.c b/client/go.c
index c90d7c398..e3175219b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -60,7 +60,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     sample hz = 47.3;
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
-    sample k = wrap((1 << 11) * g);
+    sample k = wrap((1 << 12) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin((
diff @ 2022-05-18 20:29:52 +0100
diff --git a/client/go.c b/client/go.c
index e3175219b..3dfb8570d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -60,7 +60,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     sample hz = 47.3;
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
-    sample k = wrap((1 << 12) * g);
+    sample k = wrap((1 << 13) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin((
diff @ 2022-05-18 20:29:54 +0100
diff --git a/client/go.c b/client/go.c
index 3dfb8570d..edc95562c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -60,7 +60,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     sample hz = 47.3;
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
-    sample k = wrap((1 << 13) * g);
+    sample k = wrap((1 << 14) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin((
diff @ 2022-05-18 20:30:02 +0100
diff --git a/client/go.c b/client/go.c
index edc95562c..f494f1a7c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -59,7 +59,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
 
   {
     sample hz = 47.3;
-    sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
+    sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 10));
     sample k = wrap((1 << 14) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
diff @ 2022-05-18 20:30:08 +0100
diff --git a/client/go.c b/client/go.c
index f494f1a7c..022df4b85 100644
--- a/client/go.c
+++ b/client/go.c
@@ -60,7 +60,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     sample hz = 47.3;
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 10));
-    sample k = wrap((1 << 14) * g);
+    sample k = wrap((1 << 18) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin((
diff @ 2022-05-18 20:30:11 +0100
diff --git a/client/go.c b/client/go.c
index 022df4b85..a7190afdc 100644
--- a/client/go.c
+++ b/client/go.c
@@ -60,7 +60,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     sample hz = 47.3;
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 10));
-    sample k = wrap((1 << 18) * g);
+    sample k = wrap((1 << 24) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin((
diff @ 2022-05-18 20:30:17 +0100
diff --git a/client/go.c b/client/go.c
index a7190afdc..f6809cff0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -59,7 +59,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
 
   {
     sample hz = 47.3;
-    sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 10));
+    sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
     sample k = wrap((1 << 24) * g);
     k = pow(1 - k, 16);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
diff @ 2022-05-18 20:30:26 +0100
diff --git a/client/go.c b/client/go.c
index f6809cff0..01707c947 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample hz = 47.3;
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
     sample k = wrap((1 << 24) * g);
-    k = pow(1 - k, 16);
+    k = pow(1 - k, 10);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin((
       0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
diff @ 2022-05-18 20:30:30 +0100
diff --git a/client/go.c b/client/go.c
index 01707c947..291b3425e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,7 +61,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample hz = 47.3;
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
     sample k = wrap((1 << 24) * g);
-    k = pow(1 - k, 10);
+    k = pow(1 - k, 8);
     k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
     k = 4 * sin((
       0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
diff @ 2022-05-18 20:30:36 +0100
diff --git a/client/go.c b/client/go.c
index 291b3425e..46532ddff 100644
--- a/client/go.c
+++ b/client/go.c
@@ -62,7 +62,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
     sample k = wrap((1 << 24) * g);
     k = pow(1 - k, 8);
-    k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 8 * k));
+    k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 1 * k));
     k = 4 * sin((
       0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
diff @ 2022-05-18 20:30:47 +0100
diff --git a/client/go.c b/client/go.c
index 46532ddff..bf0c76dc7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -59,10 +59,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
 
   {
     sample hz = 47.3;
-    sample g = p = phasor(&s->gradient, bpm/60.0 / (1 << 9));
+    sample g = p = 0*phasor(&s->gradient, bpm/60.0 / (1 << 9));
     sample k = wrap((1 << 24) * g);
     k = pow(1 - k, 8);
-    k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 1 * k));
+    k = (1 + k) * (1 + k) * tanh((1 + k) * sin(twopi * 0 * k));
     k = 4 * sin((
       0.5 * (2 - cos(twopi * 16 * g)) * biquad(highpass(&s->gradientbq[2], hz, 100), k) + 
       0.5 * (2 - cos(twopi * 32 * g)) * biquad(highpass(&s->harmonics[0], hz * 2, 100), k) +
diff @ 2022-05-18 20:31:14 +0100
diff --git a/client/go.c b/client/go.c
index bf0c76dc7..6d34eec5c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -165,7 +165,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     mixdown[0] = output[0];
     mixdown[1] = output[1];
     compress(mixdown, &s->mixdown, 5, 10, 25, 48, mixdown);
-    sample volume = 1;
+    sample volume = 0.5; // thanks everyone!
     mixdown[0] *= volume;
     mixdown[1] *= volume;
   }
diff @ 2022-05-18 20:31:16 +0100
diff --git a/client/go.c b/client/go.c
index 6d34eec5c..a9aa21bc1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -165,7 +165,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     mixdown[0] = output[0];
     mixdown[1] = output[1];
     compress(mixdown, &s->mixdown, 5, 10, 25, 48, mixdown);
-    sample volume = 0.5; // thanks everyone!
+    sample volume = 0.2; // thanks everyone!
     mixdown[0] *= volume;
     mixdown[1] *= volume;
   }
diff @ 2022-05-18 20:31:18 +0100
diff --git a/client/go.c b/client/go.c
index a9aa21bc1..112469f7a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -165,7 +165,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     mixdown[0] = output[0];
     mixdown[1] = output[1];
     compress(mixdown, &s->mixdown, 5, 10, 25, 48, mixdown);
-    sample volume = 0.2; // thanks everyone!
+    sample volume = 0.1; // thanks everyone!
     mixdown[0] *= volume;
     mixdown[1] *= volume;
   }
diff @ 2022-05-18 20:31:19 +0100
diff --git a/client/go.c b/client/go.c
index 112469f7a..53c05f9ba 100644
--- a/client/go.c
+++ b/client/go.c
@@ -165,7 +165,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     mixdown[0] = output[0];
     mixdown[1] = output[1];
     compress(mixdown, &s->mixdown, 5, 10, 25, 48, mixdown);
-    sample volume = 0.1; // thanks everyone!
+    sample volume = 0.0; // thanks everyone!
     mixdown[0] *= volume;
     mixdown[1] *= volume;
   }

the end