session-2022-03-31-203110

clive

clive is an audio live-coding skeleton for the C programming language

diff @ 2022-03-31 21:31:26 +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-03-31 21:31:33 +0100
diff --git a/client/go.c b/client/go.c
index d6aee1e3b..841dbcbf7 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, 200,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-03-31 21:31:38 +0100
diff --git a/client/go.c b/client/go.c
index 841dbcbf7..e2057f5dc 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-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
         lop(&s->so2.lag[c][1],  19, 1e-3), down);
-      feedback[c] = 2 * feedback[c] - down - up;
+      feedback[c] = sin(2 * feedback[c] - down - up);
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:31:54 +0100
diff --git a/client/go.c b/client/go.c
index e2057f5dc..74a8b7323 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-03-31 21:31:58 +0100
diff --git a/client/go.c b/client/go.c
index 74a8b7323..8506877ec 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.0001 * 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-03-31 21:32:04 +0100
diff --git a/client/go.c b/client/go.c
index 8506877ec..be04b8ebe 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.0001 * 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-03-31 21:32:12 +0100
diff --git a/client/go.c b/client/go.c
index be04b8ebe..269b960b9 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.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))
+      { delread4(&s->so2.echo[1].del, 4 * ms4 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, 4 * ms4 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:32:19 +0100
diff --git a/client/go.c b/client/go.c
index 269b960b9..74c8ed384 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 = 144.1875;
   sample mixdown[2] = { 0, 0 };
 ///))) MIXDOWN
 
diff @ 2022-03-31 21:32:46 +0100
diff --git a/client/go.c b/client/go.c
index 74c8ed384..dc12b00ef 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,6 +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 kick = sin(twopi * pow(1 - wrap(8 * p), 10) * 10);
     sample modulation = 0.001 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 4 * ms4 * (1 - modulation))
diff @ 2022-03-31 21:32:54 +0100
diff --git a/client/go.c b/client/go.c
index dc12b00ef..30bea8238 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)
         lop(&s->so2.lag[c][0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
         lop(&s->so2.lag[c][1],  19, 1e-3), down);
-      feedback[c] = sin(2 * feedback[c] - down - up);
+      feedback[c] = sin(2 * feedback[c] - down - up + kick);
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:33:14 +0100
diff --git a/client/go.h b/client/go.h
index cc51a110c..cb693a267 100644
--- a/client/go.h
+++ b/client/go.h
@@ -56,6 +56,7 @@ typedef struct {
 ///]]] MIXDOWN
 ///[[[ SEA ORGAN 2.2
   SO2 so2;
+  BIQUAD skick'
 ///]]] SEA ORGAN 2.2
 ///[[[ SMOLTECH
 ///]]] SMOLTECH
diff @ 2022-03-31 21:33:18 +0100
diff --git a/client/go.h b/client/go.h
index cb693a267..23cd5dce3 100644
--- a/client/go.h
+++ b/client/go.h
@@ -56,7 +56,7 @@ typedef struct {
 ///]]] MIXDOWN
 ///[[[ SEA ORGAN 2.2
   SO2 so2;
-  BIQUAD skick'
+  BIQUAD skick;
 ///]]] SEA ORGAN 2.2
 ///[[[ SMOLTECH
 ///]]] SMOLTECH
diff @ 2022-03-31 21:33:37 +0100
diff --git a/client/go.c b/client/go.c
index 30bea8238..59a0d0f4b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -51,6 +51,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 kick = sin(twopi * pow(1 - wrap(8 * p), 10) * 10);
+    kick = biquad(highpass(&s->skick, 80, 10), kick);
     sample modulation = 0.001 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 4 * ms4 * (1 - modulation))
diff @ 2022-03-31 21:33:50 +0100
diff --git a/client/go.c b/client/go.c
index 59a0d0f4b..8f4fef6dc 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)
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample kick = sin(twopi * pow(1 - wrap(8 * p), 10) * 10);
     kick = biquad(highpass(&s->skick, 80, 10), kick);
-    sample modulation = 0.001 * cos(twopi * p);
+    sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 4 * ms4 * (1 - modulation))
       , delread4(&s->so2.echo[0].del, 4 * ms4 * (1 + modulation))
diff @ 2022-03-31 21:34:03 +0100
diff --git a/client/go.c b/client/go.c
index 8f4fef6dc..3b52c4e69 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 kick = sin(twopi * pow(1 - wrap(8 * p), 10) * 10);
+    sample kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
     kick = biquad(highpass(&s->skick, 80, 10), kick);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
diff @ 2022-03-31 21:34:13 +0100
diff --git a/client/go.c b/client/go.c
index 3b52c4e69..7749a41c2 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)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 20, 200,
+     so2echo(&s->so2.echo[c], 80, 200,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-03-31 21:34:18 +0100
diff --git a/client/go.c b/client/go.c
index 7749a41c2..18a9213de 100644
--- a/client/go.c
+++ b/client/go.c
@@ -51,7 +51,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 kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
-    kick = biquad(highpass(&s->skick, 80, 10), kick);
+    kick = biquad(highpass(&s->skick, 40, 10), kick);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 4 * ms4 * (1 - modulation))
diff @ 2022-03-31 21:34:30 +0100
diff --git a/client/go.c b/client/go.c
index 18a9213de..b721984dc 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 down = pitchshift(&s->so2.shift[c][0], 1, ms4,
         lop(&s->so2.lag[c][0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
-        lop(&s->so2.lag[c][1],  19, 1e-3), down);
+        lop(&s->so2.lag[c][1],  24, 1e-3), down);
       feedback[c] = sin(2 * feedback[c] - down - up + kick);
     }
     // compress feedback
diff @ 2022-03-31 21:34:32 +0100
diff --git a/client/go.c b/client/go.c
index b721984dc..53c294676 100644
--- a/client/go.c
+++ b/client/go.c
@@ -60,9 +60,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],  24, 1e-3), down);
+        lop(&s->so2.lag[c][1],  24, 1e-2), down);
       feedback[c] = sin(2 * feedback[c] - down - up + kick);
     }
     // compress feedback
diff @ 2022-03-31 21:34:36 +0100
diff --git a/client/go.c b/client/go.c
index 53c294676..10b2a679b 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)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 80, 200,
+     so2echo(&s->so2.echo[c], 80, 400,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-03-31 21:34:43 +0100
diff --git a/client/go.c b/client/go.c
index 10b2a679b..61539c518 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)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 80, 400,
+     so2echo(&s->so2.echo[c], 80, 800,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-03-31 21:34:46 +0100
diff --git a/client/go.c b/client/go.c
index 61539c518..1ccdce216 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)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-     so2echo(&s->so2.echo[c], 80, 800,
+     so2echo(&s->so2.echo[c], 80, 1600,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-03-31 21:34:52 +0100
diff --git a/client/go.c b/client/go.c
index 1ccdce216..9c5b9dda3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -51,7 +51,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 kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
-    kick = biquad(highpass(&s->skick, 40, 10), kick);
+    kick = biquad(highpass(&s->skick, 30, 10), kick);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 4 * ms4 * (1 - modulation))
diff @ 2022-03-31 21:34:55 +0100
diff --git a/client/go.c b/client/go.c
index 9c5b9dda3..1ccdce216 100644
--- a/client/go.c
+++ b/client/go.c
@@ -51,7 +51,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 kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
-    kick = biquad(highpass(&s->skick, 30, 10), kick);
+    kick = biquad(highpass(&s->skick, 40, 10), kick);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 4 * ms4 * (1 - modulation))
diff @ 2022-03-31 21:35:05 +0100
diff --git a/client/go.c b/client/go.c
index 1ccdce216..15cbb524a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -54,8 +54,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     kick = biquad(highpass(&s->skick, 40, 10), kick);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 4 * ms4 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, 4 * ms4 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, 3 * ms4 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, 3 * ms4 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:35:28 +0100
diff --git a/client/go.c b/client/go.c
index 15cbb524a..8a4db0495 100644
--- a/client/go.c
+++ b/client/go.c
@@ -54,8 +54,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     kick = biquad(highpass(&s->skick, 40, 10), kick);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 3 * ms4 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, 3 * ms4 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, 8./3 * ms4 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, 8./3 * ms4 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:36:03 +0100
diff --git a/client/go.c b/client/go.c
index 8a4db0495..84055dec7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -52,6 +52,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
+    sample lead = wrap(16 * 32 * p) - wrap((16 * 32 + 1) * p);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 8./3 * ms4 * (1 - modulation))
diff @ 2022-03-31 21:36:31 +0100
diff --git a/client/go.c b/client/go.c
index 84055dec7..2eac584a2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -53,6 +53,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
     sample lead = wrap(16 * 32 * p) - wrap((16 * 32 + 1) * p);
+    lead *= wrap(16 * p - 0.5) < 0.25;
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 8./3 * ms4 * (1 - modulation))
@@ -64,7 +65,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 + kick);
+      feedback[c] = sin(2 * feedback[c] - down - up + kick + lead);
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:37:04 +0100
diff --git a/client/go.c b/client/go.c
index 2eac584a2..d80905296 100644
--- a/client/go.c
+++ b/client/go.c
@@ -52,7 +52,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
-    sample lead = wrap(16 * 32 * p) - wrap((16 * 32 + 1) * p);
+    sample lead[2]
+      = { wrap(16 * 32 * p) - wrap((16 * 32 + 1) * p)
+        , wrap(16 * 32 * p) - wrap((16 * 32 - 1) * p)
+      };
     lead *= wrap(16 * p - 0.5) < 0.25;
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
diff @ 2022-03-31 21:37:20 +0100
diff --git a/client/go.c b/client/go.c
index d80905296..3a36c91a3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -56,7 +56,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       = { wrap(16 * 32 * p) - wrap((16 * 32 + 1) * p)
         , wrap(16 * 32 * p) - wrap((16 * 32 - 1) * p)
       };
-    lead *= wrap(16 * p - 0.5) < 0.25;
+    lead[0] *= wrap(16 * p - 0.5) < 0.25;
+    lead[1] *= wrap(16 * p - 0.75) < 0.25;
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 8./3 * ms4 * (1 - modulation))
@@ -68,7 +69,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 + kick + lead);
+      feedback[c] = sin(2 * feedback[c] - down - up + kick + lead[c]);
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:38:03 +0100
diff --git a/client/go.c b/client/go.c
index 3a36c91a3..6563ea616 100644
--- a/client/go.c
+++ b/client/go.c
@@ -52,9 +52,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
+    sample l = pow(2, floor(4 * (wrap(4 * p))));
     sample lead[2]
-      = { wrap(16 * 32 * p) - wrap((16 * 32 + 1) * p)
-        , wrap(16 * 32 * p) - wrap((16 * 32 - 1) * p)
+      = { wrap(l*16 * 32 * p) - wrap((l*16 * 32 + 1) * p)
+        , wrap(l*16 * 32 * p) - wrap((l*16 * 32 - 1) * p)
       };
     lead[0] *= wrap(16 * p - 0.5) < 0.25;
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
diff @ 2022-03-31 21:38:22 +0100
diff --git a/client/go.c b/client/go.c
index 6563ea616..6d1bc943a 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)
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
-    sample l = pow(2, floor(4 * (wrap(4 * p))));
+    sample l = pow(2, floor(8 * (wrap(4 * p))));
     sample lead[2]
       = { wrap(l*16 * 32 * p) - wrap((l*16 * 32 + 1) * p)
         , wrap(l*16 * 32 * p) - wrap((l*16 * 32 - 1) * p)
diff @ 2022-03-31 21:38:25 +0100
diff --git a/client/go.c b/client/go.c
index 6d1bc943a..6563ea616 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)
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
-    sample l = pow(2, floor(8 * (wrap(4 * p))));
+    sample l = pow(2, floor(4 * (wrap(4 * p))));
     sample lead[2]
       = { wrap(l*16 * 32 * p) - wrap((l*16 * 32 + 1) * p)
         , wrap(l*16 * 32 * p) - wrap((l*16 * 32 - 1) * p)
diff @ 2022-03-31 21:38:31 +0100
diff --git a/client/go.c b/client/go.c
index 6563ea616..4682a6a88 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)
     p = phasor(&s->so2.phase, bpm/60 / 16);
     sample kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
-    sample l = pow(2, floor(4 * (wrap(4 * p))));
+    sample l = pow(2, floor(4 * (wrap(4 * -p))));
     sample lead[2]
       = { wrap(l*16 * 32 * p) - wrap((l*16 * 32 + 1) * p)
         , wrap(l*16 * 32 * p) - wrap((l*16 * 32 - 1) * p)
diff @ 2022-03-31 21:38:45 +0100
diff --git a/client/go.c b/client/go.c
index 4682a6a88..9a2da80e3 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 kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
+    sample kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
     sample l = pow(2, floor(4 * (wrap(4 * -p))));
     sample lead[2]
diff @ 2022-03-31 21:39:12 +0100
diff --git a/client/go.c b/client/go.c
index 9a2da80e3..ba804c0f9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,8 +61,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 8./3 * ms4 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, 8./3 * ms4 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, (p < 0.5 ? 8./3 : 3) * ms4 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, (p < 0.5 ?  8./3 : 3) * ms4 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:39:13 +0100
diff --git a/client/go.c b/client/go.c
index ba804c0f9..a4a83388a 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 modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, (p < 0.5 ? 8./3 : 3) * ms4 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, (p < 0.5 ?  8./3 : 3) * ms4 * (1 + modulation))
+      , delread4(&s->so2.echo[0].del, (p < 0.5 ? 8./3 : 3) * ms4 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:39:19 +0100
diff --git a/client/go.c b/client/go.c
index a4a83388a..8c40ca5e0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,8 +61,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, (p < 0.5 ? 8./3 : 3) * ms4 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, (p < 0.5 ? 8./3 : 3) * ms4 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, (p < 0.5 ? 8./3 : 2) * ms4 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, (p < 0.5 ? 8./3 : 2) * ms4 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:39:44 +0100
diff --git a/client/go.h b/client/go.h
index 23cd5dce3..097cd41fa 100644
--- a/client/go.h
+++ b/client/go.h
@@ -57,6 +57,7 @@ typedef struct {
 ///[[[ SEA ORGAN 2.2
   SO2 so2;
   BIQUAD skick;
+  BIQUAD acid[2];
 ///]]] SEA ORGAN 2.2
 ///[[[ SMOLTECH
 ///]]] SMOLTECH
diff @ 2022-03-31 21:40:17 +0100
diff --git a/client/go.c b/client/go.c
index 8c40ca5e0..f9325f258 100644
--- a/client/go.c
+++ b/client/go.c
@@ -59,6 +59,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       };
     lead[0] *= wrap(16 * p - 0.5) < 0.25;
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
+    lead[0] = biquad(lowpass(&s->acid[0], 200, 4), lead[0])'
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, (p < 0.5 ? 8./3 : 2) * ms4 * (1 - modulation))
diff @ 2022-03-31 21:40:27 +0100
diff --git a/client/go.c b/client/go.c
index f9325f258..77d225155 100644
--- a/client/go.c
+++ b/client/go.c
@@ -59,7 +59,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       };
     lead[0] *= wrap(16 * p - 0.5) < 0.25;
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
-    lead[0] = biquad(lowpass(&s->acid[0], 200, 4), lead[0])'
+    lead[0] = biquad(lowpass(&s->acid[0], 200, 4), lead[0]);
+    lead[1] = biquad(lowpass(&s->acid[1], 200, 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, (p < 0.5 ? 8./3 : 2) * ms4 * (1 - modulation))
diff @ 2022-03-31 21:41:04 +0100
diff --git a/client/go.c b/client/go.c
index 77d225155..522a69c4d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -59,8 +59,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       };
     lead[0] *= wrap(16 * p - 0.5) < 0.25;
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
-    lead[0] = biquad(lowpass(&s->acid[0], 200, 4), lead[0]);
-    lead[1] = biquad(lowpass(&s->acid[1], 200, 4), lead[1]);
+    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(4, 1 - wrap(64 * p), 4), lead[0]);
+    lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(4, 1 - wrap(64 * p), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, (p < 0.5 ? 8./3 : 2) * ms4 * (1 - modulation))
diff @ 2022-03-31 21:41:11 +0100
diff --git a/client/go.c b/client/go.c
index 522a69c4d..539f3ba10 100644
--- a/client/go.c
+++ b/client/go.c
@@ -59,8 +59,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       };
     lead[0] *= wrap(16 * p - 0.5) < 0.25;
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
-    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(4, 1 - wrap(64 * p), 4), lead[0]);
-    lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(4, 1 - wrap(64 * p), 4), lead[1]);
+    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(4, 1 - wrap(64 * p)), 4), lead[0]);
+    lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(4, 1 - wrap(64 * p)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, (p < 0.5 ? 8./3 : 2) * ms4 * (1 - modulation))
diff @ 2022-03-31 21:41:29 +0100
diff --git a/client/go.c b/client/go.c
index 539f3ba10..5eb78d645 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)
       };
     lead[0] *= wrap(16 * p - 0.5) < 0.25;
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
-    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(4, 1 - wrap(64 * p)), 4), lead[0]);
+    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(p > 0.75 ? 8 : 4), 1 - wrap(64 * p)), 4), lead[0]);
     lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(4, 1 - wrap(64 * p)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
diff @ 2022-03-31 21:41:31 +0100
diff --git a/client/go.c b/client/go.c
index 5eb78d645..5185c6670 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)
       };
     lead[0] *= wrap(16 * p - 0.5) < 0.25;
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
-    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(p > 0.75 ? 8 : 4), 1 - wrap(64 * p)), 4), lead[0]);
+    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(64 * p)), 4), lead[0]);
     lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(4, 1 - wrap(64 * p)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
diff @ 2022-03-31 21:41:33 +0100
diff --git a/client/go.c b/client/go.c
index 5185c6670..9f0ad1ed7 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)
     lead[0] *= wrap(16 * p - 0.5) < 0.25;
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
     lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(64 * p)), 4), lead[0]);
-    lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(4, 1 - wrap(64 * p)), 4), lead[1]);
+    lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(64 * p)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, (p < 0.5 ? 8./3 : 2) * ms4 * (1 - modulation))
diff @ 2022-03-31 21:41:43 +0100
diff --git a/client/go.c b/client/go.c
index 9f0ad1ed7..1d9650f3a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -59,8 +59,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       };
     lead[0] *= wrap(16 * p - 0.5) < 0.25;
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
-    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(64 * p)), 4), lead[0]);
-    lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(64 * p)), 4), lead[1]);
+    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(64 * p - 0.75)), 4), lead[0]);
+    lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(64 * p - 0.25)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, (p < 0.5 ? 8./3 : 2) * ms4 * (1 - modulation))
diff @ 2022-03-31 21:41:55 +0100
diff --git a/client/go.c b/client/go.c
index 1d9650f3a..8b19ea6c0 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 kick = sin(twopi * pow(1 - wrap(16 * p), 10) * 10);
+    sample kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
     sample l = pow(2, floor(4 * (wrap(4 * -p))));
     sample lead[2]
diff @ 2022-03-31 21:42:16 +0100
diff --git a/client/go.c b/client/go.c
index 8b19ea6c0..da3a7e0a3 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 kick = sin(twopi * pow(1 - wrap(8 * p), 20) * 10);
+    sample kick = sin(twopi * pow(1 - wrap(8./3 *wrap(8 * p)), 10) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
     sample l = pow(2, floor(4 * (wrap(4 * -p))));
     sample lead[2]
diff @ 2022-03-31 21:42:30 +0100
diff --git a/client/go.c b/client/go.c
index da3a7e0a3..ca35d2533 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,8 +63,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(64 * p - 0.25)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, (p < 0.5 ? 8./3 : 2) * ms4 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, (p < 0.5 ? 8./3 : 2) * ms4 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, (p < 0.5 ? 3 : 2) * ms4 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, (p < 0.5 ? 3 : 2) * ms4 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:42:49 +0100
diff --git a/client/go.c b/client/go.c
index ca35d2533..241ba4023 100644
--- a/client/go.c
+++ b/client/go.c
@@ -85,8 +85,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-03-31 21:42:54 +0100
diff --git a/client/go.c b/client/go.c
index 241ba4023..2b23892c4 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)
         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 + kick + lead[c]);
+      feedback[c] = sin(2 * feedback[c] - down - up + lead[c]);
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:43:01 +0100
diff --git a/client/go.c b/client/go.c
index 2b23892c4..ff692ad68 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,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], 80, 1600,
+     so2echo(&s->so2.echo[c], 20, 1600,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-03-31 21:43:04 +0100
diff --git a/client/go.c b/client/go.c
index ff692ad68..5ab9962d4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,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, 1600,
+     so2echo(&s->so2.echo[c], 20, 800,
         tanh(so2[c] + RESET*impulse[c]));
     }
     // output
diff @ 2022-03-31 21:43:16 +0100
diff --git a/client/go.c b/client/go.c
index 5ab9962d4..7168da9ac 100644
--- a/client/go.c
+++ b/client/go.c
@@ -85,8 +85,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] + kick;
-    mixdown[1] += so2[1] + kick;
+    mixdown[0] += so2[0] + kick + lead[0];
+    mixdown[1] += so2[1] + kick + lead[1];
   }
 ///}}} SEA ORGAN 2.2
 ///{{{ SMOLTECH
diff @ 2022-03-31 21:43:32 +0100
diff --git a/client/go.c b/client/go.c
index 7168da9ac..79fef7de9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -59,8 +59,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       };
     lead[0] *= wrap(16 * p - 0.5) < 0.25;
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
-    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(64 * p - 0.75)), 4), lead[0]);
-    lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(64 * p - 0.25)), 4), lead[1]);
+    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.75)), 4), lead[0]);
+    lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, (p < 0.5 ? 3 : 2) * ms4 * (1 - modulation))
diff @ 2022-03-31 21:43:39 +0100
diff --git a/client/go.c b/client/go.c
index 79fef7de9..1d51082b0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -59,8 +59,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       };
     lead[0] *= wrap(16 * p - 0.5) < 0.25;
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
-    lead[0] = biquad(lowpass(&s->acid[0], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.75)), 4), lead[0]);
-    lead[1] = biquad(lowpass(&s->acid[1], 200 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
+    lead[0] = biquad(lowpass(&s->acid[0], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.75)), 4), lead[0]);
+    lead[1] = biquad(lowpass(&s->acid[1], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, (p < 0.5 ? 3 : 2) * ms4 * (1 - modulation))
diff @ 2022-03-31 21:43:49 +0100
diff --git a/client/go.c b/client/go.c
index 1d51082b0..67abf95bf 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 kick = sin(twopi * pow(1 - wrap(8./3 *wrap(8 * p)), 10) * 10);
+    sample kick = sin(twopi * pow(1 - wrap(2 *wrap(8 * p)), 10) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
     sample l = pow(2, floor(4 * (wrap(4 * -p))));
     sample lead[2]
diff @ 2022-03-31 21:44:08 +0100
diff --git a/client/go.c b/client/go.c
index 67abf95bf..a13c63ab6 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)
         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 + lead[c]);
+      feedback[c] = sin(2 * feedback[c] - down - up);
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:44:19 +0100
diff --git a/client/go.c b/client/go.c
index a13c63ab6..bfdf7e822 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)
         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(1.4 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:44:32 +0100
diff --git a/client/go.c b/client/go.c
index bfdf7e822..864e7ad1e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,8 +63,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     lead[1] = biquad(lowpass(&s->acid[1], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, (p < 0.5 ? 3 : 2) * ms4 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, (p < 0.5 ? 3 : 2) * ms4 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, ms4 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, ms4 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:44:35 +0100
diff --git a/client/go.c b/client/go.c
index 864e7ad1e..2a5e8fc30 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,8 +63,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     lead[1] = biquad(lowpass(&s->acid[1], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, ms4 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, ms4/3 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, ms4/3 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:44:38 +0100
diff --git a/client/go.c b/client/go.c
index 2a5e8fc30..6d6e134fa 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,8 +63,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     lead[1] = biquad(lowpass(&s->acid[1], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4/3 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, ms4/3 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, ms4/3/3 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, ms4/3/3 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:44:41 +0100
diff --git a/client/go.c b/client/go.c
index 6d6e134fa..d01b6deba 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,8 +63,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     lead[1] = biquad(lowpass(&s->acid[1], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4/3/3 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, ms4/3/3 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, ms4/3/3/3 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, ms4/3/3/3 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:44:43 +0100
diff --git a/client/go.c b/client/go.c
index d01b6deba..c66c23a48 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,8 +63,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     lead[1] = biquad(lowpass(&s->acid[1], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4/3/3/3 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, ms4/3/3/3 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, ms4/3/3/3/3 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, ms4/3/3/3/3 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:44:50 +0100
diff --git a/client/go.c b/client/go.c
index c66c23a48..4fe75db19 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)
         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(1.4 * (2 * feedback[c] - down - up));
+      feedback[c] = sin(1.5 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:44:57 +0100
diff --git a/client/go.c b/client/go.c
index 4fe75db19..3fb6db15a 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)
         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(1.5 * (2 * feedback[c] - down - up));
+      feedback[c] = sin(1.6 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:45:00 +0100
diff --git a/client/go.c b/client/go.c
index 3fb6db15a..da496bdf7 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)
         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(1.6 * (2 * feedback[c] - down - up));
+      feedback[c] = sin(1.8 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:45:01 +0100
diff --git a/client/go.c b/client/go.c
index da496bdf7..de8c45d83 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)
         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(1.8 * (2 * feedback[c] - down - up));
+      feedback[c] = sin(1.0 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:45:02 +0100
diff --git a/client/go.c b/client/go.c
index de8c45d83..f285b7ac5 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)
         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(1.0 * (2 * feedback[c] - down - up));
+      feedback[c] = sin(1.9 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:45:06 +0100
diff --git a/client/go.c b/client/go.c
index f285b7ac5..7c579adeb 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)
         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(1.9 * (2 * feedback[c] - down - up));
+      feedback[c] = sin(2.4 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:45:19 +0100
diff --git a/client/go.c b/client/go.c
index 7c579adeb..4723ae584 100644
--- a/client/go.c
+++ b/client/go.c
@@ -63,8 +63,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     lead[1] = biquad(lowpass(&s->acid[1], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
     sample modulation = 0.01 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, ms4/3/3/3/3 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, ms4/3/3/3/3 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, 10 * (1 - modulation))
+      , delread4(&s->so2.echo[0].del, 10 * (1 + modulation))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:45:35 +0100
diff --git a/client/go.c b/client/go.c
index 4723ae584..709b67a37 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,10 +61,11 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
     lead[0] = biquad(lowpass(&s->acid[0], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.75)), 4), lead[0]);
     lead[1] = biquad(lowpass(&s->acid[1], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
-    sample modulation = 0.01 * cos(twopi * p);
+    sample modulation1 = 0.01 * cos(twopi * p);
+    sample modulation2 = 0.01 * sin(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 10 * (1 - modulation))
-      , delread4(&s->so2.echo[0].del, 10 * (1 + modulation))
+      { delread4(&s->so2.echo[1].del, 10 * (1 - modulation1))
+      , delread4(&s->so2.echo[0].del, 10 * (1 + modulation2))
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2022-03-31 21:45:40 +0100
diff --git a/client/go.c b/client/go.c
index 709b67a37..62face87e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -61,8 +61,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     lead[1] *= wrap(16 * p - 0.75) < 0.25;
     lead[0] = biquad(lowpass(&s->acid[0], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.75)), 4), lead[0]);
     lead[1] = biquad(lowpass(&s->acid[1], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
-    sample modulation1 = 0.01 * cos(twopi * p);
-    sample modulation2 = 0.01 * sin(twopi * p);
+    sample modulation1 = 0.1 * cos(twopi * p);
+    sample modulation2 = 0.1 * sin(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 10 * (1 - modulation1))
       , delread4(&s->so2.echo[0].del, 10 * (1 + modulation2))
diff @ 2022-03-31 21:45:52 +0100
diff --git a/client/go.c b/client/go.c
index 62face87e..1eb583e70 100644
--- a/client/go.c
+++ b/client/go.c
@@ -70,9 +70,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-2), feedback[c]);
+        lop(&s->so2.lag[c][0], -12, 1e-1), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
-        lop(&s->so2.lag[c][1],  24, 1e-2), down);
+        lop(&s->so2.lag[c][1],  24, 1e-1), down);
       feedback[c] = sin(2.4 * (2 * feedback[c] - down - up));
     }
     // compress feedback
diff @ 2022-03-31 21:45:56 +0100
diff --git a/client/go.c b/client/go.c
index 1eb583e70..fec447e9c 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)
       sample down = pitchshift(&s->so2.shift[c][0], 1, ms4,
         lop(&s->so2.lag[c][0], -12, 1e-1), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
-        lop(&s->so2.lag[c][1],  24, 1e-1), down);
+        lop(&s->so2.lag[c][1],  12, 1e-1), down);
       feedback[c] = sin(2.4 * (2 * feedback[c] - down - up));
     }
     // compress feedback
diff @ 2022-03-31 21:45:59 +0100
diff --git a/client/go.c b/client/go.c
index fec447e9c..4672b7700 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)
     // 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-1), feedback[c]);
+        lop(&s->so2.lag[c][0], -3, 1e-1), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
         lop(&s->so2.lag[c][1],  12, 1e-1), down);
       feedback[c] = sin(2.4 * (2 * feedback[c] - down - up));
diff @ 2022-03-31 21:46:19 +0100
diff --git a/client/go.c b/client/go.c
index 4672b7700..cd422b167 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)
     // 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], -3, 1e-1), feedback[c]);
+        lop(&s->so2.lag[c][0], p < 0.5 ? -3 : -4, 1e-1), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
         lop(&s->so2.lag[c][1],  12, 1e-1), down);
       feedback[c] = sin(2.4 * (2 * feedback[c] - down - up));
diff @ 2022-03-31 21:46:33 +0100
diff --git a/client/go.c b/client/go.c
index cd422b167..c8751bd17 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)
       sample down = pitchshift(&s->so2.shift[c][0], 1, ms4,
         lop(&s->so2.lag[c][0], p < 0.5 ? -3 : -4, 1e-1), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
-        lop(&s->so2.lag[c][1],  12, 1e-1), down);
+        lop(&s->so2.lag[c][1], p < 0.5 ? 12 : 13, 1e-1), down);
       feedback[c] = sin(2.4 * (2 * feedback[c] - down - up));
     }
     // compress feedback
diff @ 2022-03-31 21:46:39 +0100
diff --git a/client/go.c b/client/go.c
index c8751bd17..f29c2b422 100644
--- a/client/go.c
+++ b/client/go.c
@@ -70,9 +70,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], p < 0.5 ? -3 : -4, 1e-1), feedback[c]);
+        lop(&s->so2.lag[c][0], p < 0.5 ? -3 : -4, 10), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
-        lop(&s->so2.lag[c][1], p < 0.5 ? 12 : 13, 1e-1), down);
+        lop(&s->so2.lag[c][1], p < 0.5 ? 12 : 13, 10), down);
       feedback[c] = sin(2.4 * (2 * feedback[c] - down - up));
     }
     // compress feedback
diff @ 2022-03-31 21:46:49 +0100
diff @ 2022-03-31 21:47:10 +0100
diff --git a/client/go.c b/client/go.c
index 754b970e8..8597d86ec 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, 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-03-31 21:47:20 +0100
diff --git a/client/go.c b/client/go.c
index 8597d86ec..db93eec2d 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, 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.3));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.3));
     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-03-31 21:47:39 +0100
diff --git a/client/go.c b/client/go.c
index db93eec2d..7ea460755 100644
--- a/client/go.c
+++ b/client/go.c
@@ -103,7 +103,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.75 ? 1./2 : 1./4);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2022-03-31 21:47:54 +0100
diff --git a/client/go.c b/client/go.c
index 7ea460755..9377d54a5 100644
--- a/client/go.c
+++ b/client/go.c
@@ -102,8 +102,8 @@ 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 rdelms = 60000 / bpm * (p < 0.75 ? 1./2 : 1./4);
+    sample ldelms = 60000 / bpm * (wrap(256 *p) < 0.75 ? 1 : 1./4);
+    sample rdelms = 60000 / bpm * (wrap(256 * p) < 0.75 ? 1./2 : 1./4);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2022-03-31 21:48:00 +0100
diff --git a/client/go.c b/client/go.c
index 9377d54a5..395418dad 100644
--- a/client/go.c
+++ b/client/go.c
@@ -112,7 +112,7 @@ 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(0, pow(wrap(8 * p), (sample) 0.25), 0.3));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.3));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 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), 20000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
diff @ 2022-03-31 21:48:01 +0100
diff --git a/client/go.c b/client/go.c
index 395418dad..c9020de7f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -113,7 +113,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.3));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.3));
     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), 20000);
+    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-03-31 21:48:07 +0100
diff --git a/client/go.c b/client/go.c
index c9020de7f..43b941a69 100644
--- a/client/go.c
+++ b/client/go.c
@@ -112,8 +112,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(0, pow(wrap(8 * p), (sample) 0.25), 0.3));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.3));
-    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], 29), 2000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2022-03-31 21:48:11 +0100
diff --git a/client/go.c b/client/go.c
index 43b941a69..2e23f5d64 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, pow(wrap(8 * p), (sample) 0.25), 0.3));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.3));
+    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], 29), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2022-03-31 21:48:20 +0100
diff --git a/client/go.c b/client/go.c
index 2e23f5d64..5f4327f91 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, 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.8));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.6));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 29), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2022-03-31 21:48:21 +0100
diff --git a/client/go.c b/client/go.c
index 5f4327f91..20cba6515 100644
--- a/client/go.c
+++ b/client/go.c
@@ -111,7 +111,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     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.8));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.6));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.8));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 29), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2022-03-31 21:48:33 +0100
diff --git a/client/go.c b/client/go.c
index 20cba6515..9ac7dee2b 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, pow(wrap(8 * p), (sample) 0.25), 0.8));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), (sample) 0.25), 0.8));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(64 * 8 * p), (sample) 0.25), 0.8));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(64 * 8 * p), (sample) 0.25), 0.8));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 29), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2022-03-31 21:48:46 +0100
diff --git a/client/go.c b/client/go.c
index 9ac7dee2b..4f42b315b 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, pow(wrap(64 * 8 * p), (sample) 0.25), 0.8));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(64 * 8 * p), (sample) 0.25), 0.8));
+    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
+    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 29), 2000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 2000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2022-03-31 21:48:54 +0100
diff --git a/client/go.c b/client/go.c
index 4f42b315b..1e0f204bb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -112,8 +112,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(0, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
     es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 29), 2000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 2000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 29), 1000);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 1000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2022-03-31 21:49:02 +0100
diff --git a/client/go.c b/client/go.c
index 1e0f204bb..1a150785f 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, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 29), 1000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 1000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2022-03-31 21:49:07 +0100
diff --git a/client/go.c b/client/go.c
index 1a150785f..9a0955404 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(64 * 8 * p), (sample) 0.25), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 0.5));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 0.5));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 29), 1000);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 1000);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2022-03-31 21:49:10 +0100
diff --git a/client/go.c b/client/go.c
index 9a0955404..9aae8bde7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -104,8 +104,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (wrap(256 *p) < 0.75 ? 1 : 1./4);
     sample rdelms = 60000 / bpm * (wrap(256 * p) < 0.75 ? 1./2 : 1./4);
-    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-03-31 21:49:33 +0100
diff --git a/client/go.c b/client/go.c
index 9aae8bde7..45578af97 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 kick = sin(twopi * pow(1 - wrap(2 *wrap(8 * p)), 10) * 10);
+    sample kick = sin(twopi * pow(1 - wrap(0 *wrap(8 * p)), 10) * 10);
     kick = biquad(highpass(&s->skick, 40, 10), kick);
     sample l = pow(2, floor(4 * (wrap(4 * -p))));
     sample lead[2]
diff @ 2022-03-31 21:49:44 +0100
diff --git a/client/go.c b/client/go.c
index 45578af97..6330de8bf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -103,7 +103,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 * (wrap(256 *p) < 0.75 ? 1 : 1./4);
-    sample rdelms = 60000 / bpm * (wrap(256 * p) < 0.75 ? 1./2 : 1./4);
+    sample rdelms = 60000 / bpm * (wrap(256 * p) < 0.75 ? 1 : 1./4);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2022-03-31 21:49:48 +0100
diff --git a/client/go.c b/client/go.c
index 6330de8bf..4c78bca23 100644
--- a/client/go.c
+++ b/client/go.c
@@ -102,8 +102,8 @@ 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 * (wrap(256 *p) < 0.75 ? 1 : 1./4);
-    sample rdelms = 60000 / bpm * (wrap(256 * p) < 0.75 ? 1 : 1./4);
+    sample ldelms = 60000 / bpm * (wrap(512 *p) < 0.75 ? 1 : 1./4);
+    sample rdelms = 60000 / bpm * (wrap(512 * p) < 0.75 ? 1 : 1./4);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2022-03-31 21:50:08 +0100
diff --git a/client/go.c b/client/go.c
index 4c78bca23..f59308f0c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -102,8 +102,8 @@ 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 * (wrap(512 *p) < 0.75 ? 1 : 1./4);
-    sample rdelms = 60000 / bpm * (wrap(512 * p) < 0.75 ? 1 : 1./4);
+    sample ldelms = 60000 / bpm * (wrap(512 *p) < 0.75 ? 1 : 1./64);
+    sample rdelms = 60000 / bpm * (wrap(512 * p) < 0.75 ? 1 : 1./64);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2022-03-31 21:50:17 +0100
diff --git a/client/go.c b/client/go.c
index f59308f0c..cb4b93ae4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -112,8 +112,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(64 * 8 * p), (sample) 0.25), 0.5));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 0.5));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 29), 1000);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 1000);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 29), 200);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 200);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2022-03-31 21:50:22 +0100
diff --git a/client/go.c b/client/go.c
index cb4b93ae4..ee0168920 100644
--- a/client/go.c
+++ b/client/go.c
@@ -112,8 +112,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(64 * 8 * p), (sample) 0.25), 0.5));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 0.5));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 29), 200);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 29), 200);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 9), 200);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 9), 200);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2022-03-31 21:50:33 +0100
diff --git a/client/go.c b/client/go.c
index ee0168920..5ebec3c07 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)
   {
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
-    sample t = twopi * p;
+    sample t = twopi * p * 1024;
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (wrap(512 *p) < 0.75 ? 1 : 1./64);
diff @ 2022-03-31 21:50:41 +0100
diff --git a/client/go.c b/client/go.c
index 5ebec3c07..7687329b3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -99,10 +99,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   {
     s->edelay1.length = 4 * SR;
     s->edelay2.length = 4 * SR;
-    sample t = twopi * p * 1024;
+    sample t = twopi * p * 512;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (wrap(512 *p) < 0.75 ? 1 : 1./64);
+    sample ldelms = 60000 / bpm * (wrap(512 * p) < 0.75 ? 1 : 1./64);
     sample rdelms = 60000 / bpm * (wrap(512 * p) < 0.75 ? 1 : 1./64);
     ldelms = lop(&s->elop[0], ldelms, 15);
     rdelms = lop(&s->elop[1], rdelms, 15);
diff @ 2022-03-31 21:50:53 +0100
diff --git a/client/go.c b/client/go.c
index 7687329b3..c612da3ab 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)
         lop(&s->so2.lag[c][0], p < 0.5 ? -3 : -4, 10), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
         lop(&s->so2.lag[c][1], p < 0.5 ? 12 : 13, 10), down);
-      feedback[c] = sin(2.4 * (2 * feedback[c] - down - up));
+      feedback[c] = sin(0 * (2 * feedback[c] - down - up));
     }
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2022-03-31 21:51:07 +0100
diff --git a/client/go.c b/client/go.c
index c612da3ab..473215040 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,44 +50,6 @@ 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 kick = sin(twopi * pow(1 - wrap(0 *wrap(8 * p)), 10) * 10);
-    kick = biquad(highpass(&s->skick, 40, 10), kick);
-    sample l = pow(2, floor(4 * (wrap(4 * -p))));
-    sample lead[2]
-      = { wrap(l*16 * 32 * p) - wrap((l*16 * 32 + 1) * p)
-        , wrap(l*16 * 32 * p) - wrap((l*16 * 32 - 1) * p)
-      };
-    lead[0] *= wrap(16 * p - 0.5) < 0.25;
-    lead[1] *= wrap(16 * p - 0.75) < 0.25;
-    lead[0] = biquad(lowpass(&s->acid[0], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.75)), 4), lead[0]);
-    lead[1] = biquad(lowpass(&s->acid[1], 100 * pow(p > 0.75 ? 8 : 4, 1 - wrap(32 *3 * p - 0.25)), 4), lead[1]);
-    sample modulation1 = 0.1 * cos(twopi * p);
-    sample modulation2 = 0.1 * sin(twopi * p);
-    sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 10 * (1 - modulation1))
-      , delread4(&s->so2.echo[0].del, 10 * (1 + modulation2))
-      };
-    // 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], p < 0.5 ? -3 : -4, 10), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[c][1], 1, ms4,
-        lop(&s->so2.lag[c][1], p < 0.5 ? 12 : 13, 10), down);
-      feedback[c] = sin(0 * (2 * feedback[c] - down - up));
-    }
-    // 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, 800,
-        tanh(so2[c] + RESET*impulse[c]));
-    }
-    // output
-    mixdown[0] += so2[0] + kick + lead[0];
-    mixdown[1] += so2[1] + kick + lead[1];
   }
 ///}}} SEA ORGAN 2.2
 ///{{{ SMOLTECH
diff @ 2022-03-31 21:51:17 +0100
diff --git a/client/go.c b/client/go.c
index 473215040..dc353c1a8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -72,8 +72,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(64 * 8 * p), (sample) 0.25), 0.5));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 0.5));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), !));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 9), 200);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 9), 200);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
diff @ 2022-03-31 21:51:18 +0100
diff --git a/client/go.c b/client/go.c
index dc353c1a8..68c883fd6 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)
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), !));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
     es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 9), 200);
     es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 9), 200);
diff @ 2022-03-31 21:51:23 +0100
diff --git a/client/go.c b/client/go.c
index 68c883fd6..87eec8173 100644
--- a/client/go.c
+++ b/client/go.c
@@ -74,8 +74,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(64 * 8 * p), (sample) 0.25), 1));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 9), 200);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 9), 200);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 9), 300);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 9), 300);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2022-03-31 21:51:28 +0100
diff --git a/client/go.c b/client/go.c
index 87eec8173..7e5951a6e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -74,8 +74,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(64 * 8 * p), (sample) 0.25), 1));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 9), 300);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 9), 300);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 90), 300);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 90), 300);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2022-03-31 21:51:35 +0100
diff --git a/client/go.c b/client/go.c
index 7e5951a6e..2e9588f73 100644
--- a/client/go.c
+++ b/client/go.c
@@ -74,8 +74,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(64 * 8 * p), (sample) 0.25), 1));
     es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 90), 300);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 90), 300);
+    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 90), 10);
+    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 90), 10);
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2022-03-31 21:51:47 +0100
diff --cc client/go.c
index 2e9588f73,31f8fc208..ffb7fa2fe
--- a/client/go.c
+++ b/client/go.c
@@@ -34,10 -36,12 +36,16 @@@ int go(S *s, int inchannels, const floa
  ///««« PEGASUS v3.7
  ///»»» PEGASUS v3.7
    }
- 
+ //return 0;
  ///((( MIXDOWN
++<<<<<<< HEAD
 +  sample bpm = 144.1875;
++=======
+   sample bpm = 120;
++>>>>>>> SET-smoltech-TRACK-non-smooth
    sample mixdown[2] = { 0, 0 };
+   sample beats = 720;
+   sample time = phasor(&s->clk, bpm / 60 / beats);
  ///))) MIXDOWN
  
  ///{{{ SEA ORGAN 2.2
@@@ -57,34 -51,45 +65,71 @@@
  ///{{{ GRADIENT
  ///}}} GRADIENT
  ///{{{ EL DAY DE LAY
 +
 +  {
 +    s->edelay1.length = 4 * SR;
 +    s->edelay2.length = 4 * SR;
 +    sample t = twopi * p * 512;
 +    sample co = cos(t);
 +    sample si = sin(t);
 +    sample ldelms = 60000 / bpm * (wrap(512 * p) < 0.75 ? 1 : 1./64);
 +    sample rdelms = 60000 / bpm * (wrap(512 * p) < 0.75 ? 1 : 1./64);
 +    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 };
 +    compress(es, &s->ecompress1, 5, 10, 25, 48, es);
 +    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
 +    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
 +    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 90), 10);
 +    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 90), 10);
 +    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];
 +  }
 +
  ///}}} EL DAY DE LAY
  ///{{{ NON-SMOOTH
+ 
+   {
+     sample rhythm1 = s->rhythm1;
+     s->rhythm1 = s->rhythm;
+     sample tick = s->rhythm <= 0 && rhythm1 >= 0;
+     sample end = 1 - samphold(&s->end, 1, time);
+     s->rhythm = biquad(lowpass(&s->st[0], bpm / 60 / 12, 20), tick);
+     sample t = twopi * time;
+     sample co2 = cos(t);
+     sample co = cos(3 * t);
+     sample si = sin(3 * t);
+     sample d1 = 60000 / bpm * 2 / 3 - 100 * time * wrap(16 * beats * time + 0.0);
+     sample d2 = 60000 / bpm * 2 / 3 - 100 * time * wrap(16 * beats * time + 0.5);
+     sample d3 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.0);
+     sample d4 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.5);
+     sample dt = 0.5 * (1 + cos(twopi * 16 * beats * time));
+     mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
+     mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
+     sample kick = end * (1 - wrap(beats * time));
+     kick *= kick;
+     kick *= kick;
+     kick *= kick;
+     kick = 2 * pow(2, 1 + pow((1 + co2)/2, 4)) * tanh((1 + kick) * (1 + kick) * sin(12 * twopi * kick));
+     kick = biquad(highpass(&s->st[5], 66, 5 * (2 + co2)), kick);
+     sample sn = end * (1 - wrap(beats * time / 3));
+     sn  = pow(sn, pow(4, 1 - time));
+     sample snare[2] = { mixdown[1], mixdown[0] };
+     snare[0] = 3 * sin(biquad(lowpass(&s->st[6], 3 * 66 * pow(256, sn), 15), snare[0]));
+     snare[1] = 3 * sin(biquad(lowpass(&s->st[7], 3 * 66 * pow(256, sn), 15), snare[1]));
+     mixdown[0] = kick + snare[0]
+      + 8 * sin(biquad(lowpass(&s->st[1], 2 * 66 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
+      + 8 * sin(0.5 * biquad(bandpass(&s->st[8 ], 8 * 66 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
+     mixdown[1] = kick + snare[1]
+      + 8 * sin(biquad(lowpass(&s->st[2], 2 * 66 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
+      + 8 * sin(0.5 * biquad(bandpass(&s->st[10], 8 * 66 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
+   }
+ 
  ///}}} NON-SMOOTH
  ///{{{ CHARRED BARD
  ///}}} CHARRED BARD
diff --cc client/go.h
index 2959ae6c3,11ac69933..e475f99fd
--- a/client/go.h
+++ b/client/go.h
@@@ -55,26 -37,24 +55,36 @@@ typedef struct 
    COMPRESS mixdown;
  ///]]] MIXDOWN
  ///[[[ SEA ORGAN 2.2
 +  SO2 so2;
 +  BIQUAD skick;
 +  BIQUAD acid[2];
  ///]]] SEA ORGAN 2.2
  ///[[[ SMOLTECH
+ ///[[[ SMOLTECH
  ///]]] SMOLTECH
  ///[[[ GRADIENT
  ///]]] 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
+   BIQUAD st[64];
+   sample rhythm;
+   HIP hrhy;
+   DELAY std0; float std0buf[SR*4];
+   DELAY std1; float std1buf[SR*4];
+   LOP lrhy[2];
+   PHASOR clk;
+   SAMPHOLD end;
+   sample rhythm1;
  ///]]] NON-SMOOTH
  ///[[[ CHARRED BARD
  ///]]] CHARRED BARD
diff @ 2022-03-31 21:51:57 +0100
diff --git a/client/go.c b/client/go.c
index ffb7fa2fe..3daa1b6b2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -38,11 +38,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   }
 //return 0;
 ///((( MIXDOWN
-<<<<<<< HEAD
   sample bpm = 144.1875;
-=======
-  sample bpm = 120;
->>>>>>> SET-smoltech-TRACK-non-smooth
   sample mixdown[2] = { 0, 0 };
   sample beats = 720;
   sample time = phasor(&s->clk, bpm / 60 / beats);
diff @ 2022-03-31 21:52:27 +0100
diff --git a/client/go.c b/client/go.c
index 3daa1b6b2..6061dc903 100644
--- a/client/go.c
+++ b/client/go.c
@@ -107,7 +107,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample dt = 0.5 * (1 + cos(twopi * 16 * beats * time));
     mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
     mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
-    sample kick = end * (1 - wrap(beats * time));
+    sample kick = end * (1 - wrap(1.3333 * wrap(beats * time)));
     kick *= kick;
     kick *= kick;
     kick *= kick;
diff @ 2022-03-31 21:52:36 +0100
diff --git a/client/go.c b/client/go.c
index 6061dc903..012ac2d41 100644
--- a/client/go.c
+++ b/client/go.c
@@ -107,7 +107,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample dt = 0.5 * (1 + cos(twopi * 16 * beats * time));
     mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
     mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
-    sample kick = end * (1 - wrap(1.3333 * wrap(beats * time)));
+    sample kick = end * (1 - wrap(1.4 * wrap(beats * time)));
     kick *= kick;
     kick *= kick;
     kick *= kick;
diff @ 2022-03-31 21:52:39 +0100
diff --git a/client/go.c b/client/go.c
index 012ac2d41..fb3861feb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -107,7 +107,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample dt = 0.5 * (1 + cos(twopi * 16 * beats * time));
     mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
     mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
-    sample kick = end * (1 - wrap(1.4 * wrap(beats * time)));
+    sample kick = end * (1 - wrap(1.5 * wrap(beats * time)));
     kick *= kick;
     kick *= kick;
     kick *= kick;
diff @ 2022-03-31 21:52:58 +0100
diff --git a/client/go.c b/client/go.c
index fb3861feb..26d84aa9a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -119,11 +119,11 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     snare[0] = 3 * sin(biquad(lowpass(&s->st[6], 3 * 66 * pow(256, sn), 15), snare[0]));
     snare[1] = 3 * sin(biquad(lowpass(&s->st[7], 3 * 66 * pow(256, sn), 15), snare[1]));
     mixdown[0] = kick + snare[0]
-     + 8 * sin(biquad(lowpass(&s->st[1], 2 * 66 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
-     + 8 * sin(0.5 * biquad(bandpass(&s->st[8 ], 8 * 66 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
+     + 8 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
+     + 8 * sin(0.5 * biquad(bandpass(&s->st[8 ], 8 * 44 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
     mixdown[1] = kick + snare[1]
-     + 8 * sin(biquad(lowpass(&s->st[2], 2 * 66 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
-     + 8 * sin(0.5 * biquad(bandpass(&s->st[10], 8 * 66 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
+     + 8 * sin(biquad(lowpass(&s->st[2], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
+     + 8 * sin(0.5 * biquad(bandpass(&s->st[10], 8 * 44 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
   }
 
 ///}}} NON-SMOOTH
diff @ 2022-03-31 21:53:05 +0100
diff --git a/client/go.c b/client/go.c
index 26d84aa9a..c5433b6cf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -116,8 +116,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample sn = end * (1 - wrap(beats * time / 3));
     sn  = pow(sn, pow(4, 1 - time));
     sample snare[2] = { mixdown[1], mixdown[0] };
-    snare[0] = 3 * sin(biquad(lowpass(&s->st[6], 3 * 66 * pow(256, sn), 15), snare[0]));
-    snare[1] = 3 * sin(biquad(lowpass(&s->st[7], 3 * 66 * pow(256, sn), 15), snare[1]));
+    snare[0] = 3 * sin(biquad(lowpass(&s->st[6], 3 * 44 * pow(256, sn), 15), snare[0]));
+    snare[1] = 3 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
     mixdown[0] = kick + snare[0]
      + 8 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
      + 8 * sin(0.5 * biquad(bandpass(&s->st[8 ], 8 * 44 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
diff @ 2022-03-31 21:53:17 +0100
diff --git a/client/go.c b/client/go.c
index c5433b6cf..76244cfa8 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 d2 = 60000 / bpm * 2 / 3 - 100 * time * wrap(16 * beats * time + 0.5);
     sample d3 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.0);
     sample d4 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.5);
-    sample dt = 0.5 * (1 + cos(twopi * 16 * beats * time));
+    sample dt = 0.5 * (1 + cos(twopi * 32 * beats * time));
     mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
     mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
     sample kick = end * (1 - wrap(1.5 * wrap(beats * time)));
diff @ 2022-03-31 21:53:20 +0100
diff --git a/client/go.c b/client/go.c
index 76244cfa8..091d2012f 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 d2 = 60000 / bpm * 2 / 3 - 100 * time * wrap(16 * beats * time + 0.5);
     sample d3 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.0);
     sample d4 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.5);
-    sample dt = 0.5 * (1 + cos(twopi * 32 * beats * time));
+    sample dt = 0.5 * (1 + cos(twopi * 64 * beats * time));
     mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
     mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
     sample kick = end * (1 - wrap(1.5 * wrap(beats * time)));
diff @ 2022-03-31 21:53:26 +0100
diff --git a/client/go.c b/client/go.c
index 091d2012f..58adc4636 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 d2 = 60000 / bpm * 2 / 3 - 100 * time * wrap(16 * beats * time + 0.5);
     sample d3 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.0);
     sample d4 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.5);
-    sample dt = 0.5 * (1 + cos(twopi * 64 * beats * time));
+    sample dt = 0.5 * (1 + cos(twopi * 128 * beats * time));
     mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
     mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
     sample kick = end * (1 - wrap(1.5 * wrap(beats * time)));
diff @ 2022-03-31 21:53:35 +0100
diff --git a/client/go.c b/client/go.c
index 58adc4636..831ea183f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -94,7 +94,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample rhythm1 = s->rhythm1;
     s->rhythm1 = s->rhythm;
     sample tick = s->rhythm <= 0 && rhythm1 >= 0;
-    sample end = 1 - samphold(&s->end, 1, time);
+    sample end = 1// - samphold(&s->end, 1, time);
     s->rhythm = biquad(lowpass(&s->st[0], bpm / 60 / 12, 20), tick);
     sample t = twopi * time;
     sample co2 = cos(t);
diff @ 2022-03-31 21:53:48 +0100
diff --git a/client/go.c b/client/go.c
index 831ea183f..f29fa6696 100644
--- a/client/go.c
+++ b/client/go.c
@@ -107,8 +107,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample dt = 0.5 * (1 + cos(twopi * 128 * beats * time));
     mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
     mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
-    sample kick = end * (1 - wrap(1.5 * wrap(beats * time)));
-    kick *= kick;
+    sample kick = end * (1 - wrap(2.666666 * wrap(beats * time)));
     kick *= kick;
     kick *= kick;
     kick = 2 * pow(2, 1 + pow((1 + co2)/2, 4)) * tanh((1 + kick) * (1 + kick) * sin(12 * twopi * kick));
diff @ 2022-03-31 21:54:03 +0100
diff --git a/client/go.c b/client/go.c
index f29fa6696..eafc9fb52 100644
--- a/client/go.c
+++ b/client/go.c
@@ -94,7 +94,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample rhythm1 = s->rhythm1;
     s->rhythm1 = s->rhythm;
     sample tick = s->rhythm <= 0 && rhythm1 >= 0;
-    sample end = 1// - samphold(&s->end, 1, time);
+    sample end = 1;// - samphold(&s->end, 1, time);
     s->rhythm = biquad(lowpass(&s->st[0], bpm / 60 / 12, 20), tick);
     sample t = twopi * time;
     sample co2 = cos(t);
diff @ 2022-03-31 21:54:23 +0100
diff --git a/client/go.c b/client/go.c
index eafc9fb52..0cc523e62 100644
--- a/client/go.c
+++ b/client/go.c
@@ -107,8 +107,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample dt = 0.5 * (1 + cos(twopi * 128 * beats * time));
     mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
     mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
-    sample kick = end * (1 - wrap(2.666666 * wrap(beats * time)));
-    kick *= kick;
+    sample kick = end * (1 - wrap(5.333333 * wrap(beats * time)));
     kick *= kick;
     kick = 2 * pow(2, 1 + pow((1 + co2)/2, 4)) * tanh((1 + kick) * (1 + kick) * sin(12 * twopi * kick));
     kick = biquad(highpass(&s->st[5], 66, 5 * (2 + co2)), kick);
diff @ 2022-03-31 21:54:30 +0100
diff --git a/client/go.c b/client/go.c
index 0cc523e62..88955d833 100644
--- a/client/go.c
+++ b/client/go.c
@@ -107,7 +107,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample dt = 0.5 * (1 + cos(twopi * 128 * beats * time));
     mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
     mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
-    sample kick = end * (1 - wrap(5.333333 * wrap(beats * time)));
+    sample kick = end * (1 - wrap(8 * wrap(beats * time)));
     kick *= kick;
     kick = 2 * pow(2, 1 + pow((1 + co2)/2, 4)) * tanh((1 + kick) * (1 + kick) * sin(12 * twopi * kick));
     kick = biquad(highpass(&s->st[5], 66, 5 * (2 + co2)), kick);
diff @ 2022-03-31 21:54:38 +0100
diff --git a/client/go.c b/client/go.c
index 88955d833..7e0258b44 100644
--- a/client/go.c
+++ b/client/go.c
@@ -107,7 +107,9 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample dt = 0.5 * (1 + cos(twopi * 128 * beats * time));
     mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
     mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
-    sample kick = end * (1 - wrap(8 * wrap(beats * time)));
+    sample kick = end * (1 - wrap(wrap(beats * time)));
+    kick *= kick;
+    kick *= kick;
     kick *= kick;
     kick = 2 * pow(2, 1 + pow((1 + co2)/2, 4)) * tanh((1 + kick) * (1 + kick) * sin(12 * twopi * kick));
     kick = biquad(highpass(&s->st[5], 66, 5 * (2 + co2)), kick);
diff @ 2022-03-31 21:54:58 +0100
diff --git a/client/go.c b/client/go.c
index 7e0258b44..251ed0eb2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -98,8 +98,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     s->rhythm = biquad(lowpass(&s->st[0], bpm / 60 / 12, 20), tick);
     sample t = twopi * time;
     sample co2 = cos(t);
-    sample co = cos(3 * t);
-    sample si = sin(3 * t);
+    sample co = cos(5 * t);
+    sample si = sin(5 * t);
     sample d1 = 60000 / bpm * 2 / 3 - 100 * time * wrap(16 * beats * time + 0.0);
     sample d2 = 60000 / bpm * 2 / 3 - 100 * time * wrap(16 * beats * time + 0.5);
     sample d3 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.0);
diff @ 2022-03-31 21:55:15 +0100
diff --git a/client/go.c b/client/go.c
index 251ed0eb2..51e2382b6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -120,10 +120,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     snare[1] = 3 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
     mixdown[0] = kick + snare[0]
      + 8 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
-     + 8 * sin(0.5 * biquad(bandpass(&s->st[8 ], 8 * 44 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
+     + 8 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
     mixdown[1] = kick + snare[1]
      + 8 * sin(biquad(lowpass(&s->st[2], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
-     + 8 * sin(0.5 * biquad(bandpass(&s->st[10], 8 * 44 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
+     + 8 * sin(0.5 * biquad(bandpass(&s->st[10], 44 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
   }
 
 ///}}} NON-SMOOTH
diff @ 2022-03-31 21:55:28 +0100
diff --git a/client/go.c b/client/go.c
index 51e2382b6..ac2cab70f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -120,10 +120,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     snare[1] = 3 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
     mixdown[0] = kick + snare[0]
      + 8 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
-     + 8 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
+     + 8 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
     mixdown[1] = kick + snare[1]
      + 8 * sin(biquad(lowpass(&s->st[2], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
-     + 8 * sin(0.5 * biquad(bandpass(&s->st[10], 44 * 2 * pow(2, 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
+     + 8 * sin(0.5 * biquad(bandpass(&s->st[10], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
   }
 
 ///}}} NON-SMOOTH
diff @ 2022-03-31 21:55:34 +0100
diff --git a/client/go.c b/client/go.c
index ac2cab70f..1dae0d5b7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -116,8 +116,8 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     sample sn = end * (1 - wrap(beats * time / 3));
     sn  = pow(sn, pow(4, 1 - time));
     sample snare[2] = { mixdown[1], mixdown[0] };
-    snare[0] = 3 * sin(biquad(lowpass(&s->st[6], 3 * 44 * pow(256, sn), 15), snare[0]));
-    snare[1] = 3 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
+    snare[0] = 0 * sin(biquad(lowpass(&s->st[6], 3 * 44 * pow(256, sn), 15), snare[0]));
+    snare[1] = 0 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
     mixdown[0] = kick + snare[0]
      + 8 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
      + 8 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
diff @ 2022-03-31 21:55:38 +0100
diff --git a/client/go.c b/client/go.c
index 1dae0d5b7..6407190e2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -119,10 +119,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     snare[0] = 0 * sin(biquad(lowpass(&s->st[6], 3 * 44 * pow(256, sn), 15), snare[0]));
     snare[1] = 0 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
     mixdown[0] = kick + snare[0]
-     + 8 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
+     + 18 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
      + 8 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
     mixdown[1] = kick + snare[1]
-     + 8 * sin(biquad(lowpass(&s->st[2], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
+     + 18 * sin(biquad(lowpass(&s->st[2], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
      + 8 * sin(0.5 * biquad(bandpass(&s->st[10], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
   }
 
diff @ 2022-03-31 21:55:42 +0100
diff --git a/client/go.c b/client/go.c
index 6407190e2..e52d4c3b6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -120,10 +120,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     snare[1] = 0 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
     mixdown[0] = kick + snare[0]
      + 18 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
-     + 8 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
+     + 18 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
     mixdown[1] = kick + snare[1]
      + 18 * sin(biquad(lowpass(&s->st[2], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
-     + 8 * sin(0.5 * biquad(bandpass(&s->st[10], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
+     + 18 * sin(0.5 * biquad(bandpass(&s->st[10], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
   }
 
 ///}}} NON-SMOOTH
diff @ 2022-03-31 21:55:47 +0100
diff --git a/client/go.c b/client/go.c
index e52d4c3b6..161018219 100644
--- a/client/go.c
+++ b/client/go.c
@@ -120,10 +120,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     snare[1] = 0 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
     mixdown[0] = kick + snare[0]
      + 18 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
-     + 18 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
+     + 28 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
     mixdown[1] = kick + snare[1]
      + 18 * sin(biquad(lowpass(&s->st[2], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
-     + 18 * sin(0.5 * biquad(bandpass(&s->st[10], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
+     + 28 * sin(0.5 * biquad(bandpass(&s->st[10], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
   }
 
 ///}}} NON-SMOOTH
diff @ 2022-03-31 21:55:52 +0100
diff --git a/client/go.c b/client/go.c
index 161018219..98722c3e9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -120,10 +120,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     snare[1] = 0 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
     mixdown[0] = kick + snare[0]
      + 18 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
-     + 28 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
+     + 58 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
     mixdown[1] = kick + snare[1]
      + 18 * sin(biquad(lowpass(&s->st[2], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
-     + 28 * sin(0.5 * biquad(bandpass(&s->st[10], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
+     + 58 * sin(0.5 * biquad(bandpass(&s->st[10], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
   }
 
 ///}}} NON-SMOOTH
diff @ 2022-03-31 21:56:02 +0100
diff --git a/client/go.c b/client/go.c
index 98722c3e9..8717f77af 100644
--- a/client/go.c
+++ b/client/go.c
@@ -120,10 +120,10 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     snare[1] = 0 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
     mixdown[0] = kick + snare[0]
      + 18 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
-     + 58 * sin(0.5 * biquad(bandpass(&s->st[8 ], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
+     + 58 * sin(0.5 * biquad(bandpass(&s->st[8 ], 4 * 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
     mixdown[1] = kick + snare[1]
      + 18 * sin(biquad(lowpass(&s->st[2], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
-     + 58 * sin(0.5 * biquad(bandpass(&s->st[10], 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
+     + 58 * sin(0.5 * biquad(bandpass(&s->st[10], 4 * 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
   }
 
 ///}}} NON-SMOOTH
diff @ 2022-03-31 21:56:31 +0100
diff --cc client/go.c
index 8717f77af,e86599b21..e05f8601b
--- a/client/go.c
+++ b/client/go.c
@@@ -28,20 -28,28 +28,36 @@@ int go(S *s, int inchannels, const floa
  ///««« EL DAY DE LAY
  ///»»» EL DAY DE LAY
  ///««« NON-SMOOTH
 +    s->std0.length = SR * 4;
 +    s->std1.length = SR * 4;
  ///»»» NON-SMOOTH
  ///««« CHARRED BARD
+     for (int octave = 0; octave < 20; ++octave)
+     {
+       s->freq[octave] = 40 * pow(sqrt(2), octave);
+       for (int c = 0; c < 2; ++c)
+       {
+         bandpass(&s->band[octave][c], s->freq[octave], flatq);
+       }
+       s->freq[octave] = 40 * pow(sqrt(sqrt(2)), octave) / 64;
+     }
+     highpass(&s->bass, 40, 10);
+     s->left.length = SR*4;
+     s->right.length = SR*4;
  ///»»» CHARRED BARD
  ///««« PEGASUS v3.7
  ///»»» PEGASUS v3.7
    }
 -
 +//return 0;
  ///((( MIXDOWN
++<<<<<<< HEAD
 +  sample bpm = 144.1875;
++=======
+   sample bpm = 137;
++>>>>>>> SET-smoltech-TRACK-charred-bard
    sample mixdown[2] = { 0, 0 };
 +  sample beats = 720;
 +  sample time = phasor(&s->clk, bpm / 60 / beats);
  ///))) MIXDOWN
  
  ///{{{ SEA ORGAN 2.2
@@@ -61,73 -59,152 +77,215 @@@
  ///{{{ GRADIENT
  ///}}} GRADIENT
  ///{{{ EL DAY DE LAY
 +
 +  {
 +    s->edelay1.length = 4 * SR;
 +    s->edelay2.length = 4 * SR;
 +    sample t = twopi * p * 512;
 +    sample co = cos(t);
 +    sample si = sin(t);
 +    sample ldelms = 60000 / bpm * (wrap(512 * p) < 0.75 ? 1 : 1./64);
 +    sample rdelms = 60000 / bpm * (wrap(512 * p) < 0.75 ? 1 : 1./64);
 +    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 };
 +    compress(es, &s->ecompress1, 5, 10, 25, 48, es);
 +    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
 +    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
 +    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 90), 10);
 +    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 90), 10);
 +    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];
 +  }
 +
  ///}}} EL DAY DE LAY
  ///{{{ NON-SMOOTH
 +
 +  {
 +    sample rhythm1 = s->rhythm1;
 +    s->rhythm1 = s->rhythm;
 +    sample tick = s->rhythm <= 0 && rhythm1 >= 0;
 +    sample end = 1;// - samphold(&s->end, 1, time);
 +    s->rhythm = biquad(lowpass(&s->st[0], bpm / 60 / 12, 20), tick);
 +    sample t = twopi * time;
 +    sample co2 = cos(t);
 +    sample co = cos(5 * t);
 +    sample si = sin(5 * t);
 +    sample d1 = 60000 / bpm * 2 / 3 - 100 * time * wrap(16 * beats * time + 0.0);
 +    sample d2 = 60000 / bpm * 2 / 3 - 100 * time * wrap(16 * beats * time + 0.5);
 +    sample d3 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.0);
 +    sample d4 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.5);
 +    sample dt = 0.5 * (1 + cos(twopi * 128 * beats * time));
 +    mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
 +    mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
 +    sample kick = end * (1 - wrap(wrap(beats * time)));
 +    kick *= kick;
 +    kick *= kick;
 +    kick *= kick;
 +    kick = 2 * pow(2, 1 + pow((1 + co2)/2, 4)) * tanh((1 + kick) * (1 + kick) * sin(12 * twopi * kick));
 +    kick = biquad(highpass(&s->st[5], 66, 5 * (2 + co2)), kick);
 +    sample sn = end * (1 - wrap(beats * time / 3));
 +    sn  = pow(sn, pow(4, 1 - time));
 +    sample snare[2] = { mixdown[1], mixdown[0] };
 +    snare[0] = 0 * sin(biquad(lowpass(&s->st[6], 3 * 44 * pow(256, sn), 15), snare[0]));
 +    snare[1] = 0 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
 +    mixdown[0] = kick + snare[0]
 +     + 18 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
 +     + 58 * sin(0.5 * biquad(bandpass(&s->st[8 ], 4 * 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
 +    mixdown[1] = kick + snare[1]
 +     + 18 * sin(biquad(lowpass(&s->st[2], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
 +     + 58 * sin(0.5 * biquad(bandpass(&s->st[10], 4 * 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
 +  }
 +
  ///}}} NON-SMOOTH
  ///{{{ CHARRED BARD
+ 
+   sample u;
+   {
+     sample tempo = 1000 * 60 / bpm;
+     sample t = phasor(&s->clock, 1000. / (tempo * (4 * 4 * 4 * 4 * 4 + 64)));
+     u = t * (4 * 4 * 4 * 4 * 4 + 64) / (4 * 4 * 4 * 4 * 4);
+     sample beat = t * (4 * 4 * 4 * 4 * 4 + 64);
+     sample snare;
+     {
+       sample t = 1 - wrap(2 * wrap(beat / 4) + 8./16);
+       // https://www.soundonsound.com/techniques/practical-snare-drum-synthesis
+       // Figure 7
+       sample o1 = sin(twopi * phasor(&s->snare[0], 320 * pow(1.1, pow(t, 16)))) * pow(t, 12);
+       sample o2 = sin(twopi * phasor(&s->snare[1], 320 * 335./286 * pow(1.1, pow(t, 32)))) * pow(t, 16);
+       sample on = noise();
+       on = biquad(lowpass(&s->snaref[0], 640, 3), on);
+       on = on * pow(t, 8) +
+            4 * biquad(highpass(&s->snaref[1], 1280, 10), on) * pow(t, 16);
+       snare = tanh(2 * pow(t, 4) * (o1 + o2 + 2 * on));
+     }
+     sample closed = (1 - wrap(4 * beat)) * (wrap(beat) < 0.75);
+     sample open = (1 - wrap(2 * beat)) * (wrap(beat) > 0.5);
+     closed *= closed;
+     closed *= closed;
+     open *= open;
+     open *= open;
+     sample snr = beat > 4 * 4 * 4 * 4 * 2 && beat < 4 * 4 * 4 * 4 * 3;
+     snare *= snr;
+     sample hat = beat > 4 * 4 * 4 * 4 * 1 && beat < 4 * 4 * 4 * 4 * 3;
+     closed *= hat;
+     open *= hat;
+     sample kick = 1 - wrap(beat);
+     kick *= kick;
+     kick *= kick;
+     kick *= kick;
+     kick *= 15;
+     kick *= twopi;
+     kick = sin(kick);
+     kick *= 2;
+     kick = tanh(kick);
+     kick *= ((beat > 1 && beat < 4 * 4 * 4) ||
+             (4 * 4 * 4 * 4 * 1 > beat && beat > 4 * 4 * 4 * 4 * 1 - 4 * 4 * 4) ||
+             (beat > 4 * 4 * 4 * 4 - 4 * 4 && beat < 4 * 4 * 4 * 4) ||
+             (beat > 4 * 4 * 4 * 4 * 3 + 1)
+             ) ? 0 : 1;
+     sample hats[2] =
+       { biquad(highpass(&s->hat[0], 2000 * pow(sqrt(2), cos(twopi * u * 4 * 4 * 4 * 4)), 3), (closed + open) * noise())
+       , biquad(highpass(&s->hat[1], 2000 * pow(sqrt(2), sin(twopi * u * 4 * 4 * 4 * 4)), 3), (closed + open) * noise())
+       };
+     {
+       // https://www.soundonsound.com/techniques/practical-cymbal-synthesis
+       // Figure 14
+       sample t = 1 - 2./3. * wrap(2 * pow(wrap(2 * pow(wrap(beat), 1.03)), 1.06));
+       sample o11 = (phasor(&s->osc[0][0], 1047) < 2./3.) - 0.5;
+       sample o12 = (phasor(&s->osc[0][1], 1481 * (1 + o11)) < 0.5) - 0.5;
+       sample o21 = (phasor(&s->osc[1][0], 1109) < 2./3.) - 0.5;
+       sample o22 = (phasor(&s->osc[1][1], 1049 * (1 + o21)) < 0.5) - 0.5;
+       sample o31 = (phasor(&s->osc[2][0], 1175) < 2./3.) - 0.5;
+       sample o32 = (phasor(&s->osc[2][1], 1480 * (1 + o31)) < 0.5) - 0.5;
+       sample o = (o12 + o22 + o32) * 2./3.;
+       sample cymbal =
+         biquad(bandpass(&s->cymbal[0], 1050, flatq), o * t * t * t * closed) * 2./3. +
+         biquad(highpass(&s->cymbal[1], 2490, flatq), o * t * t * open);
+       hats[0] = cymbal;
+       hats[1] = cymbal;
+     }
+   
+     // multiband delay process
+     sample del[2] =
+       { beat < 4 * 4 ? tempo / 17./2 :
+         beat < 4 * 4 * 4 - 3 ? tempo * 3/2. :
+         beat < 4 * 4 * 4 - 1 ? tempo / 17./3 :
+         beat < 4 * 4 * 4 - 0.5 ? tempo * 2 :
+         beat < 4 * 4 * 4 * 4 * 1 - 2 ? tempo * 4 :
+         beat < 4 * 4 * 4 * 4 * 1 ? tempo * 2 :
+         beat > 4 * 4 * 4 * 4 * 3 ? tempo * 1 :
+   //      beat > 4 * 4 * 4 * 4 * 3 - 4 * 4 ? tempo / 17. :
+         beat > 4 * 4 * 4 * 4 * 2.75 - 0.5 ? (tempo + 0.25) * 8 :
+         beat > 4 * 4 * 4 * 4 * 2.75 - 0 ? tempo /72./8 * mix(wrap(beat), 1, 0.9) :
+         beat > 4 * 4 * 4 * 4 * 2.5 + 8 - 3.5 ? (tempo + 0.25) * 8 :
+         beat > 4 * 4 * 4 * 4 * 2.5 + 8 - 4 ? tempo /20./8 * mix(wrap(beat), 1, 0.9) :
+         beat > 4 * 4 * 4 * 4 * 2.25 + 8 - 6 ? (tempo + 0.25) * 8 :
+         beat > 4 * 4 * 4 * 4 * 2.25 + 8 - 6.5 ? tempo /6./8 * mix(wrap(beat), 1, 0.9) :
+         beat > 4 * 4 * 4 * 4 * 2 - 1 ? (tempo + 0.25) * 8 :
+         beat > 4 * 4 * 4 * 4 * 2 - 1.5 ? tempo /16./8 * mix(wrap(beat), 1, 0.9) : tempo * 4
+       , beat < 4 * 4 ? tempo / 15./2 :
+         beat < 4 * 4 * 4 - 3 ? tempo * 5/2. :
+         beat < 4 * 4 * 4 - 1 ? tempo / 15./3 :
+         beat < 4 * 4 * 4 - 0.5 ? tempo * 2 :
+         beat < 4 * 4 * 4 * 4 * 1 - 2 ? tempo * 4 :
+         beat < 4 * 4 * 4 * 4 * 1 ? tempo * 2 :
+         beat > 4 * 4 * 4 * 4 * 3 ? tempo * 1 :
+   //      beat > 4 * 4 * 4 * 4 * 3 - 4 * 4 ? tempo / 15. :
+         beat > 4 * 4 * 4 * 4 * 2.75 - 0.5 ? (tempo + 0.25) * 8 :
+         beat > 4 * 4 * 4 * 4 * 2.75 - 0 ? tempo /36./8 * mix(wrap(beat), 1, 0.9) :
+         beat > 4 * 4 * 4 * 4 * 2.5 + 8 - 3.5 ? (tempo + 0.25) * 8 :
+         beat > 4 * 4 * 4 * 4 * 2.5 + 8 - 4 ? tempo /10./8 * mix(wrap(beat), 1, 0.9) :
+         beat > 4 * 4 * 4 * 4 * 2.25 + 8 - 6 ? (tempo + 0.25) * 8 :
+         beat > 4 * 4 * 4 * 4 * 2.25 + 8 - 6.5 ? tempo /12./8 * mix(wrap(beat), 1, 0.9) :
+         beat > 4 * 4 * 4 * 4 * 2 - 1 ? (tempo - 0.25) * 8 :
+         beat > 4 * 4 * 4 * 4 * 2 - 1.5 ? tempo /8./8 * mix(wrap(beat), 1, 0.9) : tempo * 4
+       };
+     sample modulation = 0.01 * pow(wrap(clamp(beat / (4 * 4 * 4 * 4) - 1, 0, 1)), 2);
+     mixdown[0] += delread4(&s->left,  del[0] * pow(2, modulation * cos(twopi * u * 4)));
+     mixdown[1] += delread4(&s->right, del[1] * pow(2, modulation * sin(twopi * u * 4)));
+     for (int c = 0; c < 2; ++c)
+     {
+       sample last = 0.1 * pow(0.25, cos(twopi * u * 4 * 4 * 4));
+       sample input = mixdown[c];
+       mixdown[c] = 0;
+       for (int octave = 0; octave < 20; ++octave)
+       {
+         sample b = biquad(&s->band[octave][c], input);
+         sample level = sqrt(fmax(0, lop(&s->rms[octave][c], b * b, s->freq[octave])));
+         b /= last;
+         mixdown[c] += b;
+         last = mix(last, level, 0.5 - 0.5 * cos(twopi * u * 4 * 4));
+       }
+     }
+     // stereo mixing
+     sample angle = twopi * u * 4;
+     sample si = sin(angle);
+     sample co = cos(angle);
+     sample mixdown2[2] =
+       { mixdown[0] * co - si * mixdown[1]
+       , mixdown[0] * si + co * mixdown[1]
+       };
+     for (int c = 0; c < 2; ++c)
+     {
+       mixdown[c] = mix(mixdown2[c], kick, 0.5);
+     }
+     // feedback
+     compress(mixdown, &s->dynamics, 9 * u, 9 * u, 9 * u, 60, mixdown);
+     delwrite(&s->left, mixdown[0]);
+     delwrite(&s->right, mixdown[1]);
+     // more drums
+     kick += sin(0.125 * biquad(&s->bass, kick));
+     kick = mix(kick, samphold(&s->sh, kick, wrap(beat * 36 * 40 / (1000 / tempo))), wrap(u));
+     mixdown[0] += 1.5 * hats[0] + kick/2 + snare;
+     mixdown[1] += 1.5 * hats[1] + kick/2 + snare;
+   }
+ 
  ///}}} CHARRED BARD
  ///{{{ PEGASUS V3.7
  ///}}} PEGASUS V3.7
@@@ -156,10 -233,13 +314,20 @@@
    }
  ///}}} MIXDOWN
  
++<<<<<<< HEAD
 +///{{{ SMOLTECH
 +  delwrite(&s->std0, mixdown[0]);
 +  delwrite(&s->std1, mixdown[1]);
 +///}}} SMOLTECH
++=======
+ ///{{{ CHARRED BARD
+   // filters
+   mixdown[0] = mix(biquad(highpass(&s->high[0][0], 1 * pow(10000, pow(wrap((u + 1./2)), 64)), flatq), mixdown[0]), mixdown[0], u > 0.5);
+   mixdown[1] = mix(biquad(highpass(&s->high[1][0], 1 * pow(10000, pow(wrap((u + 1./2)), 64)), flatq), mixdown[1]), mixdown[1], u > 0.5);
+   mixdown[0] = mix(biquad(lowpass(&s->low[0], 20000 / pow(10000, pow(wrap((u - 3./4) * 4 * 4 * 4), 4)), flatq), mixdown[0]), mixdown[0], u < 0.75);
+   mixdown[1] = mix(biquad(lowpass(&s->low[1], 20000 / pow(10000, pow(wrap((u - 3./4) * 4 * 4 * 4), 4)), flatq), mixdown[1]), mixdown[1], u < 0.75);
+ ///}}} CHARRED BARD
++>>>>>>> SET-smoltech-TRACK-charred-bard
  
    for (int c = 0; c < outchannels; ++c)
    {
diff --cc client/go.h
index e475f99fd,0ac8c336a..82666e8c9
--- a/client/go.h
+++ b/client/go.h
@@@ -65,28 -43,29 +65,47 @@@ typedef struct 
  ///[[[ GRADIENT
  ///]]] 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
 +  BIQUAD st[64];
 +  sample rhythm;
 +  HIP hrhy;
 +  DELAY std0; float std0buf[SR*4];
 +  DELAY std1; float std1buf[SR*4];
 +  LOP lrhy[2];
 +  PHASOR clk;
 +  SAMPHOLD end;
 +  sample rhythm1;
  ///]]] NON-SMOOTH
  ///[[[ CHARRED BARD
+   BIQUAD band[20][2];
+   sample freq[20];
+   LOP rms[20][2];
+   DELAY left;
+   float leftbuf[SR*4];
+   DELAY right;
+   float rightbuf[SR*4];
+   COMPRESS dynamics;
+   PHASOR clock;
+   BIQUAD bass;
+   SAMPHOLD sh;
+   SAMPHOLD gate;
+   BIQUAD high[2][2];
+   BIQUAD hat[2];
+   PHASOR osc[3][2];
+   BIQUAD cymbal[2];
+   PHASOR snare[2];
+   BIQUAD snaref[2];
+   BIQUAD low[2];
  ///]]] CHARRED BARD
  ///[[[ PEGASUS v3.7
  ///]]] PEGASUS v3.7
diff @ 2022-03-31 21:56:49 +0100
diff --git a/client/go.c b/client/go.c
index e05f8601b..927f61f18 100644
--- a/client/go.c
+++ b/client/go.c
@@ -50,11 +50,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   }
 //return 0;
 ///((( MIXDOWN
-<<<<<<< HEAD
   sample bpm = 144.1875;
-=======
-  sample bpm = 137;
->>>>>>> SET-smoltech-TRACK-charred-bard
   sample mixdown[2] = { 0, 0 };
   sample beats = 720;
   sample time = phasor(&s->clk, bpm / 60 / beats);
@@ -314,12 +310,6 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   }
 ///}}} MIXDOWN
 
-<<<<<<< HEAD
-///{{{ SMOLTECH
-  delwrite(&s->std0, mixdown[0]);
-  delwrite(&s->std1, mixdown[1]);
-///}}} SMOLTECH
-=======
 ///{{{ CHARRED BARD
   // filters
   mixdown[0] = mix(biquad(highpass(&s->high[0][0], 1 * pow(10000, pow(wrap((u + 1./2)), 64)), flatq), mixdown[0]), mixdown[0], u > 0.5);
@@ -327,7 +317,6 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
   mixdown[0] = mix(biquad(lowpass(&s->low[0], 20000 / pow(10000, pow(wrap((u - 3./4) * 4 * 4 * 4), 4)), flatq), mixdown[0]), mixdown[0], u < 0.75);
   mixdown[1] = mix(biquad(lowpass(&s->low[1], 20000 / pow(10000, pow(wrap((u - 3./4) * 4 * 4 * 4), 4)), flatq), mixdown[1]), mixdown[1], u < 0.75);
 ///}}} CHARRED BARD
->>>>>>> SET-smoltech-TRACK-charred-bard
 
   for (int c = 0; c < outchannels; ++c)
   {
diff @ 2022-03-31 21:57:08 +0100
diff --git a/client/go.c b/client/go.c
index 927f61f18..a234dbe00 100644
--- a/client/go.c
+++ b/client/go.c
@@ -74,69 +74,9 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
 ///}}} GRADIENT
 ///{{{ EL DAY DE LAY
 
-  {
-    s->edelay1.length = 4 * SR;
-    s->edelay2.length = 4 * SR;
-    sample t = twopi * p * 512;
-    sample co = cos(t);
-    sample si = sin(t);
-    sample ldelms = 60000 / bpm * (wrap(512 * p) < 0.75 ? 1 : 1./64);
-    sample rdelms = 60000 / bpm * (wrap(512 * p) < 0.75 ? 1 : 1./64);
-    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 };
-    compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(64 * 8 * p), (sample) 0.25), 1));
-    es[0] = lop(&s->elop2[0], hip(&s->ehip2[0], es[0], 90), 10);
-    es[1] = lop(&s->elop2[1], hip(&s->ehip2[1], es[1], 90), 10);
-    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];
-  }
-
 ///}}} EL DAY DE LAY
 ///{{{ NON-SMOOTH
 
-  {
-    sample rhythm1 = s->rhythm1;
-    s->rhythm1 = s->rhythm;
-    sample tick = s->rhythm <= 0 && rhythm1 >= 0;
-    sample end = 1;// - samphold(&s->end, 1, time);
-    s->rhythm = biquad(lowpass(&s->st[0], bpm / 60 / 12, 20), tick);
-    sample t = twopi * time;
-    sample co2 = cos(t);
-    sample co = cos(5 * t);
-    sample si = sin(5 * t);
-    sample d1 = 60000 / bpm * 2 / 3 - 100 * time * wrap(16 * beats * time + 0.0);
-    sample d2 = 60000 / bpm * 2 / 3 - 100 * time * wrap(16 * beats * time + 0.5);
-    sample d3 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.0);
-    sample d4 = 60000 / bpm * 2 / 3 + 100 * time * wrap(16 * beats * time + 0.5);
-    sample dt = 0.5 * (1 + cos(twopi * 128 * beats * time));
-    mixdown[0] += mix(0, 1, end) * lop(&s->lrhy[0], mix(co * delread4(&s->std0, d1), -si * delread4(&s->std1, d2), dt), 12000);
-    mixdown[1] += mix(0, 1, end) * lop(&s->lrhy[1], mix(co * delread4(&s->std1, d3),  si * delread4(&s->std0, d4), dt), 12000);
-    sample kick = end * (1 - wrap(wrap(beats * time)));
-    kick *= kick;
-    kick *= kick;
-    kick *= kick;
-    kick = 2 * pow(2, 1 + pow((1 + co2)/2, 4)) * tanh((1 + kick) * (1 + kick) * sin(12 * twopi * kick));
-    kick = biquad(highpass(&s->st[5], 66, 5 * (2 + co2)), kick);
-    sample sn = end * (1 - wrap(beats * time / 3));
-    sn  = pow(sn, pow(4, 1 - time));
-    sample snare[2] = { mixdown[1], mixdown[0] };
-    snare[0] = 0 * sin(biquad(lowpass(&s->st[6], 3 * 44 * pow(256, sn), 15), snare[0]));
-    snare[1] = 0 * sin(biquad(lowpass(&s->st[7], 3 * 44 * pow(256, sn), 15), snare[1]));
-    mixdown[0] = kick + snare[0]
-     + 18 * sin(biquad(lowpass(&s->st[1], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[3], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[0]))
-     + 58 * sin(0.5 * biquad(bandpass(&s->st[8 ], 4 * 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[9 ], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[0]));
-    mixdown[1] = kick + snare[1]
-     + 18 * sin(biquad(lowpass(&s->st[2], 2 * 44 * pow(2, 4 * sin(2 * biquad(highpass(&s->st[4], 5 / 9. * bpm / 60, 50), 1000 * tick * end))), 3), mixdown[1]))
-     + 58 * sin(0.5 * biquad(bandpass(&s->st[10], 4 * 44 * 2 * pow(sqrt(2), 8 * sin(2 * biquad(highpass(&s->st[11], 5 / 12. * bpm / 60, mix(3, 300, time)), 1000 * tick * end))), mix(flatq, 4, 1)), 3 * mixdown[1]));
-  }
 
 ///}}} NON-SMOOTH
 ///{{{ CHARRED BARD
diff @ 2022-03-31 21:57:39 +0100
diff --git a/client/go.c b/client/go.c
index a234dbe00..0a8292f80 100644
--- a/client/go.c
+++ b/client/go.c
@@ -216,7 +216,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     delwrite(&s->left, mixdown[0]);
     delwrite(&s->right, mixdown[1]);
     // more drums
-    kick += sin(0.125 * biquad(&s->bass, kick));
+    kick += sin(0.25 * biquad(&s->bass, kick));
     kick = mix(kick, samphold(&s->sh, kick, wrap(beat * 36 * 40 / (1000 / tempo))), wrap(u));
     mixdown[0] += 1.5 * hats[0] + kick/2 + snare;
     mixdown[1] += 1.5 * hats[1] + kick/2 + snare;
diff @ 2022-03-31 21:57:56 +0100
diff --git a/client/go.c b/client/go.c
index 0a8292f80..236bac39c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -41,7 +41,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       }
       s->freq[octave] = 40 * pow(sqrt(sqrt(2)), octave) / 64;
     }
-    highpass(&s->bass, 40, 10);
+    highpass(&s->bass, 80, 10);
     s->left.length = SR*4;
     s->right.length = SR*4;
 ///»»» CHARRED BARD
diff @ 2022-03-31 21:58:02 +0100
diff --git a/client/go.c b/client/go.c
index 236bac39c..d120d793a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -41,7 +41,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       }
       s->freq[octave] = 40 * pow(sqrt(sqrt(2)), octave) / 64;
     }
-    highpass(&s->bass, 80, 10);
+    highpass(&s->bass, 160, 10);
     s->left.length = SR*4;
     s->right.length = SR*4;
 ///»»» CHARRED BARD
diff @ 2022-03-31 21:58:08 +0100
diff --git a/client/go.c b/client/go.c
index d120d793a..fd9be4178 100644
--- a/client/go.c
+++ b/client/go.c
@@ -41,7 +41,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       }
       s->freq[octave] = 40 * pow(sqrt(sqrt(2)), octave) / 64;
     }
-    highpass(&s->bass, 160, 10);
+    highpass(&s->bass, 40, 20);
     s->left.length = SR*4;
     s->right.length = SR*4;
 ///»»» CHARRED BARD
diff @ 2022-03-31 21:58:11 +0100
diff --git a/client/go.c b/client/go.c
index fd9be4178..8ea12babd 100644
--- a/client/go.c
+++ b/client/go.c
@@ -41,7 +41,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       }
       s->freq[octave] = 40 * pow(sqrt(sqrt(2)), octave) / 64;
     }
-    highpass(&s->bass, 40, 20);
+    highpass(&s->bass, 40, 30);
     s->left.length = SR*4;
     s->right.length = SR*4;
 ///»»» CHARRED BARD
diff @ 2022-03-31 21:58:15 +0100
diff --git a/client/go.c b/client/go.c
index 8ea12babd..5770bc21d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -41,7 +41,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
       }
       s->freq[octave] = 40 * pow(sqrt(sqrt(2)), octave) / 64;
     }
-    highpass(&s->bass, 40, 30);
+    highpass(&s->bass, 40, 40);
     s->left.length = SR*4;
     s->right.length = SR*4;
 ///»»» CHARRED BARD
diff @ 2022-03-31 21:58:26 +0100
diff --git a/client/go.c b/client/go.c
index 5770bc21d..b30dace1c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -216,7 +216,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     delwrite(&s->left, mixdown[0]);
     delwrite(&s->right, mixdown[1]);
     // more drums
-    kick += sin(0.25 * biquad(&s->bass, kick));
+    kick += sin(0.5 * biquad(&s->bass, kick));
     kick = mix(kick, samphold(&s->sh, kick, wrap(beat * 36 * 40 / (1000 / tempo))), wrap(u));
     mixdown[0] += 1.5 * hats[0] + kick/2 + snare;
     mixdown[1] += 1.5 * hats[1] + kick/2 + snare;
diff @ 2022-03-31 21:58:40 +0100
diff --git a/client/go.c b/client/go.c
index b30dace1c..4b7f9913b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -196,7 +196,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
         sample level = sqrt(fmax(0, lop(&s->rms[octave][c], b * b, s->freq[octave])));
         b /= last;
         mixdown[c] += b;
-        last = mix(last, level, 0.5 - 0.5 * cos(twopi * u * 4 * 4));
+        last = mix(last, level, 0.5 - 0.5 * cos(twopi * u * 4 * 4 * 4));
       }
     }
     // stereo mixing
diff @ 2022-03-31 21:58:50 +0100
diff --git a/client/go.c b/client/go.c
index 4b7f9913b..e6d187d89 100644
--- a/client/go.c
+++ b/client/go.c
@@ -216,7 +216,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     delwrite(&s->left, mixdown[0]);
     delwrite(&s->right, mixdown[1]);
     // more drums
-    kick += sin(0.5 * biquad(&s->bass, kick));
+    kick += sin(1 * biquad(&s->bass, kick));
     kick = mix(kick, samphold(&s->sh, kick, wrap(beat * 36 * 40 / (1000 / tempo))), wrap(u));
     mixdown[0] += 1.5 * hats[0] + kick/2 + snare;
     mixdown[1] += 1.5 * hats[1] + kick/2 + snare;
diff @ 2022-03-31 21:58:53 +0100
diff --git a/client/go.c b/client/go.c
index e6d187d89..958237461 100644
--- a/client/go.c
+++ b/client/go.c
@@ -216,7 +216,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     delwrite(&s->left, mixdown[0]);
     delwrite(&s->right, mixdown[1]);
     // more drums
-    kick += sin(1 * biquad(&s->bass, kick));
+    kick += sin(2 * biquad(&s->bass, kick));
     kick = mix(kick, samphold(&s->sh, kick, wrap(beat * 36 * 40 / (1000 / tempo))), wrap(u));
     mixdown[0] += 1.5 * hats[0] + kick/2 + snare;
     mixdown[1] += 1.5 * hats[1] + kick/2 + snare;
diff @ 2022-03-31 21:58:56 +0100
diff --git a/client/go.c b/client/go.c
index 958237461..ab3afc91d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -216,7 +216,7 @@ int go(S *s, int inchannels, const float *in, int outchannels, float *out)
     delwrite(&s->left, mixdown[0]);
     delwrite(&s->right, mixdown[1]);
     // more drums
-    kick += sin(2 * biquad(&s->bass, kick));
+    kick += sin(3 * biquad(&s->bass, kick));
     kick = mix(kick, samphold(&s->sh, kick, wrap(beat * 36 * 40 / (1000 / tempo))), wrap(u));
     mixdown[0] += 1.5 * hats[0] + kick/2 + snare;
     mixdown[1] += 1.5 * hats[1] + kick/2 + snare;
diff @ 2022-03-31 21:59:18 +0100
diff --git a/client/go.h b/client/go.h
index 82666e8c9..d29c1cf76 100644
--- a/client/go.h
+++ b/client/go.h
@@ -107,6 +107,8 @@ typedef struct {
   BIQUAD snaref[2];
   BIQUAD low[2];
 ///]]] CHARRED BARD
+
+  sample bpm;
 ///[[[ PEGASUS v3.7
 ///]]] PEGASUS v3.7
 
diff @ 2022-03-31 21:59:29 +0100
diff --git a/client/go.c b/client/go.c
index ab3afc91d..d5573f5d6 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)
   }
 //return 0;
 ///((( MIXDOWN
-  sample bpm = 144.1875;
+  sample bpm = s->bpm = 144.1875;
   sample mixdown[2] = { 0, 0 };
   sample beats = 720;
   sample time = phasor(&s->clk, bpm / 60 / beats);
diff @ 2022-03-31 21:59:36 +0100
diff --git a/client/go.c b/client/go.c
index d5573f5d6..086c60757 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)
   }
 //return 0;
 ///((( MIXDOWN
-  sample bpm = s->bpm = 144.1875;
+  sample bpm = s->bpm *= 1.00001;
   sample mixdown[2] = { 0, 0 };
   sample beats = 720;
   sample time = phasor(&s->clk, bpm / 60 / beats);
diff @ 2022-03-31 21:59:59 +0100
diff --git a/client/go.c b/client/go.c
index 086c60757..4228d2ac4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -244,7 +244,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, 15, 20, 25, 48, mixdown);
-    sample volume = 1;
+    sample volume = 0;
     mixdown[0] *= volume;
     mixdown[1] *= volume;
   }

the end