session-2016-11-17-203042

clive

clive is a C audio live-coding skeleton. It allows you to hot-swap DSP processing callbacks, providing not much more than automatic C code recompilation, object code reloading, and state preservation.

diff @ 2016-11-17 20:31:05 +0000
diff --git a/src/go.c b/src/go.c
index 90f3350..d70414e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -21,7 +21,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
   // noise
   double n = pink(&s->pink);
-  double q = 10;
+  double q = 20;
   n = vcf(&s->bass, n, 50, q) * q;
   n = sin(n);
 
diff @ 2016-11-17 20:31:11 +0000
diff --git a/src/go.c b/src/go.c
index d70414e..e2b5744 100644
--- a/src/go.c
+++ b/src/go.c
@@ -21,7 +21,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
   // noise
   double n = pink(&s->pink);
-  double q = 20;
+  double q = 40;
   n = vcf(&s->bass, n, 50, q) * q;
   n = sin(n);
 
diff @ 2016-11-17 20:31:17 +0000
diff --git a/src/go.c b/src/go.c
index e2b5744..d2bfc76 100644
--- a/src/go.c
+++ b/src/go.c
@@ -16,7 +16,7 @@ int go(S *s, int channels, const float *in, float *out) {
   // trigger impulse on reload
   if (s->reloaded) {
     s->reloaded = 0;
-    pink_init(&s->pink, 10, 0xBeefCafe);
+    //pink_init(&s->pink, 10, 0xBeefCafe);
   }
 
   // noise
diff @ 2016-11-17 20:31:29 +0000
diff --git a/src/go.c b/src/go.c
index d2bfc76..f9e6a58 100644
--- a/src/go.c
+++ b/src/go.c
@@ -8,6 +8,7 @@ typedef struct {
   COMPRESS mixdown;
   PINK pink;
   VCF bass;
+  PHASOR psh;
 } S;
 
 // per sample DSP callback
@@ -21,7 +22,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
   // noise
   double n = pink(&s->pink);
-  double q = 40;
+  double q = 60;
   n = vcf(&s->bass, n, 50, q) * q;
   n = sin(n);
 
diff @ 2016-11-17 20:31:38 +0000
diff --git a/src/go.c b/src/go.c
index f9e6a58..efff13b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -9,6 +9,7 @@ typedef struct {
   PINK pink;
   VCF bass;
   PHASOR psh;
+  SAMPHOLD sh[2];
 } S;
 
 // per sample DSP callback
@@ -22,7 +23,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
   // noise
   double n = pink(&s->pink);
-  double q = 60;
+  double q = 90;
   n = vcf(&s->bass, n, 50, q) * q;
   n = sin(n);
 
diff @ 2016-11-17 20:31:53 +0000
diff --git a/src/go.c b/src/go.c
index efff13b..aca6e9b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -25,6 +25,7 @@ int go(S *s, int channels, const float *in, float *out) {
   double n = pink(&s->pink);
   double q = 90;
   n = vcf(&s->bass, n, 50, q) * q;
+  double psh = phasor(&s->psh, 20000);
   n = sin(n);
 
   // mix down
diff @ 2016-11-17 20:32:15 +0000
diff --git a/src/go.c b/src/go.c
index aca6e9b..c4da643 100644
--- a/src/go.c
+++ b/src/go.c
@@ -27,11 +27,13 @@ int go(S *s, int channels, const float *in, float *out) {
   n = vcf(&s->bass, n, 50, q) * q;
   double psh = phasor(&s->psh, 20000);
   n = sin(n);
+  double ns[2];
+  ns[0] = samphold(&s->sh[0], n, psh);
 
   // mix down
   double mixdown[2] = { 0, 0 };
-  mixdown[0] += n;
-  mixdown[1] += n;
+  mixdown[0] += ns[0];
+  mixdown[1] += ns[0];
 
   // compress
   compress(mixdown, &s->mixdown, 5, 10, 25, 36, mixdown);
diff @ 2016-11-17 20:32:47 +0000
diff --git a/src/go.c b/src/go.c
index c4da643..fcfad65 100644
--- a/src/go.c
+++ b/src/go.c
@@ -10,6 +10,7 @@ typedef struct {
   VCF bass;
   PHASOR psh;
   SAMPHOLD sh[2];
+  LOP shf;
 } S;
 
 // per sample DSP callback
@@ -25,7 +26,7 @@ int go(S *s, int channels, const float *in, float *out) {
   double n = pink(&s->pink);
   double q = 90;
   n = vcf(&s->bass, n, 50, q) * q;
-  double psh = phasor(&s->psh, 20000);
+  double psh = phasor(&s->psh, 20000 - lop(&s->shf, 18000, 0.01));
   n = sin(n);
   double ns[2];
   ns[0] = samphold(&s->sh[0], n, psh);
diff @ 2016-11-17 20:33:01 +0000
diff --git a/src/go.c b/src/go.c
index fcfad65..a7776ec 100644
--- a/src/go.c
+++ b/src/go.c
@@ -30,11 +30,12 @@ int go(S *s, int channels, const float *in, float *out) {
   n = sin(n);
   double ns[2];
   ns[0] = samphold(&s->sh[0], n, psh);
+  ns[1] = samphold(&s->sh[0], n, wrap(psh + 0.5));
 
   // mix down
   double mixdown[2] = { 0, 0 };
   mixdown[0] += ns[0];
-  mixdown[1] += ns[0];
+  mixdown[1] += ns[1];
 
   // compress
   compress(mixdown, &s->mixdown, 5, 10, 25, 36, mixdown);
diff @ 2016-11-17 20:33:05 +0000
diff --git a/src/go.c b/src/go.c
index a7776ec..05f0450 100644
--- a/src/go.c
+++ b/src/go.c
@@ -30,7 +30,7 @@ int go(S *s, int channels, const float *in, float *out) {
   n = sin(n);
   double ns[2];
   ns[0] = samphold(&s->sh[0], n, psh);
-  ns[1] = samphold(&s->sh[0], n, wrap(psh + 0.5));
+  ns[1] = samphold(&s->sh[1], n, wrap(psh + 0.5));
 
   // mix down
   double mixdown[2] = { 0, 0 };
diff @ 2016-11-17 20:33:14 +0000
diff --git a/src/go.c b/src/go.c
index 05f0450..edd4e60 100644
--- a/src/go.c
+++ b/src/go.c
@@ -24,7 +24,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
   // noise
   double n = pink(&s->pink);
-  double q = 90;
+  double q = 150;
   n = vcf(&s->bass, n, 50, q) * q;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 18000, 0.01));
   n = sin(n);
diff @ 2016-11-17 20:33:27 +0000
diff --git a/src/go.c b/src/go.c
index edd4e60..2d09ea0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -25,7 +25,7 @@ int go(S *s, int channels, const float *in, float *out) {
   // noise
   double n = pink(&s->pink);
   double q = 150;
-  n = vcf(&s->bass, n, 50, q) * q;
+  n = vcf(&s->bass, n, 50, q) * q * 1.5;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 18000, 0.01));
   n = sin(n);
   double ns[2];
diff @ 2016-11-17 20:33:46 +0000
diff --git a/src/go.c b/src/go.c
index 2d09ea0..37f381a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -11,6 +11,8 @@ typedef struct {
   PHASOR psh;
   SAMPHOLD sh[2];
   LOP shf;
+  PHASOR clock;
+  double bpm;
 } S;
 
 // per sample DSP callback
@@ -32,6 +34,8 @@ int go(S *s, int channels, const float *in, float *out) {
   ns[0] = samphold(&s->sh[0], n, psh);
   ns[1] = samphold(&s->sh[1], n, wrap(psh + 0.5));
 
+
+
   // mix down
   double mixdown[2] = { 0, 0 };
   mixdown[0] += ns[0];
diff @ 2016-11-17 20:34:11 +0000
diff --git a/src/go.c b/src/go.c
index 37f381a..b536862 100644
--- a/src/go.c
+++ b/src/go.c
@@ -21,6 +21,7 @@ int go(S *s, int channels, const float *in, float *out) {
   // trigger impulse on reload
   if (s->reloaded) {
     s->reloaded = 0;
+    s->bpm = 133;
     //pink_init(&s->pink, 10, 0xBeefCafe);
   }
 
@@ -34,7 +35,8 @@ int go(S *s, int channels, const float *in, float *out) {
   ns[0] = samphold(&s->sh[0], n, psh);
   ns[1] = samphold(&s->sh[1], n, wrap(psh + 0.5));
 
-
+  // rhythm
+  double t = phasor(&s->clock, s->bpm / 60.0 / 64.0);
 
   // mix down
   double mixdown[2] = { 0, 0 };
diff @ 2016-11-17 20:35:01 +0000
diff --git a/src/go.c b/src/go.c
index b536862..a5b16e5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -38,10 +38,23 @@ int go(S *s, int channels, const float *in, float *out) {
   // rhythm
   double t = phasor(&s->clock, s->bpm / 60.0 / 64.0);
 
+  double k = 1 - wrap(16 * t);
+  k *= k;
+  k *= k;
+  k *= k;
+  k *= k;
+  k *= k;
+  k *= k;
+  k *= k;
+  k *= 12;
+  k = sin(twopi * k);
+  k *= 4;
+  k = tanh(k);
+
   // mix down
   double mixdown[2] = { 0, 0 };
-  mixdown[0] += ns[0];
-  mixdown[1] += ns[1];
+  mixdown[0] += ns[0] + k;
+  mixdown[1] += ns[1] + k;
 
   // compress
   compress(mixdown, &s->mixdown, 5, 10, 25, 36, mixdown);
diff @ 2016-11-17 20:35:05 +0000
diff --git a/src/go.c b/src/go.c
index a5b16e5..51590c9 100644
--- a/src/go.c
+++ b/src/go.c
@@ -45,7 +45,6 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= k;
   k *= k;
   k *= k;
-  k *= k;
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
diff @ 2016-11-17 20:35:08 +0000
diff --git a/src/go.c b/src/go.c
index 51590c9..b8fc028 100644
--- a/src/go.c
+++ b/src/go.c
@@ -44,7 +44,6 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= k;
   k *= k;
   k *= k;
-  k *= k;
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
diff @ 2016-11-17 20:35:55 +0000
diff --git a/src/go.c b/src/go.c
index b8fc028..55aeb2a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -13,6 +13,7 @@ typedef struct {
   LOP shf;
   PHASOR clock;
   double bpm;
+  BIQUAD morebass;
 } S;
 
 // per sample DSP callback
@@ -47,6 +48,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
+  k += biquad(highpass(&s->morebass, 50, 5), k);
   k = tanh(k);
 
   // mix down
diff @ 2016-11-17 20:36:02 +0000
diff --git a/src/go.c b/src/go.c
index 55aeb2a..2cd269e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -48,7 +48,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
-  k += biquad(highpass(&s->morebass, 50, 5), k);
+  k += biquad(highpass(&s->morebass, 50, 10), k);
   k = tanh(k);
 
   // mix down
diff @ 2016-11-17 20:36:06 +0000
diff --git a/src/go.c b/src/go.c
index 2cd269e..c3cc6dd 100644
--- a/src/go.c
+++ b/src/go.c
@@ -48,7 +48,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
-  k += biquad(highpass(&s->morebass, 50, 10), k);
+  k += biquad(highpass(&s->morebass, 50, 20), k);
   k = tanh(k);
 
   // mix down
diff @ 2016-11-17 20:36:10 +0000
diff --git a/src/go.c b/src/go.c
index c3cc6dd..abbf0cb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -48,7 +48,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
-  k += biquad(highpass(&s->morebass, 50, 20), k);
+  k += biquad(highpass(&s->morebass, 50, 40), k);
   k = tanh(k);
 
   // mix down
diff @ 2016-11-17 20:36:16 +0000
diff --git a/src/go.c b/src/go.c
index abbf0cb..da98ea2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -48,7 +48,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
-  k += biquad(highpass(&s->morebass, 50, 40), k);
+  k += biquad(highpass(&s->morebass, 50, 80), k);
   k = tanh(k);
 
   // mix down
diff @ 2016-11-17 20:36:23 +0000
diff --git a/src/go.c b/src/go.c
index da98ea2..0753cbc 100644
--- a/src/go.c
+++ b/src/go.c
@@ -48,7 +48,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
-  k += biquad(highpass(&s->morebass, 50, 80), k);
+  k += biquad(highpass(&s->morebass, 50, 160), k);
   k = tanh(k);
 
   // mix down
diff @ 2016-11-17 20:36:37 +0000
diff --git a/src/go.c b/src/go.c
index 0753cbc..7c469b4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -49,6 +49,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k = sin(twopi * k);
   k *= 4;
   k += biquad(highpass(&s->morebass, 50, 160), k);
+  k + sin(k)l
   k = tanh(k);
 
   // mix down
diff @ 2016-11-17 20:36:38 +0000
diff --git a/src/go.c b/src/go.c
index 7c469b4..ec274bf 100644
--- a/src/go.c
+++ b/src/go.c
@@ -49,7 +49,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k = sin(twopi * k);
   k *= 4;
   k += biquad(highpass(&s->morebass, 50, 160), k);
-  k + sin(k)l
+  k + sin(k);
   k = tanh(k);
 
   // mix down
diff @ 2016-11-17 20:36:43 +0000
diff --git a/src/go.c b/src/go.c
index ec274bf..08e1dd0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -49,7 +49,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k = sin(twopi * k);
   k *= 4;
   k += biquad(highpass(&s->morebass, 50, 160), k);
-  k + sin(k);
+  k += sin(k);
   k = tanh(k);
 
   // mix down
diff @ 2016-11-17 20:37:29 +0000
diff --git a/src/go.c b/src/go.c
index 08e1dd0..f30e042 100644
--- a/src/go.c
+++ b/src/go.c
@@ -52,10 +52,21 @@ int go(S *s, int channels, const float *in, float *out) {
   k += sin(k);
   k = tanh(k);
 
+  double sn = 1 - wrap(16 * t + 0.5);
+  sn *= sn;
+  sn *= sn;
+  sn *= sn;
+  sn *= sn;
+  sn *= sn;
+  sn *= sn;
+  sn *= noise();
+  sn *= 4;
+  sn = tanh(sn);
+
   // mix down
   double mixdown[2] = { 0, 0 };
-  mixdown[0] += ns[0] + k;
-  mixdown[1] += ns[1] + k;
+  mixdown[0] += ns[0] + k + sn;
+  mixdown[1] += ns[1] + k + sn;
 
   // compress
   compress(mixdown, &s->mixdown, 5, 10, 25, 36, mixdown);
diff @ 2016-11-17 20:38:13 +0000
diff --git a/src/go.c b/src/go.c
index f30e042..301d414 100644
--- a/src/go.c
+++ b/src/go.c
@@ -14,6 +14,7 @@ typedef struct {
   PHASOR clock;
   double bpm;
   BIQUAD morebass;
+  BIQUAD snare;
 } S;
 
 // per sample DSP callback
@@ -61,6 +62,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= sn;
   sn *= noise();
   sn *= 4;
+  sn += biquad(lowpass(s->snare, 300, 10), sn);
   sn = tanh(sn);
 
   // mix down
diff @ 2016-11-17 20:38:29 +0000
diff --git a/src/go.c b/src/go.c
index 301d414..256b725 100644
--- a/src/go.c
+++ b/src/go.c
@@ -62,7 +62,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= sn;
   sn *= noise();
   sn *= 4;
-  sn += biquad(lowpass(s->snare, 300, 10), sn);
+  sn += biquad(lowpass(&s->snare, 300, 10), sn);
   sn = tanh(sn);
 
   // mix down
diff @ 2016-11-17 20:38:33 +0000
diff --git a/src/go.c b/src/go.c
index 256b725..d89443c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -62,7 +62,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= sn;
   sn *= noise();
   sn *= 4;
-  sn += biquad(lowpass(&s->snare, 300, 10), sn);
+  sn += biquad(lowpass(&s->snare, 300, 20), sn);
   sn = tanh(sn);
 
   // mix down
diff @ 2016-11-17 20:38:38 +0000
diff --git a/src/go.c b/src/go.c
index d89443c..8b1e4e5 100644
--- a/src/go.c
+++ b/src/go.c
@@ -62,7 +62,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= sn;
   sn *= noise();
   sn *= 4;
-  sn += biquad(lowpass(&s->snare, 300, 20), sn);
+  sn += biquad(lowpass(&s->snare, 300, 30), sn);
   sn = tanh(sn);
 
   // mix down
diff @ 2016-11-17 20:38:42 +0000
diff --git a/src/go.c b/src/go.c
index 8b1e4e5..747d20c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -62,7 +62,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= sn;
   sn *= noise();
   sn *= 4;
-  sn += biquad(lowpass(&s->snare, 300, 30), sn);
+  sn += biquad(lowpass(&s->snare, 300, 50), sn);
   sn = tanh(sn);
 
   // mix down
diff @ 2016-11-17 20:38:46 +0000
diff --git a/src/go.c b/src/go.c
index 747d20c..31740b0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -62,7 +62,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= sn;
   sn *= noise();
   sn *= 4;
-  sn += biquad(lowpass(&s->snare, 300, 50), sn);
+  sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
   sn = tanh(sn);
 
   // mix down
diff @ 2016-11-17 20:38:59 +0000
diff --git a/src/go.c b/src/go.c
index 31740b0..e117888 100644
--- a/src/go.c
+++ b/src/go.c
@@ -63,6 +63,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= noise();
   sn *= 4;
   sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
+  sn += sin(sn);
   sn = tanh(sn);
 
   // mix down
diff @ 2016-11-17 20:39:24 +0000
diff --git a/src/go.c b/src/go.c
index e117888..cb0d36f 100644
--- a/src/go.c
+++ b/src/go.c
@@ -15,6 +15,8 @@ typedef struct {
   double bpm;
   BIQUAD morebass;
   BIQUAD snare;
+  DELAY del1;
+  float del1buf[SR];
 } S;
 
 // per sample DSP callback
@@ -24,6 +26,7 @@ int go(S *s, int channels, const float *in, float *out) {
   if (s->reloaded) {
     s->reloaded = 0;
     s->bpm = 133;
+    s->del1.length = SR;
     //pink_init(&s->pink, 10, 0xBeefCafe);
   }
 
diff @ 2016-11-17 20:40:05 +0000
diff --git a/src/go.c b/src/go.c
index cb0d36f..fcab074 100644
--- a/src/go.c
+++ b/src/go.c
@@ -66,8 +66,10 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= noise();
   sn *= 4;
   sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
+  sn += 0.5 * delread(&s->del1, 2 * 15000 / s->bpm);
   sn += sin(sn);
   sn = tanh(sn);
+  delwrite(&s->del1, sn);
 
   // mix down
   double mixdown[2] = { 0, 0 };
diff @ 2016-11-17 20:40:10 +0000
diff --git a/src/go.c b/src/go.c
index fcab074..89aa023 100644
--- a/src/go.c
+++ b/src/go.c
@@ -66,7 +66,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= noise();
   sn *= 4;
   sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
-  sn += 0.5 * delread(&s->del1, 2 * 15000 / s->bpm);
+  sn += 0.5 * delread4(&s->del1, 2 * 15000 / s->bpm);
   sn += sin(sn);
   sn = tanh(sn);
   delwrite(&s->del1, sn);
diff @ 2016-11-17 20:40:15 +0000
diff --git a/src/go.c b/src/go.c
index 89aa023..35e7256 100644
--- a/src/go.c
+++ b/src/go.c
@@ -66,7 +66,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= noise();
   sn *= 4;
   sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
-  sn += 0.5 * delread4(&s->del1, 2 * 15000 / s->bpm);
+  sn += 0.25 * delread4(&s->del1, 2 * 15000 / s->bpm);
   sn += sin(sn);
   sn = tanh(sn);
   delwrite(&s->del1, sn);
diff @ 2016-11-17 20:41:02 +0000
diff --git a/src/go.c b/src/go.c
index 35e7256..3cb94e0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -17,6 +17,7 @@ typedef struct {
   BIQUAD snare;
   DELAY del1;
   float del1buf[SR];
+  PITCHSHIFT ps;
 } S;
 
 // per sample DSP callback
@@ -66,7 +67,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= noise();
   sn *= 4;
   sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
-  sn += 0.25 * delread4(&s->del1, 2 * 15000 / s->bpm);
+  sn += 0.25 * pitchshift(&s->ps, 1, 50, 3 * sin(twopi * 4 * t), delread4(&s->del1, 2 * 15000 / s->bpm));
   sn += sin(sn);
   sn = tanh(sn);
   delwrite(&s->del1, sn);
diff @ 2016-11-17 20:41:13 +0000
diff --git a/src/go.c b/src/go.c
index 3cb94e0..eb96255 100644
--- a/src/go.c
+++ b/src/go.c
@@ -67,7 +67,8 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= noise();
   sn *= 4;
   sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
-  sn += 0.25 * pitchshift(&s->ps, 1, 50, 3 * sin(twopi * 4 * t), delread4(&s->del1, 2 * 15000 / s->bpm));
+  sn += 0.25 * pitchshift(&s->ps, 1, 50, 3 * sin(twopi * 4 * t),
+    delread4(&s->del1, 2 * 15000 / s->bpm));
   sn += sin(sn);
   sn = tanh(sn);
   delwrite(&s->del1, sn);
diff @ 2016-11-17 20:41:19 +0000
diff --git a/src/go.c b/src/go.c
index eb96255..bdcf8db 100644
--- a/src/go.c
+++ b/src/go.c
@@ -67,7 +67,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= noise();
   sn *= 4;
   sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
-  sn += 0.25 * pitchshift(&s->ps, 1, 50, 3 * sin(twopi * 4 * t),
+  sn += 0.33 * pitchshift(&s->ps, 1, 50, 3 * sin(twopi * 4 * t),
     delread4(&s->del1, 2 * 15000 / s->bpm));
   sn += sin(sn);
   sn = tanh(sn);
diff @ 2016-11-17 20:42:00 +0000
diff --git a/src/go.c b/src/go.c
index bdcf8db..353690a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -17,7 +17,7 @@ typedef struct {
   BIQUAD snare;
   DELAY del1;
   float del1buf[SR];
-  PITCHSHIFT ps;
+  PITCHSHIFT ps[2];
 } S;
 
 // per sample DSP callback
@@ -67,9 +67,10 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= noise();
   sn *= 4;
   sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
-  sn += 0.33 * pitchshift(&s->ps, 1, 50, 3 * sin(twopi * 4 * t),
+  sn += 0.33 * pitchshift(&s->ps[1], 1, 50, 3 * sin(twopi * 4 * t),
     delread4(&s->del1, 2 * 15000 / s->bpm));
   sn += sin(sn);
+  sn += pitchshift(&s->ps[0], 1, 50, -12, sn);
   sn = tanh(sn);
   delwrite(&s->del1, sn);
 
diff @ 2016-11-17 20:43:09 +0000
diff --git a/src/go.c b/src/go.c
index 353690a..3d2c272 100644
--- a/src/go.c
+++ b/src/go.c
@@ -18,6 +18,8 @@ typedef struct {
   DELAY del1;
   float del1buf[SR];
   PITCHSHIFT ps[2];
+  DELAY del2;
+  float del2buf[SR];
 } S;
 
 // per sample DSP callback
@@ -28,6 +30,7 @@ int go(S *s, int channels, const float *in, float *out) {
     s->reloaded = 0;
     s->bpm = 133;
     s->del1.length = SR;
+    s->del2.length = SR;
     //pink_init(&s->pink, 10, 0xBeefCafe);
   }
 
@@ -73,7 +76,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn += pitchshift(&s->ps[0], 1, 50, -12, sn);
   sn = tanh(sn);
   delwrite(&s->del1, sn);
-
+  
   // mix down
   double mixdown[2] = { 0, 0 };
   mixdown[0] += ns[0] + k + sn;
diff @ 2016-11-17 20:44:38 +0000
diff --git a/src/go.c b/src/go.c
index 3d2c272..d836bb1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -76,7 +76,13 @@ int go(S *s, int channels, const float *in, float *out) {
   sn += pitchshift(&s->ps[0], 1, 50, -12, sn);
   sn = tanh(sn);
   delwrite(&s->del1, sn);
-  
+  double sn2 = delread4(&s->del2, 1000 / 150.0);
+  sn2 += sn;
+  sn2 *= 0.5;
+  delwrite(&s->del2, sn2);
+  sn += sn2;
+
+
   // mix down
   double mixdown[2] = { 0, 0 };
   mixdown[0] += ns[0] + k + sn;
diff @ 2016-11-17 20:44:52 +0000
diff --git a/src/go.c b/src/go.c
index d836bb1..55a69cf 100644
--- a/src/go.c
+++ b/src/go.c
@@ -78,7 +78,7 @@ int go(S *s, int channels, const float *in, float *out) {
   delwrite(&s->del1, sn);
   double sn2 = delread4(&s->del2, 1000 / 150.0);
   sn2 += sn;
-  sn2 *= 0.5;
+  sn2 *= 0.65;
   delwrite(&s->del2, sn2);
   sn += sn2;
 
diff @ 2016-11-17 20:44:56 +0000
diff --git a/src/go.c b/src/go.c
index 55a69cf..163c4c2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -78,7 +78,7 @@ int go(S *s, int channels, const float *in, float *out) {
   delwrite(&s->del1, sn);
   double sn2 = delread4(&s->del2, 1000 / 150.0);
   sn2 += sn;
-  sn2 *= 0.65;
+  sn2 *= 0.85;
   delwrite(&s->del2, sn2);
   sn += sn2;
 
diff @ 2016-11-17 20:45:10 +0000
diff --git a/src/go.c b/src/go.c
index 163c4c2..e8e6a15 100644
--- a/src/go.c
+++ b/src/go.c
@@ -78,7 +78,7 @@ int go(S *s, int channels, const float *in, float *out) {
   delwrite(&s->del1, sn);
   double sn2 = delread4(&s->del2, 1000 / 150.0);
   sn2 += sn;
-  sn2 *= 0.85;
+  sn2 *= -0.85;
   delwrite(&s->del2, sn2);
   sn += sn2;
 
diff @ 2016-11-17 20:45:30 +0000
diff --git a/src/go.c b/src/go.c
index e8e6a15..6fd0923 100644
--- a/src/go.c
+++ b/src/go.c
@@ -78,7 +78,7 @@ int go(S *s, int channels, const float *in, float *out) {
   delwrite(&s->del1, sn);
   double sn2 = delread4(&s->del2, 1000 / 150.0);
   sn2 += sn;
-  sn2 *= -0.85;
+  sn2 *= -0.95;
   delwrite(&s->del2, sn2);
   sn += sn2;
 
diff @ 2016-11-17 20:46:50 +0000
diff --git a/src/go.c b/src/go.c
index 6fd0923..0a9daa6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -76,7 +76,12 @@ int go(S *s, int channels, const float *in, float *out) {
   sn += pitchshift(&s->ps[0], 1, 50, -12, sn);
   sn = tanh(sn);
   delwrite(&s->del1, sn);
-  double sn2 = delread4(&s->del2, 1000 / 150.0);
+  
+  int step = floor(256 * t);
+  double hz = (step * 7) % 16;
+  hz += 1;
+  hz *= 50; 
+  double sn2 = delread4(&s->del2, 1000 / hz);
   sn2 += sn;
   sn2 *= -0.95;
   delwrite(&s->del2, sn2);
diff @ 2016-11-17 20:46:52 +0000
diff --git a/src/go.c b/src/go.c
index 0a9daa6..5824d8d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -80,7 +80,7 @@ int go(S *s, int channels, const float *in, float *out) {
   int step = floor(256 * t);
   double hz = (step * 7) % 16;
   hz += 1;
-  hz *= 50; 
+  hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
   sn2 += sn;
   sn2 *= -0.95;
diff @ 2016-11-17 20:47:09 +0000
diff --git a/src/go.c b/src/go.c
index 5824d8d..e134319 100644
--- a/src/go.c
+++ b/src/go.c
@@ -78,7 +78,7 @@ int go(S *s, int channels, const float *in, float *out) {
   delwrite(&s->del1, sn);
   
   int step = floor(256 * t);
-  double hz = (step * 7) % 16;
+  double hz = ((step/4) * 7) % 16;
   hz += 1;
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
diff @ 2016-11-17 20:47:26 +0000
diff --git a/src/go.c b/src/go.c
index e134319..4fd1dd2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -36,7 +36,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
   // noise
   double n = pink(&s->pink);
-  double q = 150;
+  double q = 200;
   n = vcf(&s->bass, n, 50, q) * q * 1.5;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 18000, 0.01));
   n = sin(n);
diff @ 2016-11-17 20:47:40 +0000
diff --git a/src/go.c b/src/go.c
index 4fd1dd2..81da412 100644
--- a/src/go.c
+++ b/src/go.c
@@ -38,7 +38,7 @@ int go(S *s, int channels, const float *in, float *out) {
   double n = pink(&s->pink);
   double q = 200;
   n = vcf(&s->bass, n, 50, q) * q * 1.5;
-  double psh = phasor(&s->psh, 20000 - lop(&s->shf, 18000, 0.01));
+  double psh = phasor(&s->psh, 20000 - lop(&s->shf, 19000, 0.01));
   n = sin(n);
   double ns[2];
   ns[0] = samphold(&s->sh[0], n, psh);
diff @ 2016-11-17 20:48:01 +0000
diff --git a/src/go.c b/src/go.c
index 81da412..df97e3d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -71,7 +71,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= 4;
   sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
   sn += 0.33 * pitchshift(&s->ps[1], 1, 50, 3 * sin(twopi * 4 * t),
-    delread4(&s->del1, 2 * 15000 / s->bpm));
+    delread4(&s->del1, (2 + sin(twopi * 4 * t)) * 15000 / s->bpm));
   sn += sin(sn);
   sn += pitchshift(&s->ps[0], 1, 50, -12, sn);
   sn = tanh(sn);
diff @ 2016-11-17 20:48:35 +0000
diff --git a/src/go.c b/src/go.c
index df97e3d..1519a04 100644
--- a/src/go.c
+++ b/src/go.c
@@ -47,7 +47,7 @@ int go(S *s, int channels, const float *in, float *out) {
   // rhythm
   double t = phasor(&s->clock, s->bpm / 60.0 / 64.0);
 
-  double k = 1 - wrap(16 * t);
+  double k = 1 - wrap(2.666 * wrap(8 * t));
   k *= k;
   k *= k;
   k *= k;
diff @ 2016-11-17 20:48:58 +0000
diff --git a/src/go.c b/src/go.c
index 1519a04..057ac18 100644
--- a/src/go.c
+++ b/src/go.c
@@ -70,7 +70,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= noise();
   sn *= 4;
   sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
-  sn += 0.33 * pitchshift(&s->ps[1], 1, 50, 3 * sin(twopi * 4 * t),
+  sn += 0.33 * pitchshift(&s->ps[1], 1, 50, 12 * sin(twopi * 4 * t),
     delread4(&s->del1, (2 + sin(twopi * 4 * t)) * 15000 / s->bpm));
   sn += sin(sn);
   sn += pitchshift(&s->ps[0], 1, 50, -12, sn);
diff @ 2016-11-17 20:49:35 +0000
diff --git a/src/go.c b/src/go.c
index 057ac18..cc6ae62 100644
--- a/src/go.c
+++ b/src/go.c
@@ -20,6 +20,7 @@ typedef struct {
   PITCHSHIFT ps[2];
   DELAY del2;
   float del2buf[SR];
+  LOP mbf;
 } S;
 
 // per sample DSP callback
@@ -56,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
-  k += biquad(highpass(&s->morebass, 50, 160), k);
+  k += biquad(highpass(&s->morebass, 50 + lop(&s->mbf, 50, 0.01), 160), k);
   k += sin(k);
   k = tanh(k);
 
diff @ 2016-11-17 20:50:05 +0000
diff --git a/src/go.c b/src/go.c
index cc6ae62..3f61f73 100644
--- a/src/go.c
+++ b/src/go.c
@@ -84,7 +84,7 @@ int go(S *s, int channels, const float *in, float *out) {
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
   sn2 += sn;
-  sn2 *= -0.95;
+  sn2 *= -0.995;
   delwrite(&s->del2, sn2);
   sn += sn2;
 
diff @ 2016-11-17 20:50:08 +0000
diff --git a/src/go.c b/src/go.c
index 3f61f73..9fd96f0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -84,7 +84,7 @@ int go(S *s, int channels, const float *in, float *out) {
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
   sn2 += sn;
-  sn2 *= -0.995;
+  sn2 *= -0.985;
   delwrite(&s->del2, sn2);
   sn += sn2;
 
diff @ 2016-11-17 20:50:24 +0000
diff --git a/src/go.c b/src/go.c
index 9fd96f0..807fbe2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -85,6 +85,7 @@ int go(S *s, int channels, const float *in, float *out) {
   double sn2 = delread4(&s->del2, 1000 / hz);
   sn2 += sn;
   sn2 *= -0.985;
+  sn2 = sin(sn2);
   delwrite(&s->del2, sn2);
   sn += sn2;
 
diff @ 2016-11-17 20:50:33 +0000
diff --git a/src/go.c b/src/go.c
index 807fbe2..c3243bf 100644
--- a/src/go.c
+++ b/src/go.c
@@ -84,8 +84,8 @@ int go(S *s, int channels, const float *in, float *out) {
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
   sn2 += sn;
-  sn2 *= -0.985;
-  sn2 = sin(sn2);
+  sn2 *= -0.995;
+  sn2 = sin(pi / 2 * sn2);
   delwrite(&s->del2, sn2);
   sn += sn2;
 
diff @ 2016-11-17 20:50:36 +0000
diff --git a/src/go.c b/src/go.c
index c3243bf..f2760eb 100644
--- a/src/go.c
+++ b/src/go.c
@@ -84,7 +84,7 @@ int go(S *s, int channels, const float *in, float *out) {
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
   sn2 += sn;
-  sn2 *= -0.995;
+  sn2 *= -0.95;
   sn2 = sin(pi / 2 * sn2);
   delwrite(&s->del2, sn2);
   sn += sn2;
diff @ 2016-11-17 20:50:40 +0000
diff --git a/src/go.c b/src/go.c
index f2760eb..84d7d4a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -84,7 +84,7 @@ int go(S *s, int channels, const float *in, float *out) {
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
   sn2 += sn;
-  sn2 *= -0.95;
+  sn2 *= -0.9;
   sn2 = sin(pi / 2 * sn2);
   delwrite(&s->del2, sn2);
   sn += sn2;
diff @ 2016-11-17 20:50:59 +0000
diff --git a/src/go.c b/src/go.c
index 84d7d4a..cdd9877 100644
--- a/src/go.c
+++ b/src/go.c
@@ -57,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
-  k += biquad(highpass(&s->morebass, 50 + lop(&s->mbf, 50, 0.01), 160), k);
+  k += biquad(highpass(&s->morebass, 50 + lop(&s->mbf, 50.01, 0.01), 160), k);
   k += sin(k);
   k = tanh(k);
 
diff @ 2016-11-17 20:51:19 +0000
diff --git a/src/go.c b/src/go.c
index cdd9877..dfa8de4 100644
--- a/src/go.c
+++ b/src/go.c
@@ -38,7 +38,7 @@ int go(S *s, int channels, const float *in, float *out) {
   // noise
   double n = pink(&s->pink);
   double q = 200;
-  n = vcf(&s->bass, n, 50, q) * q * 1.5;
+  n = vcf(&s->bass, n, 49.9, q) * q * 1.5;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 19000, 0.01));
   n = sin(n);
   double ns[2];
diff @ 2016-11-17 20:51:27 +0000
diff --git a/src/go.c b/src/go.c
index dfa8de4..253db8a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -57,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
-  k += biquad(highpass(&s->morebass, 50 + lop(&s->mbf, 50.01, 0.01), 160), k);
+  k += biquad(highpass(&s->morebass, 50 + lop(&s->mbf, 50.1, 0.01), 160), k);
   k += sin(k);
   k = tanh(k);
 
diff @ 2016-11-17 20:51:44 +0000
diff --git a/src/go.c b/src/go.c
index 253db8a..3eb574a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -71,7 +71,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn *= noise();
   sn *= 4;
   sn += 2 * biquad(lowpass(&s->snare, 300, 50), sn);
-  sn += 0.33 * pitchshift(&s->ps[1], 1, 50, 12 * sin(twopi * 4 * t),
+  sn += 0.33 * pitchshift(&s->ps[1], 1, 50, -12,
     delread4(&s->del1, (2 + sin(twopi * 4 * t)) * 15000 / s->bpm));
   sn += sin(sn);
   sn += pitchshift(&s->ps[0], 1, 50, -12, sn);
diff @ 2016-11-17 20:51:59 +0000
diff --git a/src/go.c b/src/go.c
index 3eb574a..de7b25e 100644
--- a/src/go.c
+++ b/src/go.c
@@ -57,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
-  k += biquad(highpass(&s->morebass, 50 + lop(&s->mbf, 50.1, 0.01), 160), k);
+  k += biquad(highpass(&s->morebass, 50 + 0*lop(&s->mbf, 50.1, 0.01), 160), k);
   k += sin(k);
   k = tanh(k);
 
diff @ 2016-11-17 20:52:33 +0000
diff --git a/src/go.c b/src/go.c
index de7b25e..f2fef24 100644
--- a/src/go.c
+++ b/src/go.c
@@ -57,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k *= 12;
   k = sin(twopi * k);
   k *= 4;
-  k += biquad(highpass(&s->morebass, 50 + 0*lop(&s->mbf, 50.1, 0.01), 160), k);
+  k += biquad(highpass(&s->morebass, 50 + (wrap(16 * t) > 0.75) * lop(&s->mbf, 50.1, 0.01), 160), k);
   k += sin(k);
   k = tanh(k);
 
diff @ 2016-11-17 20:53:12 +0000
diff --git a/src/go.c b/src/go.c
index f2fef24..2e72835 100644
--- a/src/go.c
+++ b/src/go.c
@@ -21,6 +21,7 @@ typedef struct {
   DELAY del2;
   float del2buf[SR];
   LOP mbf;
+  HIP hip;
 } S;
 
 // per sample DSP callback
@@ -33,6 +34,7 @@ int go(S *s, int channels, const float *in, float *out) {
     s->del1.length = SR;
     s->del2.length = SR;
     //pink_init(&s->pink, 10, 0xBeefCafe);
+    
   }
 
   // noise
@@ -75,6 +77,7 @@ int go(S *s, int channels, const float *in, float *out) {
     delread4(&s->del1, (2 + sin(twopi * 4 * t)) * 15000 / s->bpm));
   sn += sin(sn);
   sn += pitchshift(&s->ps[0], 1, 50, -12, sn);
+  sn = hip(sn, 50);
   sn = tanh(sn);
   delwrite(&s->del1, sn);
   
diff @ 2016-11-17 20:53:16 +0000
diff --git a/src/go.c b/src/go.c
index 2e72835..1b9a66d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -77,7 +77,7 @@ int go(S *s, int channels, const float *in, float *out) {
     delread4(&s->del1, (2 + sin(twopi * 4 * t)) * 15000 / s->bpm));
   sn += sin(sn);
   sn += pitchshift(&s->ps[0], 1, 50, -12, sn);
-  sn = hip(sn, 50);
+  sn = hip(&s->hip, sn, 50);
   sn = tanh(sn);
   delwrite(&s->del1, sn);
   
diff @ 2016-11-17 20:53:30 +0000
diff --git a/src/go.c b/src/go.c
index 1b9a66d..5910fd3 100644
--- a/src/go.c
+++ b/src/go.c
@@ -82,7 +82,7 @@ int go(S *s, int channels, const float *in, float *out) {
   delwrite(&s->del1, sn);
   
   int step = floor(256 * t);
-  double hz = ((step/4) * 7) % 16;
+  double hz = ((step/5) * 7) % 16;
   hz += 1;
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
diff @ 2016-11-17 20:53:34 +0000
diff --git a/src/go.c b/src/go.c
index 5910fd3..edcf5db 100644
--- a/src/go.c
+++ b/src/go.c
@@ -82,7 +82,7 @@ int go(S *s, int channels, const float *in, float *out) {
   delwrite(&s->del1, sn);
   
   int step = floor(256 * t);
-  double hz = ((step/5) * 7) % 16;
+  double hz = ((step/6) * 7) % 16;
   hz += 1;
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
diff @ 2016-11-17 20:53:39 +0000
diff --git a/src/go.c b/src/go.c
index edcf5db..0555c55 100644
--- a/src/go.c
+++ b/src/go.c
@@ -82,7 +82,7 @@ int go(S *s, int channels, const float *in, float *out) {
   delwrite(&s->del1, sn);
   
   int step = floor(256 * t);
-  double hz = ((step/6) * 7) % 16;
+  double hz = ((step/6) * 7) % 12;
   hz += 1;
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
diff @ 2016-11-17 20:54:05 +0000
diff --git a/src/go.c b/src/go.c
index 0555c55..2eb46a6 100644
--- a/src/go.c
+++ b/src/go.c
@@ -50,7 +50,7 @@ int go(S *s, int channels, const float *in, float *out) {
   // rhythm
   double t = phasor(&s->clock, s->bpm / 60.0 / 64.0);
 
-  double k = 1 - wrap(2.666 * wrap(8 * t));
+  double k = 1 - wrap(4 * wrap(8 * t));
   k *= k;
   k *= k;
   k *= k;
diff @ 2016-11-17 20:54:16 +0000
diff --git a/src/go.c b/src/go.c
index 2eb46a6..f6b49ad 100644
--- a/src/go.c
+++ b/src/go.c
@@ -50,8 +50,7 @@ int go(S *s, int channels, const float *in, float *out) {
   // rhythm
   double t = phasor(&s->clock, s->bpm / 60.0 / 64.0);
 
-  double k = 1 - wrap(4 * wrap(8 * t));
-  k *= k;
+  double k = 1 - wrap(4 * wrap(16 * t));
   k *= k;
   k *= k;
   k *= k;
diff @ 2016-11-17 20:54:28 +0000
diff --git a/src/go.c b/src/go.c
index f6b49ad..ca2922a 100644
--- a/src/go.c
+++ b/src/go.c
@@ -59,7 +59,7 @@ int go(S *s, int channels, const float *in, float *out) {
   k = sin(twopi * k);
   k *= 4;
   k += biquad(highpass(&s->morebass, 50 + (wrap(16 * t) > 0.75) * lop(&s->mbf, 50.1, 0.01), 160), k);
-  k += sin(k);
+  k += sin(2 * k);
   k = tanh(k);
 
   double sn = 1 - wrap(16 * t + 0.5);
diff @ 2016-11-17 20:54:43 +0000
diff --git a/src/go.c b/src/go.c
index ca2922a..3a36281 100644
--- a/src/go.c
+++ b/src/go.c
@@ -85,7 +85,7 @@ int go(S *s, int channels, const float *in, float *out) {
   hz += 1;
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
-  sn2 += sn;
+
   sn2 *= -0.9;
   sn2 = sin(pi / 2 * sn2);
   delwrite(&s->del2, sn2);
diff @ 2016-11-17 20:54:52 +0000
diff --git a/src/go.c b/src/go.c
index 3a36281..4ab111c 100644
--- a/src/go.c
+++ b/src/go.c
@@ -89,7 +89,7 @@ int go(S *s, int channels, const float *in, float *out) {
   sn2 *= -0.9;
   sn2 = sin(pi / 2 * sn2);
   delwrite(&s->del2, sn2);
-  sn += sn2;
+  sn = sn2;
 
 
   // mix down
diff @ 2016-11-17 20:55:07 +0000
diff --git a/src/go.c b/src/go.c
index 4ab111c..72defc1 100644
--- a/src/go.c
+++ b/src/go.c
@@ -86,7 +86,7 @@ int go(S *s, int channels, const float *in, float *out) {
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
 
-  sn2 *= -0.9;
+  sn2 *= -0.8;
   sn2 = sin(pi / 2 * sn2);
   delwrite(&s->del2, sn2);
   sn = sn2;
diff @ 2016-11-17 20:55:33 +0000
diff --git a/src/go.c b/src/go.c
index 72defc1..f99a955 100644
--- a/src/go.c
+++ b/src/go.c
@@ -30,13 +30,14 @@ int go(S *s, int channels, const float *in, float *out) {
   // trigger impulse on reload
   if (s->reloaded) {
     s->reloaded = 0;
-    s->bpm = 133;
+//    s->bpm = 133;
     s->del1.length = SR;
     s->del2.length = SR;
     //pink_init(&s->pink, 10, 0xBeefCafe);
     
   }
 
+  s->bpm *= 0.9999995;
   // noise
   double n = pink(&s->pink);
   double q = 200;
diff @ 2016-11-17 20:55:43 +0000
diff --git a/src/go.c b/src/go.c
index f99a955..aa8a823 100644
--- a/src/go.c
+++ b/src/go.c
@@ -37,7 +37,7 @@ int go(S *s, int channels, const float *in, float *out) {
     
   }
 
-  s->bpm *= 0.9999995;
+  //s->bpm *= 0.9999995;
   // noise
   double n = pink(&s->pink);
   double q = 200;
diff @ 2016-11-17 20:55:54 +0000
diff --git a/src/go.c b/src/go.c
index aa8a823..c03e895 100644
--- a/src/go.c
+++ b/src/go.c
@@ -51,7 +51,7 @@ int go(S *s, int channels, const float *in, float *out) {
   // rhythm
   double t = phasor(&s->clock, s->bpm / 60.0 / 64.0);
 
-  double k = 1 - wrap(4 * wrap(16 * t));
+  double k = 1 - wrap(5.33333 * wrap(16 * t));
   k *= k;
   k *= k;
   k *= k;
diff @ 2016-11-17 20:56:09 +0000
diff --git a/src/go.c b/src/go.c
index c03e895..af1731d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -51,7 +51,7 @@ int go(S *s, int channels, const float *in, float *out) {
   // rhythm
   double t = phasor(&s->clock, s->bpm / 60.0 / 64.0);
 
-  double k = 1 - wrap(5.33333 * wrap(16 * t));
+  double k = 1 - wrap(5.33333 * wrap(8 * t));
   k *= k;
   k *= k;
   k *= k;
diff @ 2016-11-17 20:56:57 +0000
diff --git a/src/go.c b/src/go.c
index af1731d..3825763 100644
--- a/src/go.c
+++ b/src/go.c
@@ -22,6 +22,7 @@ typedef struct {
   float del2buf[SR];
   LOP mbf;
   HIP hip;
+  VCF vcf;
 } S;
 
 // per sample DSP callback
@@ -86,7 +87,7 @@ int go(S *s, int channels, const float *in, float *out) {
   hz += 1;
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
-
+  sn2 = vcf(&s->vcf, sn2, 1000, 3);
   sn2 *= -0.8;
   sn2 = sin(pi / 2 * sn2);
   delwrite(&s->del2, sn2);
diff @ 2016-11-17 20:57:03 +0000
diff --git a/src/go.c b/src/go.c
index 3825763..d934326 100644
--- a/src/go.c
+++ b/src/go.c
@@ -87,7 +87,7 @@ int go(S *s, int channels, const float *in, float *out) {
   hz += 1;
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
-  sn2 = vcf(&s->vcf, sn2, 1000, 3);
+  sn2 += vcf(&s->vcf, sn2, 1000, 3);
   sn2 *= -0.8;
   sn2 = sin(pi / 2 * sn2);
   delwrite(&s->del2, sn2);
diff @ 2016-11-17 20:57:05 +0000
diff --git a/src/go.c b/src/go.c
index d934326..3825763 100644
--- a/src/go.c
+++ b/src/go.c
@@ -87,7 +87,7 @@ int go(S *s, int channels, const float *in, float *out) {
   hz += 1;
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
-  sn2 += vcf(&s->vcf, sn2, 1000, 3);
+  sn2 = vcf(&s->vcf, sn2, 1000, 3);
   sn2 *= -0.8;
   sn2 = sin(pi / 2 * sn2);
   delwrite(&s->del2, sn2);
diff @ 2016-11-17 20:57:21 +0000
diff --git a/src/go.c b/src/go.c
index 3825763..cf810ec 100644
--- a/src/go.c
+++ b/src/go.c
@@ -87,7 +87,7 @@ int go(S *s, int channels, const float *in, float *out) {
   hz += 1;
   hz *= 50;
   double sn2 = delread4(&s->del2, 1000 / hz);
-  sn2 = vcf(&s->vcf, sn2, 1000, 3);
+  sn2 = vcf(&s->vcf, sn2, 500, 3);
   sn2 *= -0.8;
   sn2 = sin(pi / 2 * sn2);
   delwrite(&s->del2, sn2);
diff @ 2016-11-17 20:57:39 +0000
diff --git a/src/go.c b/src/go.c
index cf810ec..f4fad93 100644
--- a/src/go.c
+++ b/src/go.c
@@ -52,7 +52,7 @@ int go(S *s, int channels, const float *in, float *out) {
   // rhythm
   double t = phasor(&s->clock, s->bpm / 60.0 / 64.0);
 
-  double k = 1 - wrap(5.33333 * wrap(8 * t));
+  double k = 1 - 0*wrap(5.33333 * wrap(8 * t));
   k *= k;
   k *= k;
   k *= k;
diff @ 2016-11-17 20:57:54 +0000
diff --git a/src/go.c b/src/go.c
index f4fad93..dc22506 100644
--- a/src/go.c
+++ b/src/go.c
@@ -41,7 +41,7 @@ int go(S *s, int channels, const float *in, float *out) {
   //s->bpm *= 0.9999995;
   // noise
   double n = pink(&s->pink);
-  double q = 200;
+  double q = 150;
   n = vcf(&s->bass, n, 49.9, q) * q * 1.5;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 19000, 0.01));
   n = sin(n);
diff @ 2016-11-17 20:58:05 +0000
diff --git a/src/go.c b/src/go.c
index dc22506..e6265d0 100644
--- a/src/go.c
+++ b/src/go.c
@@ -41,7 +41,7 @@ int go(S *s, int channels, const float *in, float *out) {
   //s->bpm *= 0.9999995;
   // noise
   double n = pink(&s->pink);
-  double q = 150;
+  double q = 100;
   n = vcf(&s->bass, n, 49.9, q) * q * 1.5;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 19000, 0.01));
   n = sin(n);
diff @ 2016-11-17 20:58:16 +0000
diff --git a/src/go.c b/src/go.c
index e6265d0..d3eb0b2 100644
--- a/src/go.c
+++ b/src/go.c
@@ -41,9 +41,9 @@ int go(S *s, int channels, const float *in, float *out) {
   //s->bpm *= 0.9999995;
   // noise
   double n = pink(&s->pink);
-  double q = 100;
+  double q = 80;
   n = vcf(&s->bass, n, 49.9, q) * q * 1.5;
-  double psh = phasor(&s->psh, 20000 - lop(&s->shf, 19000, 0.01));
+  double psh = phasor(&s->psh, 20000 - lop(&s->shf, 0, 0.01));
   n = sin(n);
   double ns[2];
   ns[0] = samphold(&s->sh[0], n, psh);
diff @ 2016-11-17 20:58:20 +0000
diff --git a/src/go.c b/src/go.c
index d3eb0b2..c6d7c7b 100644
--- a/src/go.c
+++ b/src/go.c
@@ -41,7 +41,7 @@ int go(S *s, int channels, const float *in, float *out) {
   //s->bpm *= 0.9999995;
   // noise
   double n = pink(&s->pink);
-  double q = 80;
+  double q = 50;
   n = vcf(&s->bass, n, 49.9, q) * q * 1.5;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 0, 0.01));
   n = sin(n);
diff @ 2016-11-17 20:58:24 +0000
diff --git a/src/go.c b/src/go.c
index c6d7c7b..28f0b95 100644
--- a/src/go.c
+++ b/src/go.c
@@ -41,7 +41,7 @@ int go(S *s, int channels, const float *in, float *out) {
   //s->bpm *= 0.9999995;
   // noise
   double n = pink(&s->pink);
-  double q = 50;
+  double q = 40;
   n = vcf(&s->bass, n, 49.9, q) * q * 1.5;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 0, 0.01));
   n = sin(n);
diff @ 2016-11-17 20:58:27 +0000
diff --git a/src/go.c b/src/go.c
index 28f0b95..7ffe8ad 100644
--- a/src/go.c
+++ b/src/go.c
@@ -41,7 +41,7 @@ int go(S *s, int channels, const float *in, float *out) {
   //s->bpm *= 0.9999995;
   // noise
   double n = pink(&s->pink);
-  double q = 40;
+  double q = 30;
   n = vcf(&s->bass, n, 49.9, q) * q * 1.5;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 0, 0.01));
   n = sin(n);
diff @ 2016-11-17 20:58:32 +0000
diff --git a/src/go.c b/src/go.c
index 7ffe8ad..1952012 100644
--- a/src/go.c
+++ b/src/go.c
@@ -41,7 +41,7 @@ int go(S *s, int channels, const float *in, float *out) {
   //s->bpm *= 0.9999995;
   // noise
   double n = pink(&s->pink);
-  double q = 30;
+  double q = 20;
   n = vcf(&s->bass, n, 49.9, q) * q * 1.5;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 0, 0.01));
   n = sin(n);
diff @ 2016-11-17 20:58:35 +0000
diff --git a/src/go.c b/src/go.c
index 1952012..face61d 100644
--- a/src/go.c
+++ b/src/go.c
@@ -41,7 +41,7 @@ int go(S *s, int channels, const float *in, float *out) {
   //s->bpm *= 0.9999995;
   // noise
   double n = pink(&s->pink);
-  double q = 20;
+  double q = 10;
   n = vcf(&s->bass, n, 49.9, q) * q * 1.5;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 0, 0.01));
   n = sin(n);
diff @ 2016-11-17 20:58:44 +0000
diff --git a/src/go.c b/src/go.c
index face61d..fc48df7 100644
--- a/src/go.c
+++ b/src/go.c
@@ -41,7 +41,7 @@ int go(S *s, int channels, const float *in, float *out) {
   //s->bpm *= 0.9999995;
   // noise
   double n = pink(&s->pink);
-  double q = 10;
+  double q = flatq;
   n = vcf(&s->bass, n, 49.9, q) * q * 1.5;
   double psh = phasor(&s->psh, 20000 - lop(&s->shf, 0, 0.01));
   n = sin(n);
diff @ 2016-11-17 20:58:57 +0000
diff --git a/src/go.c b/src/go.c
index fc48df7..ffd2096 100644
--- a/src/go.c
+++ b/src/go.c
@@ -101,7 +101,7 @@ int go(S *s, int channels, const float *in, float *out) {
 
   // compress
   compress(mixdown, &s->mixdown, 5, 10, 25, 36, mixdown);
-  double volume = 1;
+  double volume = 0;
   mixdown[0] *= volume;
   mixdown[1] *= volume;
 

the end