session-2019-02-22-222951

clive

a C audio live-coding skeleton

diff @ 2019-02-22 22:30:34 +0000
diff --git a/client/go.c b/client/go.c
index 48b5519fd..b36093797 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,9 +96,9 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100,
-        lop(&s->so2.lag[0], -12, 1e-4), feedback[c]);
+        lop(&s->so2.lag[0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
-        lop(&s->so2.lag[1],  19, 1e-4), down);
+        lop(&s->so2.lag[1],  19, 1e-3), down);
       feedback[c] = feedback[c] - down - up;
     }
 
diff @ 2019-02-22 22:31:07 +0000
diff --git a/client/go.c b/client/go.c
index b36093797..8d8b7856d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -87,7 +87,7 @@ go(S *s, int channels, const float *in, float *out)
   sample so2[2] = { 0, 0 };
   {
     // modulate delay times
-    sample p = phasor(&s->so2.phase, bpm/60/64);
+    sample p = phasor(&s->so2.phase, 2*bpm/60/64);
     sample modulation = 10 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60) - modulation)
diff @ 2019-02-22 22:31:34 +0000
diff --git a/client/go.c b/client/go.c
index 8d8b7856d..55a8990cd 100644
--- a/client/go.c
+++ b/client/go.c
@@ -87,7 +87,7 @@ go(S *s, int channels, const float *in, float *out)
   sample so2[2] = { 0, 0 };
   {
     // modulate delay times
-    sample p = phasor(&s->so2.phase, 2*bpm/60/64);
+    sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
     sample modulation = 10 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60) - modulation)
diff @ 2019-02-22 22:31:59 +0000
diff --git a/client/go.c b/client/go.c
index 55a8990cd..fbf33854d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 500, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 600, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:32:08 +0000
diff --git a/client/go.c b/client/go.c
index fbf33854d..a89a740d8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 600, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 700, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:32:20 +0000
diff --git a/client/go.c b/client/go.c
index a89a740d8..d63514725 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 700, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 800, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:32:25 +0000
diff --git a/client/go.c b/client/go.c
index d63514725..aeb1cf30a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 800, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 900, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:32:31 +0000
diff --git a/client/go.c b/client/go.c
index aeb1cf30a..af2663abb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 900, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 1000, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:32:35 +0000
diff --git a/client/go.c b/client/go.c
index af2663abb..7b3692e4e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 1000, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 1200, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:32:49 +0000
diff --git a/client/go.c b/client/go.c
index 7b3692e4e..3d289ca7d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,9 +96,9 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100,
-        lop(&s->so2.lag[0], -12, 1e-3), feedback[c]);
+        lop(&s->so2.lag[0], -19, 1e-4), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
-        lop(&s->so2.lag[1],  19, 1e-3), down);
+        lop(&s->so2.lag[1],  12, 1e-4), down);
       feedback[c] = feedback[c] - down - up;
     }
 
diff @ 2019-02-22 22:33:00 +0000
diff --git a/client/go.c b/client/go.c
index 3d289ca7d..341954480 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 1200, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 1400, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:33:10 +0000
diff --git a/client/go.c b/client/go.c
index 341954480..d2a4ab2e8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -99,7 +99,7 @@ go(S *s, int channels, const float *in, float *out)
         lop(&s->so2.lag[0], -19, 1e-4), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
         lop(&s->so2.lag[1],  12, 1e-4), down);
-      feedback[c] = feedback[c] - down - up;
+      feedback[c] = 2 * feedback[c] - down - up;
     }
 
     // multiband compressor
diff @ 2019-02-22 22:33:15 +0000
diff --git a/client/go.c b/client/go.c
index d2a4ab2e8..132005703 100644
--- a/client/go.c
+++ b/client/go.c
@@ -99,7 +99,7 @@ go(S *s, int channels, const float *in, float *out)
         lop(&s->so2.lag[0], -19, 1e-4), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
         lop(&s->so2.lag[1],  12, 1e-4), down);
-      feedback[c] = 2 * feedback[c] - down - up;
+      feedback[c] = sin(2 * feedback[c] - down - up);
     }
 
     // multiband compressor
diff @ 2019-02-22 22:33:27 +0000
diff --git a/client/go.c b/client/go.c
index 132005703..c9dc74069 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 1400, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 1600, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:33:38 +0000
diff --git a/client/go.c b/client/go.c
index c9dc74069..796c3a225 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,9 +96,9 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100,
-        lop(&s->so2.lag[0], -19, 1e-4), feedback[c]);
+        lop(&s->so2.lag[0], 19, 1e-4), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
-        lop(&s->so2.lag[1],  12, 1e-4), down);
+        lop(&s->so2.lag[1], -12, 1e-4), down);
       feedback[c] = sin(2 * feedback[c] - down - up);
     }
 
diff @ 2019-02-22 22:33:46 +0000
diff --git a/client/go.c b/client/go.c
index 796c3a225..43da5bdaa 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 1600, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 1800, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:33:49 +0000
diff --git a/client/go.c b/client/go.c
index 43da5bdaa..e1e9ae399 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 1800, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 2000, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:34:24 +0000
diff --git a/client/go.c b/client/go.c
index e1e9ae399..cf44a602c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 2000, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 2300, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:34:33 +0000
diff --git a/client/go.c b/client/go.c
index cf44a602c..ac72083ee 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 2300, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 2600, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:34:42 +0000
diff --git a/client/go.c b/client/go.c
index ac72083ee..b0e0d718b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 2600, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 2900, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:34:48 +0000
diff --git a/client/go.c b/client/go.c
index b0e0d718b..9de094fd9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -126,7 +126,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 2900, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 3200, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:35:11 +0000
diff --git a/client/go.c b/client/go.c
index 9de094fd9..4627fe7e4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -113,8 +113,9 @@ go(S *s, int channels, const float *in, float *out)
         band[c] = biquad(bandpass(&s->multiband[o][c], 10 * pow(2, o), flatq), input[c]);
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
-      output[0] += band[0];
-      output[1] += band[1];
+      sample g = 10 / (o + 10);
+      output[0] += band[0] * g;
+      output[1] += band[1] * g;
     }
     feedback[0] = output[0];
     feedback[1] = output[1];
diff @ 2019-02-22 22:35:17 +0000
diff --git a/client/go.c b/client/go.c
index 4627fe7e4..cff0e27f0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -113,7 +113,7 @@ go(S *s, int channels, const float *in, float *out)
         band[c] = biquad(bandpass(&s->multiband[o][c], 10 * pow(2, o), flatq), input[c]);
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
-      sample g = 10 / (o + 10);
+      sample g = 20 / (o + 10);
       output[0] += band[0] * g;
       output[1] += band[1] * g;
     }
diff @ 2019-02-22 22:35:35 +0000
diff --git a/client/go.c b/client/go.c
index cff0e27f0..e87803859 100644
--- a/client/go.c
+++ b/client/go.c
@@ -113,7 +113,7 @@ go(S *s, int channels, const float *in, float *out)
         band[c] = biquad(bandpass(&s->multiband[o][c], 10 * pow(2, o), flatq), input[c]);
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
-      sample g = 20 / (o + 10);
+      sample g = 2 / (o + 1);
       output[0] += band[0] * g;
       output[1] += band[1] * g;
     }
diff @ 2019-02-22 22:35:42 +0000
diff --git a/client/go.c b/client/go.c
index e87803859..d7dd8e5f1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -99,7 +99,7 @@ go(S *s, int channels, const float *in, float *out)
         lop(&s->so2.lag[0], 19, 1e-4), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
         lop(&s->so2.lag[1], -12, 1e-4), down);
-      feedback[c] = sin(2 * feedback[c] - down - up);
+      feedback[c] = sin(12 * feedback[c] - down - up);
     }
 
     // multiband compressor
diff @ 2019-02-22 22:35:49 +0000
diff --git a/client/go.c b/client/go.c
index d7dd8e5f1..017f1d16e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -113,7 +113,7 @@ go(S *s, int channels, const float *in, float *out)
         band[c] = biquad(bandpass(&s->multiband[o][c], 10 * pow(2, o), flatq), input[c]);
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
-      sample g = 2 / (o + 1);
+      sample g = 12 / (o + 1);
       output[0] += band[0] * g;
       output[1] += band[1] * g;
     }
diff @ 2019-02-22 22:36:08 +0000
diff --git a/client/go.c b/client/go.c
index 017f1d16e..bc3749aab 100644
--- a/client/go.c
+++ b/client/go.c
@@ -88,7 +88,7 @@ go(S *s, int channels, const float *in, float *out)
   {
     // modulate delay times
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
-    sample modulation = 10 * cos(twopi * p);
+    sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60) - modulation)
       , delread4(&s->so2.echo[0].del, 1000/(bpm/60) + modulation)
diff @ 2019-02-22 22:36:16 +0000
diff --git a/client/go.c b/client/go.c
index bc3749aab..5e825ca85 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,9 +96,9 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100,
-        lop(&s->so2.lag[0], 19, 1e-4), feedback[c]);
+        lop(&s->so2.lag[0], 19, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
-        lop(&s->so2.lag[1], -12, 1e-4), down);
+        lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
 
diff @ 2019-02-22 22:36:31 +0000
diff --git a/client/go.c b/client/go.c
index 5e825ca85..1f584127e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,9 +95,9 @@ go(S *s, int channels, const float *in, float *out)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100,
+      sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100+ modulation,
         lop(&s->so2.lag[0], 19, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100,
+      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100-modulation,
         lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
diff @ 2019-02-22 22:36:53 +0000
diff --git a/client/go.c b/client/go.c
index 1f584127e..471fa40b6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,9 +95,9 @@ go(S *s, int channels, const float *in, float *out)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 100+ modulation,
+      sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 90+ modulation,
         lop(&s->so2.lag[0], 19, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 100-modulation,
+      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 90-modulation,
         lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
diff @ 2019-02-22 22:37:02 +0000
diff --git a/client/go.c b/client/go.c
index 471fa40b6..7ad5c1981 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,9 +95,9 @@ go(S *s, int channels, const float *in, float *out)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 90+ modulation,
+      sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 80+ modulation,
         lop(&s->so2.lag[0], 19, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 90-modulation,
+      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 80-modulation,
         lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
diff @ 2019-02-22 22:37:05 +0000
diff --git a/client/go.c b/client/go.c
index 7ad5c1981..9b26e432e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,9 +95,9 @@ go(S *s, int channels, const float *in, float *out)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[2 * c + 0], 2, 80+ modulation,
+      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 80+ modulation,
         lop(&s->so2.lag[0], 19, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 2, 80-modulation,
+      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 80-modulation,
         lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
diff @ 2019-02-22 22:37:12 +0000
diff --git a/client/go.c b/client/go.c
index 9b26e432e..dd7fbab20 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,9 +95,9 @@ go(S *s, int channels, const float *in, float *out)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 80+ modulation,
+      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 70+ modulation,
         lop(&s->so2.lag[0], 19, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 80-modulation,
+      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 70-modulation,
         lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
diff @ 2019-02-22 22:37:18 +0000
diff --git a/client/go.c b/client/go.c
index dd7fbab20..67470e067 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,9 +95,9 @@ go(S *s, int channels, const float *in, float *out)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 70+ modulation,
+      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 60+ modulation,
         lop(&s->so2.lag[0], 19, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 70-modulation,
+      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 60-modulation,
         lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
diff @ 2019-02-22 22:37:25 +0000
diff --git a/client/go.c b/client/go.c
index 67470e067..88b75296e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,9 +95,9 @@ go(S *s, int channels, const float *in, float *out)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 60+ modulation,
+      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 50+ modulation,
         lop(&s->so2.lag[0], 19, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 60-modulation,
+      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 50-modulation,
         lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
diff @ 2019-02-22 22:37:33 +0000
diff --git a/client/go.c b/client/go.c
index 88b75296e..f0da32c10 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,9 +95,9 @@ go(S *s, int channels, const float *in, float *out)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 50+ modulation,
+      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 45+ modulation,
         lop(&s->so2.lag[0], 19, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 50-modulation,
+      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 45-modulation,
         lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
diff @ 2019-02-22 22:37:41 +0000
diff --git a/client/go.c b/client/go.c
index f0da32c10..86fa9f7ca 100644
--- a/client/go.c
+++ b/client/go.c
@@ -110,7 +110,7 @@ go(S *s, int channels, const float *in, float *out)
       sample band[2];
       for (int c = 0; c < 2; ++c)
       {
-        band[c] = biquad(bandpass(&s->multiband[o][c], 10 * pow(2, o), flatq), input[c]);
+        band[c] = biquad(bandpass(&s->multiband[o][c], 15 * pow(2, o), flatq), input[c]);
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
       sample g = 12 / (o + 1);
diff @ 2019-02-22 22:38:02 +0000
diff --git a/client/go.c b/client/go.c
index 86fa9f7ca..69c5478f8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,7 +96,7 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 45+ modulation,
-        lop(&s->so2.lag[0], 19, 1e-3), feedback[c]);
+        lop(&s->so2.lag[0], 12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 45-modulation,
         lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
diff @ 2019-02-22 22:38:18 +0000
diff --git a/client/go.c b/client/go.c
index 69c5478f8..8fb9ad663 100644
--- a/client/go.c
+++ b/client/go.c
@@ -90,8 +90,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 1000/(bpm/60) - modulation)
-      , delread4(&s->so2.echo[0].del, 1000/(bpm/60) + modulation)
+      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2 - modulation)
+      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-02-22 22:38:27 +0000
diff --git a/client/go.c b/client/go.c
index 8fb9ad663..7b892086e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -90,8 +90,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2 - modulation)
-      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2 + modulation)
+      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2 - modulation)
+      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2 + modulation)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-02-22 22:38:43 +0000
diff --git a/client/go.c b/client/go.c
index 7b892086e..0c8c6f631 100644
--- a/client/go.c
+++ b/client/go.c
@@ -90,8 +90,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2 - modulation)
-      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2 + modulation)
+      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2 - modulation/16)
+      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2 + modulation/16)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-02-22 22:38:50 +0000
diff --git a/client/go.c b/client/go.c
index 0c8c6f631..8a605abb9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -90,8 +90,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2 - modulation/16)
-      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2 + modulation/16)
+      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2 - modulation/16)
+      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2 + modulation/16)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-02-22 22:39:31 +0000
diff --git a/client/go.c b/client/go.c
index 8a605abb9..b16d70ed3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -105,6 +105,7 @@ go(S *s, int channels, const float *in, float *out)
     // multiband compressor
     sample input[2] = { feedback[0], feedback[1] };
     sample output[2] = { 0, 0 };
+    sample gsum = 0;
     for (int o = 0; o < OCTAVES; ++o)
     {
       sample band[2];
@@ -113,12 +114,13 @@ go(S *s, int channels, const float *in, float *out)
         band[c] = biquad(bandpass(&s->multiband[o][c], 15 * pow(2, o), flatq), input[c]);
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
-      sample g = 12 / (o + 1);
+      sample g = 1 / (o + 1);
+      gsum += g;
       output[0] += band[0] * g;
       output[1] += band[1] * g;
     }
-    feedback[0] = output[0];
-    feedback[1] = output[1];
+    feedback[0] = output[0] / gsum;
+    feedback[1] = output[1] / gsum;
 
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-02-22 22:39:37 +0000
diff --git a/client/go.c b/client/go.c
index b16d70ed3..c0c85a067 100644
--- a/client/go.c
+++ b/client/go.c
@@ -114,7 +114,7 @@ go(S *s, int channels, const float *in, float *out)
         band[c] = biquad(bandpass(&s->multiband[o][c], 15 * pow(2, o), flatq), input[c]);
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
-      sample g = 1 / (o + 1);
+      sample g = 10 / (o + 1);
       gsum += g;
       output[0] += band[0] * g;
       output[1] += band[1] * g;
diff @ 2019-02-22 22:40:10 +0000
diff --git a/client/go.c b/client/go.c
index c0c85a067..cafdf97c8 100644
--- a/client/go.c
+++ b/client/go.c
@@ -111,7 +111,7 @@ go(S *s, int channels, const float *in, float *out)
       sample band[2];
       for (int c = 0; c < 2; ++c)
       {
-        band[c] = biquad(bandpass(&s->multiband[o][c], 15 * pow(2, o), flatq), input[c]);
+        band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq), input[c]);
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
       sample g = 10 / (o + 1);
diff @ 2019-02-22 22:40:19 +0000
diff --git a/client/go.c b/client/go.c
index cafdf97c8..eef4f5e2e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -90,8 +90,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2 - modulation/16)
-      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2 + modulation/16)
+      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2 - modulation/16)
+      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2 + modulation/16)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-02-22 22:40:26 +0000
diff --git a/client/go.c b/client/go.c
index eef4f5e2e..0d7e7bd90 100644
--- a/client/go.c
+++ b/client/go.c
@@ -90,8 +90,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2 - modulation/16)
-      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2 + modulation/16)
+      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2 - modulation/16)
+      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2 + modulation/16)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-02-22 22:40:35 +0000
diff --git a/client/go.c b/client/go.c
index 0d7e7bd90..710dc48e3 100644
--- a/client/go.c
+++ b/client/go.c
@@ -90,8 +90,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
     sample modulation = 1 * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2 - modulation/16)
-      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2 + modulation/16)
+      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2 - modulation/16)
+      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2/2 + modulation/16)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-02-22 22:40:47 +0000
diff --git a/client/go.c b/client/go.c
index 710dc48e3..f0248ee31 100644
--- a/client/go.c
+++ b/client/go.c
@@ -88,7 +88,7 @@ go(S *s, int channels, const float *in, float *out)
   {
     // modulate delay times
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
-    sample modulation = 1 * cos(twopi * p);
+    sample modulation = 1.1 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2 - modulation/16)
       , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2/2 + modulation/16)
diff @ 2019-02-22 22:40:53 +0000
diff --git a/client/go.c b/client/go.c
index f0248ee31..5cb7ed7cb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -88,7 +88,7 @@ go(S *s, int channels, const float *in, float *out)
   {
     // modulate delay times
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
-    sample modulation = 1.1 * cos(twopi * p);
+    sample modulation = 1.2 * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2 - modulation/16)
       , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2/2 + modulation/16)
diff @ 2019-02-22 22:41:21 +0000
diff --git a/client/go.c b/client/go.c
index 5cb7ed7cb..1983e8db7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -88,7 +88,7 @@ go(S *s, int channels, const float *in, float *out)
   {
     // modulate delay times
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
-    sample modulation = 1.2 * cos(twopi * p);
+    sample modulation = (1 + 0.1 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2 - modulation/16)
       , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2/2 + modulation/16)
diff @ 2019-02-22 22:41:29 +0000
diff --git a/client/go.c b/client/go.c
index 1983e8db7..a203e2d63 100644
--- a/client/go.c
+++ b/client/go.c
@@ -88,7 +88,7 @@ go(S *s, int channels, const float *in, float *out)
   {
     // modulate delay times
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
-    sample modulation = (1 + 0.1 * cos(twopi * p)) * cos(twopi * p);
+    sample modulation = (1 + 0.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2 - modulation/16)
       , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2/2 + modulation/16)
diff @ 2019-02-22 22:41:47 +0000
diff --git a/client/go.c b/client/go.c
index a203e2d63..c7bca3b7d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -119,8 +119,8 @@ go(S *s, int channels, const float *in, float *out)
       output[0] += band[0] * g;
       output[1] += band[1] * g;
     }
-    feedback[0] = output[0] / gsum;
-    feedback[1] = output[1] / gsum;
+    feedback[0] = output[0] / gsum * 2;
+    feedback[1] = output[1] / gsum * 2;
 
     // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
diff @ 2019-02-22 22:42:04 +0000
diff --git a/client/go.c b/client/go.c
index c7bca3b7d..c722e3e5a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -129,7 +129,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 3200, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 20, 320, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:42:10 +0000
diff --git a/client/go.c b/client/go.c
index c722e3e5a..2b7f11009 100644
--- a/client/go.c
+++ b/client/go.c
@@ -129,7 +129,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 20, 320, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 300, 320, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:42:14 +0000
diff --git a/client/go.c b/client/go.c
index 2b7f11009..d8d8a60d6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -129,7 +129,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 300, 320, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 3000, 320, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:42:24 +0000
diff --git a/client/go.c b/client/go.c
index d8d8a60d6..62368a8de 100644
--- a/client/go.c
+++ b/client/go.c
@@ -129,7 +129,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 3000, 320, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 3000, 30, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:42:39 +0000
diff --git a/client/go.c b/client/go.c
index 62368a8de..3259cbb2d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,9 +95,9 @@ go(S *s, int channels, const float *in, float *out)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 45+ modulation,
+      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 40+ modulation,
         lop(&s->so2.lag[0], 12, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 45-modulation,
+      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 40-modulation,
         lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
diff @ 2019-02-22 22:42:52 +0000
diff --git a/client/go.c b/client/go.c
index 3259cbb2d..7f5d79248 100644
--- a/client/go.c
+++ b/client/go.c
@@ -95,9 +95,9 @@ go(S *s, int channels, const float *in, float *out)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
-      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 40+ modulation,
+      sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 35+ modulation,
         lop(&s->so2.lag[0], 12, 1e-3), feedback[c]);
-      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 40-modulation,
+      sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
         lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
diff @ 2019-02-22 22:43:05 +0000
diff --git a/client/go.c b/client/go.c
index 7f5d79248..7dda45b25 100644
--- a/client/go.c
+++ b/client/go.c
@@ -90,8 +90,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
     sample modulation = (1 + 0.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2 - modulation/16)
-      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2/2 + modulation/16)
+      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2/2 - modulation/16)
+      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2/2/2 + modulation/16)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-02-22 22:43:16 +0000
diff --git a/client/go.c b/client/go.c
index 7dda45b25..ce7364644 100644
--- a/client/go.c
+++ b/client/go.c
@@ -87,7 +87,7 @@ go(S *s, int channels, const float *in, float *out)
   sample so2[2] = { 0, 0 };
   {
     // modulate delay times
-    sample p = phasor(&s->so2.phase, 2*2*bpm/60/64);
+    sample p = phasor(&s->so2.phase, 2*2*2*bpm/60/64);
     sample modulation = (1 + 0.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2/2 - modulation/16)
diff @ 2019-02-22 22:43:25 +0000
diff --git a/client/go.c b/client/go.c
index ce7364644..805da62c4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -87,7 +87,7 @@ go(S *s, int channels, const float *in, float *out)
   sample so2[2] = { 0, 0 };
   {
     // modulate delay times
-    sample p = phasor(&s->so2.phase, 2*2*2*bpm/60/64);
+    sample p = phasor(&s->so2.phase, 2*2*2*2*bpm/60/64);
     sample modulation = (1 + 0.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2/2 - modulation/16)
diff @ 2019-02-22 22:43:35 +0000
diff --git a/client/go.c b/client/go.c
index 805da62c4..e126343a6 100644
--- a/client/go.c
+++ b/client/go.c
@@ -87,7 +87,7 @@ go(S *s, int channels, const float *in, float *out)
   sample so2[2] = { 0, 0 };
   {
     // modulate delay times
-    sample p = phasor(&s->so2.phase, 2*2*2*2*bpm/60/64);
+    sample p = phasor(&s->so2.phase, 2*2*2*2*2*bpm/60/64);
     sample modulation = (1 + 0.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2/2 - modulation/16)
diff @ 2019-02-22 22:43:42 +0000
diff --git a/client/go.c b/client/go.c
index e126343a6..afbd051c4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -87,7 +87,7 @@ go(S *s, int channels, const float *in, float *out)
   sample so2[2] = { 0, 0 };
   {
     // modulate delay times
-    sample p = phasor(&s->so2.phase, 2*2*2*2*2*bpm/60/64);
+    sample p = phasor(&s->so2.phase, 2*2*2*2*2*2*bpm/60/64);
     sample modulation = (1 + 0.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2/2 - modulation/16)
diff @ 2019-02-22 22:43:49 +0000
diff --git a/client/go.c b/client/go.c
index afbd051c4..7fea8defa 100644
--- a/client/go.c
+++ b/client/go.c
@@ -87,7 +87,7 @@ go(S *s, int channels, const float *in, float *out)
   sample so2[2] = { 0, 0 };
   {
     // modulate delay times
-    sample p = phasor(&s->so2.phase, 2*2*2*2*2*2*bpm/60/64);
+    sample p = phasor(&s->so2.phase, 2*2*2*2*2*2*2*bpm/60/64);
     sample modulation = (1 + 0.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2/2 - modulation/16)
diff @ 2019-02-22 22:44:02 +0000
diff --git a/client/go.c b/client/go.c
index 7fea8defa..f523857ef 100644
--- a/client/go.c
+++ b/client/go.c
@@ -87,7 +87,7 @@ go(S *s, int channels, const float *in, float *out)
   sample so2[2] = { 0, 0 };
   {
     // modulate delay times
-    sample p = phasor(&s->so2.phase, 2*2*2*2*2*2*2*bpm/60/64);
+    sample p = phasor(&s->so2.phase, 2*2*2*2*2*2*2*2*bpm/60/64);
     sample modulation = (1 + 0.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2/2 - modulation/16)
diff @ 2019-02-22 22:44:11 +0000
diff --git a/client/go.c b/client/go.c
index f523857ef..4250f5fb4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -88,7 +88,7 @@ go(S *s, int channels, const float *in, float *out)
   {
     // modulate delay times
     sample p = phasor(&s->so2.phase, 2*2*2*2*2*2*2*2*bpm/60/64);
-    sample modulation = (1 + 0.5 * cos(twopi * p)) * cos(twopi * p);
+    sample modulation = (2 + 0.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2/2 - modulation/16)
       , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2/2/2 + modulation/16)
diff @ 2019-02-22 22:44:17 +0000
diff --git a/client/go.c b/client/go.c
index 4250f5fb4..9d1510239 100644
--- a/client/go.c
+++ b/client/go.c
@@ -88,7 +88,7 @@ go(S *s, int channels, const float *in, float *out)
   {
     // modulate delay times
     sample p = phasor(&s->so2.phase, 2*2*2*2*2*2*2*2*bpm/60/64);
-    sample modulation = (2 + 0.5 * cos(twopi * p)) * cos(twopi * p);
+    sample modulation = (2 + 1.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2/2 - modulation/16)
       , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2/2/2 + modulation/16)
diff @ 2019-02-22 22:44:43 +0000
diff --git a/client/go.c b/client/go.c
index 9d1510239..d3ee73756 100644
--- a/client/go.c
+++ b/client/go.c
@@ -87,7 +87,7 @@ go(S *s, int channels, const float *in, float *out)
   sample so2[2] = { 0, 0 };
   {
     // modulate delay times
-    sample p = phasor(&s->so2.phase, 2*2*2*2*2*2*2*2*bpm/60/64);
+    sample p = phasor(&s->so2.phase, bpm/60/64);
     sample modulation = (2 + 1.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
       { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2/2 - modulation/16)
diff @ 2019-02-22 22:44:53 +0000
diff --git a/client/go.c b/client/go.c
index d3ee73756..c552d5396 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,9 +96,9 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 35+ modulation,
-        lop(&s->so2.lag[0], 12, 1e-3), feedback[c]);
+        lop(&s->so2.lag[0], 0, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
-        lop(&s->so2.lag[1], -12, 1e-3), down);
+        lop(&s->so2.lag[1], 0, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
 
diff @ 2019-02-22 22:44:57 +0000
diff --git a/client/go.c b/client/go.c
index c552d5396..f529f629f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,9 +96,9 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 35+ modulation,
-        lop(&s->so2.lag[0], 0, 1e-3), feedback[c]);
+        lop(&s->so2.lag[0], 0, 1e-4), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
-        lop(&s->so2.lag[1], 0, 1e-3), down);
+        lop(&s->so2.lag[1], 0, 1e-4), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
 
diff @ 2019-02-22 22:45:33 +0000
diff --git a/client/go.c b/client/go.c
index f529f629f..238a67f5b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -143,7 +143,7 @@ go(S *s, int channels, const float *in, float *out)
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 2);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./32);
     sample rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2019-02-22 22:45:45 +0000
diff --git a/client/go.c b/client/go.c
index 238a67f5b..3525f0d0b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -153,8 +153,8 @@ go(S *s, int channels, const float *in, float *out)
 //#define feedback es
 //#undef feedback
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.01, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.01, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-02-22 22:45:55 +0000
diff --git a/client/go.c b/client/go.c
index 3525f0d0b..67c798934 100644
--- a/client/go.c
+++ b/client/go.c
@@ -153,8 +153,8 @@ go(S *s, int channels, const float *in, float *out)
 //#define feedback es
 //#undef feedback
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.01, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.01, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.1, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.1, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-02-22 22:46:06 +0000
diff --git a/client/go.c b/client/go.c
index 67c798934..6444698f9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -143,7 +143,7 @@ go(S *s, int channels, const float *in, float *out)
     sample t = twopi * p;
     sample co = cos(t);
     sample si = sin(t);
-    sample ldelms = 60000 / bpm * (p < 0.75 ? 1 : 1./32);
+    sample ldelms = 60000 / bpm * (p < 0.75 ? 1./3 : 1./32);
     sample rdelms = ldelms;
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
diff @ 2019-02-22 22:46:21 +0000
diff --git a/client/go.c b/client/go.c
index 6444698f9..f2e793b6f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -144,7 +144,7 @@ go(S *s, int channels, const float *in, float *out)
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./3 : 1./32);
-    sample rdelms = ldelms;
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./3 : 1./32);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-02-22 22:46:26 +0000
diff --git a/client/go.c b/client/go.c
index f2e793b6f..8519ba83f 100644
--- a/client/go.c
+++ b/client/go.c
@@ -144,7 +144,7 @@ go(S *s, int channels, const float *in, float *out)
     sample co = cos(t);
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./3 : 1./32);
-    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./3 : 1./32);
+    sample rdelms = 60000 / bpm * (p < 0.5 ? 1./3 : 1./48);
     ldelms = lop(&s->elop[0], ldelms, 5);
     rdelms = lop(&s->elop[1], rdelms, 5);
     sample el = delread4(&s->edelay1, ldelms + co);
diff @ 2019-02-22 22:46:31 +0000
diff --git a/client/go.c b/client/go.c
index 8519ba83f..bffe2937a 100644
--- a/client/go.c
+++ b/client/go.c
@@ -153,8 +153,8 @@ go(S *s, int channels, const float *in, float *out)
 //#define feedback es
 //#undef feedback
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.1, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.1, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.2, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.2, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-02-22 22:46:42 +0000
diff --git a/client/go.c b/client/go.c
index bffe2937a..13078f2d7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -145,8 +145,8 @@ go(S *s, int channels, const float *in, float *out)
     sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./3 : 1./32);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./3 : 1./48);
-    ldelms = lop(&s->elop[0], ldelms, 5);
-    rdelms = lop(&s->elop[1], rdelms, 5);
+    ldelms = lop(&s->elop[0], ldelms, 2);
+    rdelms = lop(&s->elop[1], rdelms, 2);
     sample el = delread4(&s->edelay1, ldelms + co);
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
diff @ 2019-02-22 22:46:51 +0000
diff --git a/client/go.c b/client/go.c
index 13078f2d7..f2e90724d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -153,8 +153,8 @@ go(S *s, int channels, const float *in, float *out)
 //#define feedback es
 //#undef feedback
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.2, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.2, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.3, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.3, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-02-22 22:47:04 +0000
diff --git a/client/go.c b/client/go.c
index f2e90724d..8133a55f4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -153,8 +153,8 @@ go(S *s, int channels, const float *in, float *out)
 //#define feedback es
 //#undef feedback
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.3, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.3, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.4, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.4, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-02-22 22:47:33 +0000
diff --git a/client/go.c b/client/go.c
index 8133a55f4..229b765e1 100644
--- a/client/go.c
+++ b/client/go.c
@@ -141,8 +141,8 @@ go(S *s, int channels, const float *in, float *out)
     s->edelay2.length = 4 * SR;
     sample p = phasor(&s->ephase, bpm / 60 / 8);
     sample t = twopi * p;
-    sample co = cos(t);
-    sample si = sin(t);
+    sample co = cos(2 * t);
+    sample si = sin(3 * t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./3 : 1./32);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./3 : 1./48);
     ldelms = lop(&s->elop[0], ldelms, 2);
diff @ 2019-02-22 22:47:45 +0000
diff --git a/client/go.c b/client/go.c
index 229b765e1..d4ea98e9e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -141,7 +141,7 @@ go(S *s, int channels, const float *in, float *out)
     s->edelay2.length = 4 * SR;
     sample p = phasor(&s->ephase, bpm / 60 / 8);
     sample t = twopi * p;
-    sample co = cos(2 * t);
+    sample co = cos(5 * t);
     sample si = sin(3 * t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./3 : 1./32);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./3 : 1./48);
diff @ 2019-02-22 22:48:07 +0000
diff --git a/client/go.c b/client/go.c
index d4ea98e9e..8877d8005 100644
--- a/client/go.c
+++ b/client/go.c
@@ -153,8 +153,8 @@ go(S *s, int channels, const float *in, float *out)
 //#define feedback es
 //#undef feedback
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.4, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.4, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-02-22 22:48:16 +0000
diff --git a/client/go.c b/client/go.c
index 8877d8005..da4e9e229 100644
--- a/client/go.c
+++ b/client/go.c
@@ -153,8 +153,8 @@ go(S *s, int channels, const float *in, float *out)
 //#define feedback es
 //#undef feedback
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.5, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.5, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.6, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.6, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-02-22 22:48:33 +0000
diff --git a/client/go.c b/client/go.c
index da4e9e229..224a00048 100644
--- a/client/go.c
+++ b/client/go.c
@@ -153,8 +153,8 @@ go(S *s, int channels, const float *in, float *out)
 //#define feedback es
 //#undef feedback
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.6, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.6, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.7, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.7, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-02-22 22:48:51 +0000
diff --git a/client/go.c b/client/go.c
index 224a00048..692c95ccf 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,9 +96,9 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 35+ modulation,
-        lop(&s->so2.lag[0], 0, 1e-4), feedback[c]);
+        lop(&s->so2.lag[0], -12, 1e-4), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
-        lop(&s->so2.lag[1], 0, 1e-4), down);
+        lop(&s->so2.lag[1], -12, 1e-4), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
 
diff @ 2019-02-22 22:48:59 +0000
diff --git a/client/go.c b/client/go.c
index 692c95ccf..94b7c0bc9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,9 +96,9 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 35+ modulation,
-        lop(&s->so2.lag[0], -12, 1e-4), feedback[c]);
+        lop(&s->so2.lag[0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
-        lop(&s->so2.lag[1], -12, 1e-4), down);
+        lop(&s->so2.lag[1], -12, 1e-3), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
 
diff @ 2019-02-22 22:49:45 +0000
diff --git a/client/go.c b/client/go.c
index 94b7c0bc9..d11976a59 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,9 +96,9 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 35+ modulation,
-        lop(&s->so2.lag[0], -12, 1e-3), feedback[c]);
+        lop(&s->so2.lag[0], -12, 1e-2), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
-        lop(&s->so2.lag[1], -12, 1e-3), down);
+        lop(&s->so2.lag[1], -12, 1e-2), down);
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
 
diff @ 2019-02-22 22:50:16 +0000
diff --git a/client/go.c b/client/go.c
index d11976a59..66238ad9e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -90,8 +90,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, bpm/60/64);
     sample modulation = (2 + 1.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2/2/2 - modulation/16)
-      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2/2/2 + modulation/16)
+      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2 - modulation/16)
+      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2 + modulation/16)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-02-22 22:50:52 +0000
diff --git a/client/go.c b/client/go.c
index 66238ad9e..33eb39a74 100644
--- a/client/go.c
+++ b/client/go.c
@@ -90,8 +90,8 @@ go(S *s, int channels, const float *in, float *out)
     sample p = phasor(&s->so2.phase, bpm/60/64);
     sample modulation = (2 + 1.5 * cos(twopi * p)) * cos(twopi * p);
     sample feedback[2] =
-      { delread4(&s->so2.echo[1].del, 1000/(bpm/60)/2/2/2/2/2 - modulation/16)
-      , delread4(&s->so2.echo[0].del, 1000/(bpm/60)/2/2/2/2/2 + modulation/16)
+      { delread4(&s->so2.echo[1].del, 1000/(bpm/60) - modulation/16)
+      , delread4(&s->so2.echo[0].del, 1000/(bpm/60) + modulation/16)
       };
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
diff @ 2019-02-22 22:51:32 +0000
diff --git a/client/go.c b/client/go.c
index 33eb39a74..50d9e3912 100644
--- a/client/go.c
+++ b/client/go.c
@@ -114,7 +114,7 @@ go(S *s, int channels, const float *in, float *out)
         band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq), input[c]);
       }
       compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
-      sample g = 10 / (o + 1);
+      sample g = 1;
       gsum += g;
       output[0] += band[0] * g;
       output[1] += band[1] * g;
diff @ 2019-02-22 22:51:59 +0000
diff --git a/client/go.c b/client/go.c
index 50d9e3912..ae0a5c51d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -141,8 +141,8 @@ go(S *s, int channels, const float *in, float *out)
     s->edelay2.length = 4 * SR;
     sample p = phasor(&s->ephase, bpm / 60 / 8);
     sample t = twopi * p;
-    sample co = cos(5 * t);
-    sample si = sin(3 * t);
+    sample co = cos(t);
+    sample si = sin(t);
     sample ldelms = 60000 / bpm * (p < 0.75 ? 1./3 : 1./32);
     sample rdelms = 60000 / bpm * (p < 0.5 ? 1./3 : 1./48);
     ldelms = lop(&s->elop[0], ldelms, 2);
diff @ 2019-02-22 22:53:09 +0000
diff --git a/client/go.c b/client/go.c
index ae0a5c51d..c04d70997 100644
--- a/client/go.c
+++ b/client/go.c
@@ -102,27 +102,7 @@ go(S *s, int channels, const float *in, float *out)
       feedback[c] = sin(12 * feedback[c] - down - up);
     }
 
-    // multiband compressor
-    sample input[2] = { feedback[0], feedback[1] };
-    sample output[2] = { 0, 0 };
-    sample gsum = 0;
-    for (int o = 0; o < OCTAVES; ++o)
-    {
-      sample band[2];
-      for (int c = 0; c < 2; ++c)
-      {
-        band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq), input[c]);
-      }
-      compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
-      sample g = 1;
-      gsum += g;
-      output[0] += band[0] * g;
-      output[1] += band[1] * g;
-    }
-    feedback[0] = output[0] / gsum * 2;
-    feedback[1] = output[1] / gsum * 2;
-
-    // compress feedback
+        // compress feedback
     compress(so2, &s->so2.compress, 5, 10, 25, 48, feedback);
     sample gain = 1;
     so2[0] *= gain;
@@ -150,8 +130,28 @@ go(S *s, int channels, const float *in, float *out)
     sample el = delread4(&s->edelay1, ldelms + co);
     sample er = delread4(&s->edelay2, rdelms + si);
     sample es[2] = { co * el + si * er, -si * el + co * er };
-//#define feedback es
-//#undef feedback
+#define feedback es
+// multiband compressor
+    sample input[2] = { feedback[0], feedback[1] };
+    sample output[2] = { 0, 0 };
+    sample gsum = 0;
+    for (int o = 0; o < OCTAVES; ++o)
+    {
+      sample band[2];
+      for (int c = 0; c < 2; ++c)
+      {
+        band[c] = biquad(bandpass(&s->multiband[o][c], 20 * pow(2, o), flatq), input[c]);
+      }
+      compress(band, &s->multicomp[o], 5, 10, 25, 48, band);
+      sample g = 1;
+      gsum += g;
+      output[0] += band[0] * g;
+      output[1] += band[1] * g;
+    }
+    feedback[0] = output[0] / gsum * 2;
+    feedback[1] = output[1] / gsum * 2;
+#undef feedback
+
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
     es[0] = mix(mixdown[0], es[0], mix(0.7, pow(wrap(8 * p), 0.25), 0));
     es[1] = mix(mixdown[1], es[1], mix(0.7, pow(wrap(8 * p), 0.25), 0));
diff @ 2019-02-22 22:54:06 +0000
diff --git a/client/go.c b/client/go.c
index c04d70997..5800f9e05 100644
--- a/client/go.c
+++ b/client/go.c
@@ -153,8 +153,8 @@ go(S *s, int channels, const float *in, float *out)
 #undef feedback
 
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(0.7, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(0.7, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-02-22 22:54:33 +0000
diff --git a/client/go.c b/client/go.c
index 5800f9e05..3d6686465 100644
--- a/client/go.c
+++ b/client/go.c
@@ -135,7 +135,7 @@ go(S *s, int channels, const float *in, float *out)
     sample input[2] = { feedback[0], feedback[1] };
     sample output[2] = { 0, 0 };
     sample gsum = 0;
-    for (int o = 0; o < OCTAVES; ++o)
+    for (int o = 0; o < 0; ++o)
     {
       sample band[2];
       for (int c = 0; c < 2; ++c)
diff @ 2019-02-22 22:54:42 +0000
diff --git a/client/go.c b/client/go.c
index 3d6686465..f773c1b2c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -134,7 +134,7 @@ go(S *s, int channels, const float *in, float *out)
 // multiband compressor
     sample input[2] = { feedback[0], feedback[1] };
     sample output[2] = { 0, 0 };
-    sample gsum = 0;
+    sample gsum = 1;
     for (int o = 0; o < 0; ++o)
     {
       sample band[2];
diff @ 2019-02-22 22:54:57 +0000
diff --git a/client/go.c b/client/go.c
index f773c1b2c..572f27ed9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -153,8 +153,8 @@ go(S *s, int channels, const float *in, float *out)
 #undef feedback
 
     compress(es, &s->ecompress1, 5, 10, 25, 48, es);
-    es[0] = mix(mixdown[0], es[0], mix(1, pow(wrap(8 * p), 0.25), 0));
-    es[1] = mix(mixdown[1], es[1], mix(1, pow(wrap(8 * p), 0.25), 0));
+    es[0] = mix(mixdown[0], es[0], mix(0.1, pow(wrap(8 * p), 0.25), 0));
+    es[1] = mix(mixdown[1], es[1], mix(0.1, pow(wrap(8 * p), 0.25), 0));
     compress(es, &s->ecompress2, 5, 10, 25, 48, es);
     delwrite(&s->edelay1, es[0]);
     delwrite(&s->edelay2, es[1]);
diff @ 2019-02-22 22:55:15 +0000
diff --git a/client/go.c b/client/go.c
index 572f27ed9..f6d1a5823 100644
--- a/client/go.c
+++ b/client/go.c
@@ -78,7 +78,7 @@ go(S *s, int channels, const float *in, float *out)
 {
   if (s->reloaded)
   {
-    // memset(s, 0, sizeof(*s));
+  memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
   sample bpm = 100;
diff @ 2019-02-22 22:55:18 +0000
diff --git a/client/go.c b/client/go.c
index f6d1a5823..90f1c98a9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -78,7 +78,7 @@ go(S *s, int channels, const float *in, float *out)
 {
   if (s->reloaded)
   {
-  memset(s, 0, sizeof(*s));
+  //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
   sample bpm = 100;
diff @ 2019-02-22 22:56:11 +0000
diff --git a/client/go.c b/client/go.c
index 90f1c98a9..94b9002ee 100644
--- a/client/go.c
+++ b/client/go.c
@@ -99,7 +99,7 @@ go(S *s, int channels, const float *in, float *out)
         lop(&s->so2.lag[0], -12, 1e-2), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
         lop(&s->so2.lag[1], -12, 1e-2), down);
-      feedback[c] = sin(12 * feedback[c] - down - up);
+      feedback[c] = sin(1 * feedback[c] - down - up);
     }
 
         // compress feedback
diff @ 2019-02-22 22:56:15 +0000
diff --git a/client/go.c b/client/go.c
index 94b9002ee..3e756fe25 100644
--- a/client/go.c
+++ b/client/go.c
@@ -99,7 +99,7 @@ go(S *s, int channels, const float *in, float *out)
         lop(&s->so2.lag[0], -12, 1e-2), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
         lop(&s->so2.lag[1], -12, 1e-2), down);
-      feedback[c] = sin(1 * feedback[c] - down - up);
+      feedback[c] = -sin(1 * feedback[c] - down - up);
     }
 
         // compress feedback
diff @ 2019-02-22 22:56:59 +0000
diff --git a/client/go.c b/client/go.c
index 3e756fe25..f428db274 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,9 +96,9 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 35+ modulation,
-        lop(&s->so2.lag[0], -12, 1e-2), feedback[c]);
+        lop(&s->so2.lag[0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
-        lop(&s->so2.lag[1], -12, 1e-2), down);
+        lop(&s->so2.lag[1], 12, 1e-3), down);
       feedback[c] = -sin(1 * feedback[c] - down - up);
     }
 
diff @ 2019-02-22 22:57:30 +0000
diff --git a/client/go.c b/client/go.c
index f428db274..da86ed85d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,7 +109,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 3000, 30, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 3000, 60, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:57:48 +0000
diff --git a/client/go.c b/client/go.c
index da86ed85d..87f3df607 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,7 +109,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 3000, 60, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 3000, 120, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:58:01 +0000
diff --git a/client/go.c b/client/go.c
index 87f3df607..a018c3661 100644
--- a/client/go.c
+++ b/client/go.c
@@ -109,7 +109,7 @@ go(S *s, int channels, const float *in, float *out)
     so2[1] *= gain;
     // write to delay lines
     for (int c = 0; c < 2; ++c) {
-      so2echo(&s->so2.echo[c], 3000, 120, tanh(so2[c] + in[c]));
+      so2echo(&s->so2.echo[c], 3000, 160, tanh(so2[c] + in[c]));
     }
     mixdown[0] += so2[0];
     mixdown[1] += so2[1];
diff @ 2019-02-22 22:58:23 +0000
diff --git a/client/go.c b/client/go.c
index a018c3661..38b34175e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -99,7 +99,7 @@ go(S *s, int channels, const float *in, float *out)
         lop(&s->so2.lag[0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
         lop(&s->so2.lag[1], 12, 1e-3), down);
-      feedback[c] = -sin(1 * feedback[c] - down - up);
+      feedback[c] = -sin(2 * feedback[c] - down - up);
     }
 
         // compress feedback
diff @ 2019-02-22 22:58:39 +0000
diff --git a/client/go.c b/client/go.c
index 38b34175e..54de1b857 100644
--- a/client/go.c
+++ b/client/go.c
@@ -98,7 +98,7 @@ go(S *s, int channels, const float *in, float *out)
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 35+ modulation,
         lop(&s->so2.lag[0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
-        lop(&s->so2.lag[1], 12, 1e-3), down);
+        lop(&s->so2.lag[1], 24, 1e-3), down);
       feedback[c] = -sin(2 * feedback[c] - down - up);
     }
 
diff @ 2019-02-22 22:58:42 +0000
diff --git a/client/go.c b/client/go.c
index 54de1b857..008a009a0 100644
--- a/client/go.c
+++ b/client/go.c
@@ -98,7 +98,7 @@ go(S *s, int channels, const float *in, float *out)
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 35+ modulation,
         lop(&s->so2.lag[0], -12, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
-        lop(&s->so2.lag[1], 24, 1e-3), down);
+        lop(&s->so2.lag[1], 24, 1e-4), down);
       feedback[c] = -sin(2 * feedback[c] - down - up);
     }
 
diff @ 2019-02-22 22:58:50 +0000
diff --git a/client/go.c b/client/go.c
index 008a009a0..492feb664 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,7 +96,7 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 35+ modulation,
-        lop(&s->so2.lag[0], -12, 1e-3), feedback[c]);
+        lop(&s->so2.lag[0], -24, 1e-4), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
         lop(&s->so2.lag[1], 24, 1e-4), down);
       feedback[c] = -sin(2 * feedback[c] - down - up);
diff @ 2019-02-22 22:59:10 +0000
diff --git a/client/go.c b/client/go.c
index 492feb664..4fbd99a8c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -96,9 +96,9 @@ go(S *s, int channels, const float *in, float *out)
     // pitchshift feedback
     for (int c = 0; c < 2; ++c) {
       sample down = pitchshift(&s->so2.shift[2 * c + 0], 1, 35+ modulation,
-        lop(&s->so2.lag[0], -24, 1e-4), feedback[c]);
+        lop(&s->so2.lag[0], -24, 1e-3), feedback[c]);
       sample up   = pitchshift(&s->so2.shift[2 * c + 1], 1, 35-modulation,
-        lop(&s->so2.lag[1], 24, 1e-4), down);
+        lop(&s->so2.lag[1], 24, 1e-3), down);
       feedback[c] = -sin(2 * feedback[c] - down - up);
     }
 
diff @ 2019-02-22 22:59:55 +0000
diff --git a/client/go.c b/client/go.c
index 4fbd99a8c..08defc008 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100;
+  sample bpm = 100 - lop(&s->lag, 100, 1e-4);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff --git a/client/go.h b/client/go.h
index 78f03b79c..3025cf66b 100644
--- a/client/go.h
+++ b/client/go.h
@@ -21,6 +21,6 @@ typedef struct
   LOP elop[2];
   PHASOR ephase;
   // = append only data structure ======================================
-
+  LOP lag;
 } S;
 #endif
diff @ 2019-02-22 23:00:00 +0000
diff --git a/client/go.c b/client/go.c
index 08defc008..6f0367fd4 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 - lop(&s->lag, 100, 1e-4);
+  sample bpm = 100 + lop(&s->lag, 100, 1e-4);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:00:13 +0000
diff --git a/client/go.c b/client/go.c
index 6f0367fd4..5b327e2ce 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 100, 1e-4);
+  sample bpm = 100 + lop(&s->lag, 200, 1e-4);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:00:27 +0000
diff --git a/client/go.c b/client/go.c
index 5b327e2ce..1fc8f5fde 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 200, 1e-4);
+  sample bpm = 100 + lop(&s->lag, 400, 1e-4);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:00:39 +0000
diff --git a/client/go.c b/client/go.c
index 1fc8f5fde..dc162e815 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 400, 1e-4);
+  sample bpm = 100 + lop(&s->lag, 800, 1e-4);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:00:42 +0000
diff --git a/client/go.c b/client/go.c
index dc162e815..3f386f3d7 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 800, 1e-4);
+  sample bpm = 100 + lop(&s->lag, 800, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:00:47 +0000
diff --git a/client/go.c b/client/go.c
index 3f386f3d7..cc46acf14 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 800, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 1000, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:00:51 +0000
diff --git a/client/go.c b/client/go.c
index cc46acf14..625c15c5b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 1000, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 2000, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:00:54 +0000
diff --git a/client/go.c b/client/go.c
index 625c15c5b..825680817 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 2000, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 4000, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:00:58 +0000
diff --git a/client/go.c b/client/go.c
index 825680817..0e883b464 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 4000, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 8000, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:01 +0000
diff --git a/client/go.c b/client/go.c
index 0e883b464..6739a4981 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 8000, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:05 +0000
diff --git a/client/go.c b/client/go.c
index 6739a4981..69b72a983 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 16000, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000*2, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:08 +0000
diff --git a/client/go.c b/client/go.c
index 69b72a983..76227a1b2 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 16000*2, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000*2*2, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:10 +0000
diff --git a/client/go.c b/client/go.c
index 76227a1b2..94af56c3e 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 16000*2*2, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000*2*2*2, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:12 +0000
diff --git a/client/go.c b/client/go.c
index 94af56c3e..be2db829d 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 16000*2*2*2, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:15 +0000
diff --git a/client/go.c b/client/go.c
index be2db829d..ad6c7e5c9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*., 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:17 +0000
diff --git a/client/go.c b/client/go.c
index ad6c7e5c9..b1f9390eb 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*., 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*2., 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:19 +0000
diff --git a/client/go.c b/client/go.c
index b1f9390eb..a93936399 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*2., 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*2.*2, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:27 +0000
diff --git a/client/go.c b/client/go.c
index a93936399..86e428a8c 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*2.*2, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*2.*2*2, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:35 +0000
diff --git a/client/go.c b/client/go.c
index 86e428a8c..d5ed24e4b 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*2.*2*2, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*2.*2*2*2, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:39 +0000
diff --git a/client/go.c b/client/go.c
index d5ed24e4b..cb338bdb9 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*2.*2*2*2, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*2.*2*2*2*2, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:43 +0000
diff --git a/client/go.c b/client/go.c
index cb338bdb9..8713be989 100644
--- a/client/go.c
+++ b/client/go.c
@@ -81,7 +81,7 @@ go(S *s, int channels, const float *in, float *out)
   //memset(s, 0, sizeof(*s));
   }
   sample mixdown[2] = { 0, 0 };
-  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*2.*2*2*2*2, 1e-3);
+  sample bpm = 100 + lop(&s->lag, 16000*2*2*2*2*2.*2*2*2*2*2, 1e-3);
 
   // = 1 = sea organ 2 =================================================
   sample so2[2] = { 0, 0 };
diff @ 2019-02-22 23:01:51 +0000
diff --git a/client/go.c b/client/go.c
index 8713be989..950093aca 100644
--- a/client/go.c
+++ b/client/go.c
@@ -165,7 +165,7 @@ go(S *s, int channels, const float *in, float *out)
   // = m = mixdown =====================================================
   {
     compress(mixdown, &s->mixdown, 5, 10, 25, 48, mixdown);
-    sample volume = 1;
+    sample volume = 0;
     mixdown[0] *= volume;
     mixdown[1] *= volume;
     for (int c = 0; c < channels && c < 2; ++c)

the end