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-05-14 22:09:01 +0100 diff --git a/src/go.c b/src/go.c index 84e4aee..acdf6dd 100644 --- a/src/go.c +++ b/src/go.c @@ -28,10 +28,10 @@ typedef struct { int go(S *s, int channels, const float *in, float *out) { // trigger impulse on reload - double impulse[2] = { s->reloaded, s->reloaded }; if (s->reloaded) { s->reloaded = 0; } + double impulse[2] = { s->reloaded, s->reloaded }; // modulate delay times double p = phasor(&s->phase, 0.001); @@ -43,7 +43,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 0, feedback[c]); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 0.5, feedback[c]); double up = pitchshift(&s->shift[2 * c + 1], 2, 100, 0, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:09:16 +0100 diff --git a/src/go.c b/src/go.c index acdf6dd..e100fea 100644 --- a/src/go.c +++ b/src/go.c @@ -44,7 +44,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 0.5, feedback[c]); - double up = pitchshift(&s->shift[2 * c + 1], 2, 100, 0, down); + double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -1, down); feedback[c] = feedback[c] + down + up; } @@ -57,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) { // write to delay lines for (int c = 0; c < 2; ++c) { - so2echo(&s->echo[c], 20, 500, tanh(compressed[c] + impulse[c])); + so2echo(&s->echo[c], 20, 1000, tanh(compressed[c] + impulse[c])); } // compress mix down
diff @ 2016-05-14 22:09:29 +0100 diff --git a/src/go.c b/src/go.c index e100fea..dd3eeb6 100644 --- a/src/go.c +++ b/src/go.c @@ -43,7 +43,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 0.5, feedback[c]); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 0.6, feedback[c]); double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:09:32 +0100 diff --git a/src/go.c b/src/go.c index dd3eeb6..f929b48 100644 --- a/src/go.c +++ b/src/go.c @@ -44,7 +44,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 0.6, feedback[c]); - double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -1, down); + double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -1.3, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:09:38 +0100 diff --git a/src/go.c b/src/go.c index f929b48..d82cd72 100644 --- a/src/go.c +++ b/src/go.c @@ -43,7 +43,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 0.6, feedback[c]); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 1, feedback[c]); double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -1.3, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:09:50 +0100 diff --git a/src/go.c b/src/go.c index d82cd72..7d49fab 100644 --- a/src/go.c +++ b/src/go.c @@ -43,7 +43,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 1, feedback[c]); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 1.5, feedback[c]); double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -1.3, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:09:56 +0100 diff --git a/src/go.c b/src/go.c index 7d49fab..858699f 100644 --- a/src/go.c +++ b/src/go.c @@ -44,7 +44,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 1.5, feedback[c]); - double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -1.3, down); + double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -3.1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:10:04 +0100 diff --git a/src/go.c b/src/go.c index 858699f..34b1a2a 100644 --- a/src/go.c +++ b/src/go.c @@ -43,7 +43,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 1.5, feedback[c]); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 1.6, feedback[c]); double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -3.1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:10:14 +0100 diff --git a/src/go.c b/src/go.c index 34b1a2a..5998fcb 100644 --- a/src/go.c +++ b/src/go.c @@ -43,7 +43,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 1.6, feedback[c]); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 1.9, feedback[c]); double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -3.1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:10:23 +0100 diff --git a/src/go.c b/src/go.c index 5998fcb..6237cfc 100644 --- a/src/go.c +++ b/src/go.c @@ -43,8 +43,8 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 1.9, feedback[c]); - double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -3.1, down); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 2, feedback[c]); + double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -4, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:10:30 +0100 diff --git a/src/go.c b/src/go.c index 6237cfc..e276996 100644 --- a/src/go.c +++ b/src/go.c @@ -57,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) { // write to delay lines for (int c = 0; c < 2; ++c) { - so2echo(&s->echo[c], 20, 1000, tanh(compressed[c] + impulse[c])); + so2echo(&s->echo[c], 20, 2000, tanh(compressed[c] + impulse[c])); } // compress mix down
diff @ 2016-05-14 22:10:40 +0100 diff --git a/src/go.c b/src/go.c index e276996..f76cc2c 100644 --- a/src/go.c +++ b/src/go.c @@ -43,8 +43,8 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 2, feedback[c]); - double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -4, down); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 2.1, feedback[c]); + double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -4.1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:10:47 +0100 diff --git a/src/go.c b/src/go.c index f76cc2c..e7fb96d 100644 --- a/src/go.c +++ b/src/go.c @@ -57,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) { // write to delay lines for (int c = 0; c < 2; ++c) { - so2echo(&s->echo[c], 20, 2000, tanh(compressed[c] + impulse[c])); + so2echo(&s->echo[c], 20, 3000, tanh(compressed[c] + impulse[c])); } // compress mix down
diff @ 2016-05-14 22:10:54 +0100 diff --git a/src/go.c b/src/go.c index e7fb96d..f8a9f40 100644 --- a/src/go.c +++ b/src/go.c @@ -43,7 +43,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 2.1, feedback[c]); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 3.1, feedback[c]); double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -4.1, down); feedback[c] = feedback[c] + down + up; } @@ -57,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) { // write to delay lines for (int c = 0; c < 2; ++c) { - so2echo(&s->echo[c], 20, 3000, tanh(compressed[c] + impulse[c])); + so2echo(&s->echo[c], 20, 4000, tanh(compressed[c] + impulse[c])); } // compress mix down
diff @ 2016-05-14 22:10:58 +0100 diff --git a/src/go.c b/src/go.c index f8a9f40..a3a4866 100644 --- a/src/go.c +++ b/src/go.c @@ -44,7 +44,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 3.1, feedback[c]); - double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -4.1, down); + double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -6.1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:11:22 +0100 diff --git a/src/go.c b/src/go.c index a3a4866..0bbf9c7 100644 --- a/src/go.c +++ b/src/go.c @@ -57,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) { // write to delay lines for (int c = 0; c < 2; ++c) { - so2echo(&s->echo[c], 20, 4000, tanh(compressed[c] + impulse[c])); + so2echo(&s->echo[c], 40, 4000, tanh(compressed[c] + impulse[c])); } // compress mix down
diff @ 2016-05-14 22:11:32 +0100 diff --git a/src/go.c b/src/go.c index 0bbf9c7..b394fba 100644 --- a/src/go.c +++ b/src/go.c @@ -34,8 +34,8 @@ int go(S *s, int channels, const float *in, float *out) { double impulse[2] = { s->reloaded, s->reloaded }; // modulate delay times - double p = phasor(&s->phase, 0.001); - double modulation = 100 * cos(twopi * p); + double p = phasor(&s->phase, 0.01); + double modulation = 10 * cos(twopi * p); double feedback[2] = { delread4(&s->echo[1].del, 200 - modulation) , delread4(&s->echo[0].del, 200 + modulation)
diff @ 2016-05-14 22:11:51 +0100 diff --git a/src/go.c b/src/go.c index b394fba..9896193 100644 --- a/src/go.c +++ b/src/go.c @@ -57,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) { // write to delay lines for (int c = 0; c < 2; ++c) { - so2echo(&s->echo[c], 40, 4000, tanh(compressed[c] + impulse[c])); + so2echo(&s->echo[c], 80, 4000, tanh(compressed[c] + impulse[c])); } // compress mix down
diff @ 2016-05-14 22:11:56 +0100 diff --git a/src/go.c b/src/go.c index 9896193..4c0e27d 100644 --- a/src/go.c +++ b/src/go.c @@ -44,7 +44,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 3.1, feedback[c]); - double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -6.1, down); + double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -7.1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:12:00 +0100 diff --git a/src/go.c b/src/go.c index 4c0e27d..1e3600d 100644 --- a/src/go.c +++ b/src/go.c @@ -43,7 +43,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 3.1, feedback[c]); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 3.6, feedback[c]); double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -7.1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:12:20 +0100 diff --git a/src/go.c b/src/go.c index 1e3600d..873aa10 100644 --- a/src/go.c +++ b/src/go.c @@ -60,6 +60,9 @@ int go(S *s, int channels, const float *in, float *out) { so2echo(&s->echo[c], 80, 4000, tanh(compressed[c] + impulse[c])); } + double b = wrap(100 * p * 60); + double bass = sin(twopi * b); + // compress mix down double mixdown[2] = { 0, 0 }; compress(mixdown, &s->compress[1], 5, 10, 25, 36, compressed);
diff @ 2016-05-14 22:12:27 +0100 diff --git a/src/go.c b/src/go.c index 873aa10..f6c1c5d 100644 --- a/src/go.c +++ b/src/go.c @@ -44,7 +44,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 3.6, feedback[c]); - double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -7.1, down); + double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -8.1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:12:36 +0100 diff --git a/src/go.c b/src/go.c index f6c1c5d..62762fb 100644 --- a/src/go.c +++ b/src/go.c @@ -43,7 +43,7 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 3.6, feedback[c]); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 4.1, feedback[c]); double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -8.1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:12:55 +0100 diff --git a/src/go.c b/src/go.c index 62762fb..004a478 100644 --- a/src/go.c +++ b/src/go.c @@ -57,7 +57,7 @@ int go(S *s, int channels, const float *in, float *out) { // write to delay lines for (int c = 0; c < 2; ++c) { - so2echo(&s->echo[c], 80, 4000, tanh(compressed[c] + impulse[c])); + so2echo(&s->echo[c], 160, 4000, tanh(compressed[c] + impulse[c])); } double b = wrap(100 * p * 60);
diff @ 2016-05-14 22:13:20 +0100 diff --git a/src/go.c b/src/go.c index 004a478..726d6fc 100644 --- a/src/go.c +++ b/src/go.c @@ -62,6 +62,8 @@ int go(S *s, int channels, const float *in, float *out) { double b = wrap(100 * p * 60); double bass = sin(twopi * b); + compressed[0] += bass; + compressed[1] += bass; // compress mix down double mixdown[2] = { 0, 0 };
diff @ 2016-05-14 22:13:40 +0100 diff --git a/src/go.c b/src/go.c index 726d6fc..3b0874f 100644 --- a/src/go.c +++ b/src/go.c @@ -60,7 +60,7 @@ int go(S *s, int channels, const float *in, float *out) { so2echo(&s->echo[c], 160, 4000, tanh(compressed[c] + impulse[c])); } - double b = wrap(100 * p * 60); + double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p)); double bass = sin(twopi * b); compressed[0] += bass; compressed[1] += bass;
diff @ 2016-05-14 22:13:43 +0100 diff --git a/src/go.c b/src/go.c index 3b0874f..672c09b 100644 --- a/src/go.c +++ b/src/go.c @@ -60,7 +60,7 @@ int go(S *s, int channels, const float *in, float *out) { so2echo(&s->echo[c], 160, 4000, tanh(compressed[c] + impulse[c])); } - double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p)); + double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); double bass = sin(twopi * b); compressed[0] += bass; compressed[1] += bass;
diff @ 2016-05-14 22:14:06 +0100 diff --git a/src/go.c b/src/go.c index 672c09b..5233969 100644 --- a/src/go.c +++ b/src/go.c @@ -61,7 +61,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = sin(twopi * b); + double bass = tanh(sin(twopi * b)); compressed[0] += bass; compressed[1] += bass;
diff @ 2016-05-14 22:14:12 +0100 diff --git a/src/go.c b/src/go.c index 5233969..46204bc 100644 --- a/src/go.c +++ b/src/go.c @@ -61,7 +61,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = tanh(sin(twopi * b)); + double bass = tanh(1.1 * sin(twopi * b)); compressed[0] += bass; compressed[1] += bass;
diff @ 2016-05-14 22:14:22 +0100 diff --git a/src/go.c b/src/go.c index 46204bc..c68c9fd 100644 --- a/src/go.c +++ b/src/go.c @@ -61,7 +61,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = tanh(1.1 * sin(twopi * b)); + double bass = tanh(1.5 * sin(twopi * b)); compressed[0] += bass; compressed[1] += bass;
diff @ 2016-05-14 22:15:01 +0100 diff --git a/src/go.c b/src/go.c index c68c9fd..bcef77a 100644 --- a/src/go.c +++ b/src/go.c @@ -61,7 +61,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = tanh(1.5 * sin(twopi * b)); + double bass = tanh(1.5 * sin(twopi * b + sin(twopi * 128 * p) * sin(twopi * 2 * b))); compressed[0] += bass; compressed[1] += bass;
diff @ 2016-05-14 22:16:00 +0100 diff --git a/src/go.c b/src/go.c index bcef77a..9d1ff3d 100644 --- a/src/go.c +++ b/src/go.c @@ -22,6 +22,7 @@ typedef struct { PITCHSHIFT shift[4]; COMPRESS compress[2]; SO2ECHO echo[2]; + SAMPHOLD bass[2]; } S; // per sample DSP callback @@ -62,8 +63,8 @@ int go(S *s, int channels, const float *in, float *out) { double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); double bass = tanh(1.5 * sin(twopi * b + sin(twopi * 128 * p) * sin(twopi * 2 * b))); - compressed[0] += bass; - compressed[1] += bass; + compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); + compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5)); // compress mix down double mixdown[2] = { 0, 0 };
diff @ 2016-05-14 22:17:27 +0100 diff --git a/src/go.c b/src/go.c index 9d1ff3d..a91799c 100644 --- a/src/go.c +++ b/src/go.c @@ -23,6 +23,8 @@ typedef struct { COMPRESS compress[2]; SO2ECHO echo[2]; SAMPHOLD bass[2]; + SAMPHOLD crunchsh; + PHASOR crunchph; } S; // per sample DSP callback @@ -66,6 +68,12 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5)); + double crunch = wrap(64 * p) < 0.125; + crunch *= noise(); + crunch = samphold(&s->crunchsh, crunch, phasor(&s->crunchph, 1000)); + compressed[0] += crunch; + compressed[1] += crunch; + // compress mix down double mixdown[2] = { 0, 0 }; compress(mixdown, &s->compress[1], 5, 10, 25, 36, compressed);
diff @ 2016-05-14 22:17:52 +0100 diff --git a/src/go.c b/src/go.c index a91799c..a4a7696 100644 --- a/src/go.c +++ b/src/go.c @@ -70,7 +70,7 @@ int go(S *s, int channels, const float *in, float *out) { double crunch = wrap(64 * p) < 0.125; crunch *= noise(); - crunch = samphold(&s->crunchsh, crunch, phasor(&s->crunchph, 1000)); + crunch = samphold(&s->crunchsh, crunch, phasor(&s->crunchph, 1500 + 500 * sin(twopi * 16 * p))); compressed[0] += crunch; compressed[1] += crunch;
diff @ 2016-05-14 22:18:24 +0100 diff --git a/src/go.c b/src/go.c index a4a7696..17a6a55 100644 --- a/src/go.c +++ b/src/go.c @@ -64,7 +64,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = tanh(1.5 * sin(twopi * b + sin(twopi * 128 * p) * sin(twopi * 2 * b))); + double bass = tanh(1.5 * sin(twopi * b + sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 3) * p) * sin(twopi * 2 * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5)); @@ -74,6 +74,8 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += crunch; compressed[1] += crunch; + + // compress mix down double mixdown[2] = { 0, 0 }; compress(mixdown, &s->compress[1], 5, 10, 25, 36, compressed);
diff @ 2016-05-14 22:18:48 +0100 diff --git a/src/go.c b/src/go.c index 17a6a55..b66837b 100644 --- a/src/go.c +++ b/src/go.c @@ -64,7 +64,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = tanh(1.5 * sin(twopi * b + sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 3) * p) * sin(twopi * 2 * b))); + double bass = tanh(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 3) * p) * sin(twopi * 2 * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:19:13 +0100 diff --git a/src/go.c b/src/go.c index b66837b..140b834 100644 --- a/src/go.c +++ b/src/go.c @@ -64,7 +64,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = tanh(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 3) * p) * sin(twopi * 2 * b))); + double bass = tanh(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 3) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:20:13 +0100 diff --git a/src/go.c b/src/go.c index 140b834..8b0f58e 100644 --- a/src/go.c +++ b/src/go.c @@ -25,6 +25,7 @@ typedef struct { SAMPHOLD bass[2]; SAMPHOLD crunchsh; PHASOR crunchph; + BIQUAD hiss; } S; // per sample DSP callback @@ -74,6 +75,13 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += crunch; compressed[1] += crunch; + double hiss = wrap(64 * p + 0.333) < 0.125; + hiss *= noise(); + hiss = biquad(highpass(&s->hiss, 2000, 3), hiss); + compressed[0] += hiss; + compressed[1] += hiss; + + // compress mix down
diff @ 2016-05-14 22:20:19 +0100 diff --git a/src/go.c b/src/go.c index 8b0f58e..066344f 100644 --- a/src/go.c +++ b/src/go.c @@ -75,7 +75,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += crunch; compressed[1] += crunch; - double hiss = wrap(64 * p + 0.333) < 0.125; + double hiss = wrap(128 * p + 0.333) < 0.125; hiss *= noise(); hiss = biquad(highpass(&s->hiss, 2000, 3), hiss); compressed[0] += hiss;
diff @ 2016-05-14 22:20:27 +0100 diff --git a/src/go.c b/src/go.c index 066344f..29e0ada 100644 --- a/src/go.c +++ b/src/go.c @@ -75,7 +75,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += crunch; compressed[1] += crunch; - double hiss = wrap(128 * p + 0.333) < 0.125; + double hiss = wrap(32 * p + 0.333) < 0.125; hiss *= noise(); hiss = biquad(highpass(&s->hiss, 2000, 3), hiss); compressed[0] += hiss;
diff @ 2016-05-14 22:20:31 +0100 diff --git a/src/go.c b/src/go.c index 29e0ada..02c98ee 100644 --- a/src/go.c +++ b/src/go.c @@ -75,7 +75,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += crunch; compressed[1] += crunch; - double hiss = wrap(32 * p + 0.333) < 0.125; + double hiss = wrap(32 * p + 0.333) < 0.06225; hiss *= noise(); hiss = biquad(highpass(&s->hiss, 2000, 3), hiss); compressed[0] += hiss;
diff @ 2016-05-14 22:21:20 +0100 diff --git a/src/go.c b/src/go.c index 02c98ee..40e5eb3 100644 --- a/src/go.c +++ b/src/go.c @@ -75,12 +75,22 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += crunch; compressed[1] += crunch; - double hiss = wrap(32 * p + 0.333) < 0.06225; + double hiss = wrap(32 * p + 0.333) < 0.0625; hiss *= noise(); hiss = biquad(highpass(&s->hiss, 2000, 3), hiss); compressed[0] += hiss; compressed[1] += hiss; + double snare = 1 - wrap(64 * p + 0.5); + snare *= snare; + snare *= snare; + snare *= snare; + snare *= snare; + snare *= snare; + snare *= noise(); + snare = tanh(5 * snare); + compressed[0] += snare; + compressed[1] += snare;
diff @ 2016-05-14 22:21:37 +0100 diff --git a/src/go.c b/src/go.c index 40e5eb3..771cbff 100644 --- a/src/go.c +++ b/src/go.c @@ -55,7 +55,7 @@ int go(S *s, int channels, const float *in, float *out) { // compress feedback double compressed[2] = { 0, 0 }; compress(compressed, &s->compress[0], 5, 10, 25, 48, feedback); - double gain = 1; + double gain = 1.5; compressed[0] *= gain; compressed[1] *= gain;
diff @ 2016-05-14 22:21:47 +0100 diff --git a/src/go.c b/src/go.c index 771cbff..a4ed3b7 100644 --- a/src/go.c +++ b/src/go.c @@ -47,8 +47,8 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 4.1, feedback[c]); - double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -8.1, down); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 5.1, feedback[c]); + double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -10.1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:23:26 +0100 diff --git a/src/go.c b/src/go.c index a4ed3b7..fe5942a 100644 --- a/src/go.c +++ b/src/go.c @@ -26,6 +26,8 @@ typedef struct { SAMPHOLD crunchsh; PHASOR crunchph; BIQUAD hiss; + DELAY echo1; + float echo1buf[SR]; } S; // per sample DSP callback @@ -34,6 +36,7 @@ int go(S *s, int channels, const float *in, float *out) { // trigger impulse on reload if (s->reloaded) { s->reloaded = 0; + s->echo1.length = SR; } double impulse[2] = { s->reloaded, s->reloaded }; @@ -65,7 +68,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = tanh(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 3) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); + double bass = tanh(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5)); @@ -92,6 +95,9 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += snare; compressed[1] += snare; + double echo1 = delread4(&s->echo1, 1000 / 60.0); + + delwrite(&s->echo1, sin(echo1 + snare)); // compress mix down
diff @ 2016-05-14 22:23:39 +0100 diff --git a/src/go.c b/src/go.c index fe5942a..2097405 100644 --- a/src/go.c +++ b/src/go.c @@ -68,7 +68,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = tanh(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); + double bass = tanh(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 256 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:23:43 +0100 diff --git a/src/go.c b/src/go.c index 2097405..fe5942a 100644 --- a/src/go.c +++ b/src/go.c @@ -68,7 +68,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = tanh(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 256 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); + double bass = tanh(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:24:01 +0100 diff --git a/src/go.c b/src/go.c index fe5942a..59f493e 100644 --- a/src/go.c +++ b/src/go.c @@ -98,7 +98,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / 60.0); delwrite(&s->echo1, sin(echo1 + snare)); - + compressed[0] += echo1; + compressed[1] += echo1; // compress mix down double mixdown[2] = { 0, 0 };
diff @ 2016-05-14 22:24:18 +0100 diff --git a/src/go.c b/src/go.c index 59f493e..af1c244 100644 --- a/src/go.c +++ b/src/go.c @@ -95,7 +95,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += snare; compressed[1] += snare; - double echo1 = delread4(&s->echo1, 1000 / 60.0); + double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p)); delwrite(&s->echo1, sin(echo1 + snare)); compressed[0] += echo1;
diff @ 2016-05-14 22:24:21 +0100 diff --git a/src/go.c b/src/go.c index af1c244..1db8c73 100644 --- a/src/go.c +++ b/src/go.c @@ -95,7 +95,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += snare; compressed[1] += snare; - double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p)); + double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p))); delwrite(&s->echo1, sin(echo1 + snare)); compressed[0] += echo1;
diff @ 2016-05-14 22:25:04 +0100 diff --git a/src/go.c b/src/go.c index 1db8c73..12bdf5a 100644 --- a/src/go.c +++ b/src/go.c @@ -28,6 +28,8 @@ typedef struct { BIQUAD hiss; DELAY echo1; float echo1buf[SR]; + DELAY echo2; + float echo2buf[SR]; } S; // per sample DSP callback @@ -37,6 +39,7 @@ int go(S *s, int channels, const float *in, float *out) { if (s->reloaded) { s->reloaded = 0; s->echo1.length = SR; + s->echo2.length = SR; } double impulse[2] = { s->reloaded, s->reloaded }; @@ -96,10 +99,12 @@ int go(S *s, int channels, const float *in, float *out) { compressed[1] += snare; double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p))); + double echo2 = delread4(&s->echo2, 1000 / (60.0 + 5 * cos(twopi * 16 * p))); delwrite(&s->echo1, sin(echo1 + snare)); + delwrite(&s->echo2, sin(echo2 + snare)); compressed[0] += echo1; - compressed[1] += echo1; + compressed[1] += echo2; // compress mix down double mixdown[2] = { 0, 0 };
diff @ 2016-05-14 22:25:21 +0100 diff --git a/src/go.c b/src/go.c index 12bdf5a..b40dde0 100644 --- a/src/go.c +++ b/src/go.c @@ -101,8 +101,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(echo1 + snare)); - delwrite(&s->echo2, sin(echo2 + snare)); + delwrite(&s->echo1, sin(echo1 + snare - 0.1 * echo2)); + delwrite(&s->echo2, sin(echo2 + snare - 0.1 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:25:26 +0100 diff --git a/src/go.c b/src/go.c index b40dde0..8efe97c 100644 --- a/src/go.c +++ b/src/go.c @@ -101,8 +101,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(echo1 + snare - 0.1 * echo2)); - delwrite(&s->echo2, sin(echo2 + snare - 0.1 * echo1)); + delwrite(&s->echo1, sin(echo1 + snare - 0.5 * echo2)); + delwrite(&s->echo2, sin(echo2 + snare - 0.5 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:25:33 +0100 diff --git a/src/go.c b/src/go.c index 8efe97c..187ff75 100644 --- a/src/go.c +++ b/src/go.c @@ -101,8 +101,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(echo1 + snare - 0.5 * echo2)); - delwrite(&s->echo2, sin(echo2 + snare - 0.5 * echo1)); + delwrite(&s->echo1, sin(echo1 + snare + 0.5 * echo2)); + delwrite(&s->echo2, sin(echo2 + snare + 0.5 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:25:46 +0100 diff --git a/src/go.c b/src/go.c index 187ff75..b6a2d94 100644 --- a/src/go.c +++ b/src/go.c @@ -101,8 +101,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(echo1 + snare + 0.5 * echo2)); - delwrite(&s->echo2, sin(echo2 + snare + 0.5 * echo1)); + delwrite(&s->echo1, 0.9 * sin(echo1 + snare + 0.5 * echo2)); + delwrite(&s->echo2, 0.9 * sin(echo2 + snare + 0.5 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:25:50 +0100 diff --git a/src/go.c b/src/go.c index b6a2d94..39ca3da 100644 --- a/src/go.c +++ b/src/go.c @@ -101,7 +101,7 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, 0.9 * sin(echo1 + snare + 0.5 * echo2)); + delwrite(&s->echo1, 0.9 * sin(echo1 + 0.5 * echo2)); delwrite(&s->echo2, 0.9 * sin(echo2 + snare + 0.5 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:25:53 +0100 diff --git a/src/go.c b/src/go.c index 39ca3da..88d728d 100644 --- a/src/go.c +++ b/src/go.c @@ -102,7 +102,7 @@ int go(S *s, int channels, const float *in, float *out) { double echo2 = delread4(&s->echo2, 1000 / (60.0 + 5 * cos(twopi * 16 * p))); delwrite(&s->echo1, 0.9 * sin(echo1 + 0.5 * echo2)); - delwrite(&s->echo2, 0.9 * sin(echo2 + snare + 0.5 * echo1)); + delwrite(&s->echo2, 0.9 * sin(echo2 - snare + 0.5 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:25:56 +0100 diff --git a/src/go.c b/src/go.c index 88d728d..8a0612d 100644 --- a/src/go.c +++ b/src/go.c @@ -102,7 +102,7 @@ int go(S *s, int channels, const float *in, float *out) { double echo2 = delread4(&s->echo2, 1000 / (60.0 + 5 * cos(twopi * 16 * p))); delwrite(&s->echo1, 0.9 * sin(echo1 + 0.5 * echo2)); - delwrite(&s->echo2, 0.9 * sin(echo2 - snare + 0.5 * echo1)); + delwrite(&s->echo2, 0.9 * sin(echo2 - snare - 0.5 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:26:12 +0100 diff --git a/src/go.c b/src/go.c index 8a0612d..0780f16 100644 --- a/src/go.c +++ b/src/go.c @@ -98,8 +98,8 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += snare; compressed[1] += snare; - double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p))); - double echo2 = delread4(&s->echo2, 1000 / (60.0 + 5 * cos(twopi * 16 * p))); + double echo1 = delread4(&s->echo1, 1000 / (0.25 * 60.0 + 5 * sin(twopi * 16 * p))); + double echo2 = delread4(&s->echo2, 1000 / (0.25 * 60.0 + 5 * cos(twopi * 16 * p))); delwrite(&s->echo1, 0.9 * sin(echo1 + 0.5 * echo2)); delwrite(&s->echo2, 0.9 * sin(echo2 - snare - 0.5 * echo1));
diff @ 2016-05-14 22:26:26 +0100 diff --git a/src/go.c b/src/go.c index 0780f16..d3275f1 100644 --- a/src/go.c +++ b/src/go.c @@ -53,8 +53,8 @@ int go(S *s, int channels, const float *in, float *out) { // pitchshift feedback for (int c = 0; c < 2; ++c) { - double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 5.1, feedback[c]); - double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -10.1, down); + double down = pitchshift(&s->shift[2 * c + 0], 2, 100, 7.1, feedback[c]); + double up = pitchshift(&s->shift[2 * c + 1], 2, 100, -14.1, down); feedback[c] = feedback[c] + down + up; }
diff @ 2016-05-14 22:26:46 +0100 diff --git a/src/go.c b/src/go.c index d3275f1..5b7c617 100644 --- a/src/go.c +++ b/src/go.c @@ -71,7 +71,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = tanh(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); + double bass = sin(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:26:53 +0100 diff --git a/src/go.c b/src/go.c index 5b7c617..6d389e9 100644 --- a/src/go.c +++ b/src/go.c @@ -71,7 +71,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = sin(1.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); + double bass = sin(2.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:26:59 +0100 diff --git a/src/go.c b/src/go.c index 6d389e9..16af9dd 100644 --- a/src/go.c +++ b/src/go.c @@ -71,7 +71,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); - double bass = sin(2.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); + double bass = sin(3.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:27:18 +0100 diff --git a/src/go.c b/src/go.c index 16af9dd..a52965a 100644 --- a/src/go.c +++ b/src/go.c @@ -98,8 +98,8 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += snare; compressed[1] += snare; - double echo1 = delread4(&s->echo1, 1000 / (0.25 * 60.0 + 5 * sin(twopi * 16 * p))); - double echo2 = delread4(&s->echo2, 1000 / (0.25 * 60.0 + 5 * cos(twopi * 16 * p))); + double echo1 = delread4(&s->echo1, 1000 / (0.01 * 60.0 + 5 * sin(twopi * 16 * p))); + double echo2 = delread4(&s->echo2, 1000 / (0.01 * 60.0 + 5 * cos(twopi * 16 * p))); delwrite(&s->echo1, 0.9 * sin(echo1 + 0.5 * echo2)); delwrite(&s->echo2, 0.9 * sin(echo2 - snare - 0.5 * echo1));
diff @ 2016-05-14 22:27:25 +0100 diff --git a/src/go.c b/src/go.c index a52965a..cace026 100644 --- a/src/go.c +++ b/src/go.c @@ -99,7 +99,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[1] += snare; double echo1 = delread4(&s->echo1, 1000 / (0.01 * 60.0 + 5 * sin(twopi * 16 * p))); - double echo2 = delread4(&s->echo2, 1000 / (0.01 * 60.0 + 5 * cos(twopi * 16 * p))); + double echo2 = delread4(&s->echo2, 1000 / (0.1 * 60.0 + 5 * cos(twopi * 16 * p))); delwrite(&s->echo1, 0.9 * sin(echo1 + 0.5 * echo2)); delwrite(&s->echo2, 0.9 * sin(echo2 - snare - 0.5 * echo1));
diff @ 2016-05-14 22:27:31 +0100 diff --git a/src/go.c b/src/go.c index cace026..d3c9f99 100644 --- a/src/go.c +++ b/src/go.c @@ -98,8 +98,8 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += snare; compressed[1] += snare; - double echo1 = delread4(&s->echo1, 1000 / (0.01 * 60.0 + 5 * sin(twopi * 16 * p))); - double echo2 = delread4(&s->echo2, 1000 / (0.1 * 60.0 + 5 * cos(twopi * 16 * p))); + double echo1 = delread4(&s->echo1, 1000 / (1 * 60.0 + 5 * sin(twopi * 16 * p))); + double echo2 = delread4(&s->echo2, 1000 / (1 * 60.0 + 5 * cos(twopi * 16 * p))); delwrite(&s->echo1, 0.9 * sin(echo1 + 0.5 * echo2)); delwrite(&s->echo2, 0.9 * sin(echo2 - snare - 0.5 * echo1));
diff @ 2016-05-14 22:28:27 +0100 diff --git a/src/go.c b/src/go.c index d3c9f99..7d8070f 100644 --- a/src/go.c +++ b/src/go.c @@ -106,6 +106,17 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += echo1; compressed[1] += echo2; + double kick = 1 - wrap(256 * p); + kick *= kick; + kick *= kick; + kick *= kick; + kick *= kick; + kick *= 12; + kick = sin(twopi * kick); + kick = 3 * tanh(3 * kick); + compressed[0] += kick; + compressed[1] += kicl; + // compress mix down double mixdown[2] = { 0, 0 }; compress(mixdown, &s->compress[1], 5, 10, 25, 36, compressed);
diff @ 2016-05-14 22:28:28 +0100 diff --git a/src/go.c b/src/go.c index 7d8070f..ce31405 100644 --- a/src/go.c +++ b/src/go.c @@ -115,7 +115,7 @@ int go(S *s, int channels, const float *in, float *out) { kick = sin(twopi * kick); kick = 3 * tanh(3 * kick); compressed[0] += kick; - compressed[1] += kicl; + compressed[1] += kick; // compress mix down double mixdown[2] = { 0, 0 };
diff @ 2016-05-14 22:29:00 +0100 diff --git a/src/go.c b/src/go.c index ce31405..44b9377 100644 --- a/src/go.c +++ b/src/go.c @@ -70,7 +70,7 @@ int go(S *s, int channels, const float *in, float *out) { so2echo(&s->echo[c], 160, 4000, tanh(compressed[c] + impulse[c])); } - double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p))); + double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p)) * (wrap(64 * p) > 0.875 ? 2 : 1)); double bass = sin(3.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:29:08 +0100 diff --git a/src/go.c b/src/go.c index 44b9377..70d1051 100644 --- a/src/go.c +++ b/src/go.c @@ -70,7 +70,7 @@ int go(S *s, int channels, const float *in, float *out) { so2echo(&s->echo[c], 160, 4000, tanh(compressed[c] + impulse[c])); } - double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p)) * (wrap(64 * p) > 0.875 ? 2 : 1)); + double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p)) * (wrap(128 * p) > 0.875 ? 2 : 1)); double bass = sin(3.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:29:12 +0100 diff --git a/src/go.c b/src/go.c index 70d1051..6de3104 100644 --- a/src/go.c +++ b/src/go.c @@ -70,7 +70,7 @@ int go(S *s, int channels, const float *in, float *out) { so2echo(&s->echo[c], 160, 4000, tanh(compressed[c] + impulse[c])); } - double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p)) * (wrap(128 * p) > 0.875 ? 2 : 1)); + double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p)) * (wrap(128 * p) > 0.75 ? 2 : 1)); double bass = sin(3.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:29:26 +0100 diff --git a/src/go.c b/src/go.c index 6de3104..1843659 100644 --- a/src/go.c +++ b/src/go.c @@ -61,7 +61,7 @@ int go(S *s, int channels, const float *in, float *out) { // compress feedback double compressed[2] = { 0, 0 }; compress(compressed, &s->compress[0], 5, 10, 25, 48, feedback); - double gain = 1.5; + double gain = 0; compressed[0] *= gain; compressed[1] *= gain;
diff @ 2016-05-14 22:30:16 +0100 diff --git a/src/go.c b/src/go.c index 1843659..c1106a9 100644 --- a/src/go.c +++ b/src/go.c @@ -117,6 +117,11 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += kick; compressed[1] += kick; + int t = 100 * p * 60 * 256; + double bb = 0.5 * bytebeat( t ); + compressed[0] += bb; + compressed[1] += bb; + // compress mix down double mixdown[2] = { 0, 0 }; compress(mixdown, &s->compress[1], 5, 10, 25, 36, compressed);
diff @ 2016-05-14 22:30:42 +0100 diff --git a/src/go.c b/src/go.c index c1106a9..b5efe10 100644 --- a/src/go.c +++ b/src/go.c @@ -118,7 +118,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[1] += kick; int t = 100 * p * 60 * 256; - double bb = 0.5 * bytebeat( t ); + double bb = 0.5 * bytebeat( ((13 * (t >> 10)) % 19) * t ); compressed[0] += bb; compressed[1] += bb;
diff @ 2016-05-14 22:30:50 +0100 diff --git a/src/go.c b/src/go.c index b5efe10..ec5f34f 100644 --- a/src/go.c +++ b/src/go.c @@ -118,7 +118,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[1] += kick; int t = 100 * p * 60 * 256; - double bb = 0.5 * bytebeat( ((13 * (t >> 10)) % 19) * t ); + double bb = 0.5 * bytebeat( ((13 * (t >> 10)) % 16) * t ); compressed[0] += bb; compressed[1] += bb;
diff @ 2016-05-14 22:31:10 +0100 diff --git a/src/go.c b/src/go.c index ec5f34f..c30ed22 100644 --- a/src/go.c +++ b/src/go.c @@ -118,7 +118,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[1] += kick; int t = 100 * p * 60 * 256; - double bb = 0.5 * bytebeat( ((13 * (t >> 10)) % 16) * t ); + double bb = 0.5 * bytebeat( ((13 * (t >> 10)) % 16) * t ) * (wrap(256 * p) > 0.5); compressed[0] += bb; compressed[1] += bb;
diff @ 2016-05-14 22:31:31 +0100 diff --git a/src/go.c b/src/go.c index c30ed22..5b9db26 100644 --- a/src/go.c +++ b/src/go.c @@ -118,7 +118,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[1] += kick; int t = 100 * p * 60 * 256; - double bb = 0.5 * bytebeat( ((13 * (t >> 10)) % 16) * t ) * (wrap(256 * p) > 0.5); + double bb = 0.5 * bytebeat( ((11 * (t >> 10)) % 16) * t ) * (wrap(256 * p) > 0.5); compressed[0] += bb; compressed[1] += bb;
diff @ 2016-05-14 22:31:47 +0100 diff --git a/src/go.c b/src/go.c index 5b9db26..92b3603 100644 --- a/src/go.c +++ b/src/go.c @@ -84,8 +84,8 @@ int go(S *s, int channels, const float *in, float *out) { double hiss = wrap(32 * p + 0.333) < 0.0625; hiss *= noise(); hiss = biquad(highpass(&s->hiss, 2000, 3), hiss); - compressed[0] += hiss; - compressed[1] += hiss; + compressed[0] += 0*hiss; + compressed[1] += 0*hiss; double snare = 1 - wrap(64 * p + 0.5); snare *= snare;
diff @ 2016-05-14 22:32:00 +0100 diff --git a/src/go.c b/src/go.c index 92b3603..f9fe250 100644 --- a/src/go.c +++ b/src/go.c @@ -71,15 +71,15 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p)) * (wrap(128 * p) > 0.75 ? 2 : 1)); - double bass = sin(3.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); + double bass = 0*sin(3.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5)); double crunch = wrap(64 * p) < 0.125; crunch *= noise(); crunch = samphold(&s->crunchsh, crunch, phasor(&s->crunchph, 1500 + 500 * sin(twopi * 16 * p))); - compressed[0] += crunch; - compressed[1] += crunch; + compressed[0] += 0*crunch; + compressed[1] += 0*crunch; double hiss = wrap(32 * p + 0.333) < 0.0625; hiss *= noise();
diff @ 2016-05-14 22:32:27 +0100 diff --git a/src/go.c b/src/go.c index f9fe250..69e00d6 100644 --- a/src/go.c +++ b/src/go.c @@ -98,13 +98,6 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += snare; compressed[1] += snare; - double echo1 = delread4(&s->echo1, 1000 / (1 * 60.0 + 5 * sin(twopi * 16 * p))); - double echo2 = delread4(&s->echo2, 1000 / (1 * 60.0 + 5 * cos(twopi * 16 * p))); - - delwrite(&s->echo1, 0.9 * sin(echo1 + 0.5 * echo2)); - delwrite(&s->echo2, 0.9 * sin(echo2 - snare - 0.5 * echo1)); - compressed[0] += echo1; - compressed[1] += echo2; double kick = 1 - wrap(256 * p); kick *= kick; @@ -121,6 +114,13 @@ int go(S *s, int channels, const float *in, float *out) { double bb = 0.5 * bytebeat( ((11 * (t >> 10)) % 16) * t ) * (wrap(256 * p) > 0.5); compressed[0] += bb; compressed[1] += bb; + double echo1 = delread4(&s->echo1, 1000 / (2 * 60.0 + 5 * sin(twopi * 16 * p))); + double echo2 = delread4(&s->echo2, 1000 / (2 * 60.0 + 5 * cos(twopi * 16 * p))); + + delwrite(&s->echo1, 0.9 * sin(echo1 + 0.5 * echo2)); + delwrite(&s->echo2, 0.9 * sin(echo2 - bb - 0.5 * echo1)); + compressed[0] += echo1; + compressed[1] += echo2; // compress mix down double mixdown[2] = { 0, 0 };
diff @ 2016-05-14 22:32:34 +0100 diff --git a/src/go.c b/src/go.c index 69e00d6..303312c 100644 --- a/src/go.c +++ b/src/go.c @@ -117,7 +117,7 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (2 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (2 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, 0.9 * sin(echo1 + 0.5 * echo2)); + delwrite(&s->echo1, 0.9 * sin(echo1 + bb + 0.5 * echo2)); delwrite(&s->echo2, 0.9 * sin(echo2 - bb - 0.5 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:32:55 +0100 diff --git a/src/go.c b/src/go.c index 303312c..bc6e846 100644 --- a/src/go.c +++ b/src/go.c @@ -117,8 +117,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (2 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (2 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, 0.9 * sin(echo1 + bb + 0.5 * echo2)); - delwrite(&s->echo2, 0.9 * sin(echo2 - bb - 0.5 * echo1)); + delwrite(&s->echo1, sin(1.2 * echo1 + bb + 0.5 * echo2)); + delwrite(&s->echo2, sin(1.2 * echo2 - bb - 0.5 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:33:10 +0100 diff --git a/src/go.c b/src/go.c index bc6e846..edd87cf 100644 --- a/src/go.c +++ b/src/go.c @@ -117,8 +117,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (2 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (2 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(1.2 * echo1 + bb + 0.5 * echo2)); - delwrite(&s->echo2, sin(1.2 * echo2 - bb - 0.5 * echo1)); + delwrite(&s->echo1, sin(1.25 * echo1 + bb + 0.75 * echo2)); + delwrite(&s->echo2, sin(1.25 * echo2 - bb - 0.75 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:33:26 +0100 diff --git a/src/go.c b/src/go.c index edd87cf..9caf893 100644 --- a/src/go.c +++ b/src/go.c @@ -87,8 +87,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[0] += 0*hiss; compressed[1] += 0*hiss; - double snare = 1 - wrap(64 * p + 0.5); - snare *= snare; + double snare = 1 - wrap(128 * p + 0.5); snare *= snare; snare *= snare; snare *= snare;
diff @ 2016-05-14 22:33:29 +0100 diff --git a/src/go.c b/src/go.c index 9caf893..7f09211 100644 --- a/src/go.c +++ b/src/go.c @@ -93,7 +93,7 @@ int go(S *s, int channels, const float *in, float *out) { snare *= snare; snare *= snare; snare *= noise(); - snare = tanh(5 * snare); + snare = 4 * tanh(5 * snare); compressed[0] += snare; compressed[1] += snare;
diff @ 2016-05-14 22:33:52 +0100 diff --git a/src/go.c b/src/go.c index 7f09211..3754a77 100644 --- a/src/go.c +++ b/src/go.c @@ -30,6 +30,7 @@ typedef struct { float echo1buf[SR]; DELAY echo2; float echo2buf[SR]; + double tempo; } S; // per sample DSP callback @@ -40,11 +41,12 @@ int go(S *s, int channels, const float *in, float *out) { s->reloaded = 0; s->echo1.length = SR; s->echo2.length = SR; + s->tempo = 0.01; } double impulse[2] = { s->reloaded, s->reloaded }; // modulate delay times - double p = phasor(&s->phase, 0.01); + double p = phasor(&s->phase, s->tempo); double modulation = 10 * cos(twopi * p); double feedback[2] = { delread4(&s->echo[1].del, 200 - modulation)
diff @ 2016-05-14 22:34:05 +0100 diff --git a/src/go.c b/src/go.c index 3754a77..da10c4a 100644 --- a/src/go.c +++ b/src/go.c @@ -112,7 +112,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[1] += kick; int t = 100 * p * 60 * 256; - double bb = 0.5 * bytebeat( ((11 * (t >> 10)) % 16) * t ) * (wrap(256 * p) > 0.5); + double bb = 0.5 * bytebeat( ((11 * (t >> 9)) % 16) * t ) * (wrap(256 * p) > 0.5); compressed[0] += bb; compressed[1] += bb; double echo1 = delread4(&s->echo1, 1000 / (2 * 60.0 + 5 * sin(twopi * 16 * p)));
diff @ 2016-05-14 22:34:12 +0100 diff --git a/src/go.c b/src/go.c index da10c4a..27dc076 100644 --- a/src/go.c +++ b/src/go.c @@ -112,7 +112,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[1] += kick; int t = 100 * p * 60 * 256; - double bb = 0.5 * bytebeat( ((11 * (t >> 9)) % 16) * t ) * (wrap(256 * p) > 0.5); + double bb = 0.5 * bytebeat( ((11 * (t >> 9)) % 19) * t ) * (wrap(256 * p) > 0.5); compressed[0] += bb; compressed[1] += bb; double echo1 = delread4(&s->echo1, 1000 / (2 * 60.0 + 5 * sin(twopi * 16 * p)));
diff @ 2016-05-14 22:34:27 +0100 diff --git a/src/go.c b/src/go.c index 27dc076..676469d 100644 --- a/src/go.c +++ b/src/go.c @@ -73,7 +73,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p)) * (wrap(128 * p) > 0.75 ? 2 : 1)); - double bass = 0*sin(3.5 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); + double bass = sin(3 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:34:40 +0100 diff --git a/src/go.c b/src/go.c index 676469d..09ac27d 100644 --- a/src/go.c +++ b/src/go.c @@ -72,7 +72,7 @@ int go(S *s, int channels, const float *in, float *out) { so2echo(&s->echo[c], 160, 4000, tanh(compressed[c] + impulse[c])); } - double b = wrap(wrap(100 * p) * (60 - 10 * wrap(32 * p)) * (wrap(128 * p) > 0.75 ? 2 : 1)); + double b = wrap(wrap(100 * p) * (60 - 10 * (wrap(32 * p) < 0.5)) * (wrap(128 * p) > 0.75 ? 2 : 1)); double bass = sin(3 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:34:58 +0100 diff --git a/src/go.c b/src/go.c index 09ac27d..5654c99 100644 --- a/src/go.c +++ b/src/go.c @@ -115,8 +115,8 @@ int go(S *s, int channels, const float *in, float *out) { double bb = 0.5 * bytebeat( ((11 * (t >> 9)) % 19) * t ) * (wrap(256 * p) > 0.5); compressed[0] += bb; compressed[1] += bb; - double echo1 = delread4(&s->echo1, 1000 / (2 * 60.0 + 5 * sin(twopi * 16 * p))); - double echo2 = delread4(&s->echo2, 1000 / (2 * 60.0 + 5 * cos(twopi * 16 * p))); + double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p))); + double echo2 = delread4(&s->echo2, 1000 / (60.0 + 5 * cos(twopi * 16 * p))); delwrite(&s->echo1, sin(1.25 * echo1 + bb + 0.75 * echo2)); delwrite(&s->echo2, sin(1.25 * echo2 - bb - 0.75 * echo1));
diff @ 2016-05-14 22:35:06 +0100 diff --git a/src/go.c b/src/go.c index 5654c99..f1a791e 100644 --- a/src/go.c +++ b/src/go.c @@ -115,8 +115,8 @@ int go(S *s, int channels, const float *in, float *out) { double bb = 0.5 * bytebeat( ((11 * (t >> 9)) % 19) * t ) * (wrap(256 * p) > 0.5); compressed[0] += bb; compressed[1] += bb; - double echo1 = delread4(&s->echo1, 1000 / (60.0 + 5 * sin(twopi * 16 * p))); - double echo2 = delread4(&s->echo2, 1000 / (60.0 + 5 * cos(twopi * 16 * p))); + double echo1 = delread4(&s->echo1, 1000 / (0.25 * 60.0 + 5 * sin(twopi * 16 * p))); + double echo2 = delread4(&s->echo2, 1000 / (0.25 * 60.0 + 5 * cos(twopi * 16 * p))); delwrite(&s->echo1, sin(1.25 * echo1 + bb + 0.75 * echo2)); delwrite(&s->echo2, sin(1.25 * echo2 - bb - 0.75 * echo1));
diff @ 2016-05-14 22:35:18 +0100 diff --git a/src/go.c b/src/go.c index f1a791e..f5c806f 100644 --- a/src/go.c +++ b/src/go.c @@ -41,11 +41,12 @@ int go(S *s, int channels, const float *in, float *out) { s->reloaded = 0; s->echo1.length = SR; s->echo2.length = SR; - s->tempo = 0.01; + //s->tempo = 0.01; } double impulse[2] = { s->reloaded, s->reloaded }; // modulate delay times + s->tempo *= 0.999999; double p = phasor(&s->phase, s->tempo); double modulation = 10 * cos(twopi * p); double feedback[2] =
diff @ 2016-05-14 22:35:24 +0100 diff --git a/src/go.c b/src/go.c index f5c806f..bc38d5b 100644 --- a/src/go.c +++ b/src/go.c @@ -46,7 +46,7 @@ int go(S *s, int channels, const float *in, float *out) { double impulse[2] = { s->reloaded, s->reloaded }; // modulate delay times - s->tempo *= 0.999999; + //s->tempo *= 0.999999; double p = phasor(&s->phase, s->tempo); double modulation = 10 * cos(twopi * p); double feedback[2] =
diff @ 2016-05-14 22:35:36 +0100 diff --git a/src/go.c b/src/go.c index bc38d5b..6a33838 100644 --- a/src/go.c +++ b/src/go.c @@ -73,7 +73,7 @@ int go(S *s, int channels, const float *in, float *out) { so2echo(&s->echo[c], 160, 4000, tanh(compressed[c] + impulse[c])); } - double b = wrap(wrap(100 * p) * (60 - 10 * (wrap(32 * p) < 0.5)) * (wrap(128 * p) > 0.75 ? 2 : 1)); + double b = wrap(wrap(100 * p) * (60 + 60 * (wrap(32 * p) < 0.5)) * (wrap(128 * p) > 0.75 ? 2 : 1)); double bass = sin(3 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:35:46 +0100 diff --git a/src/go.c b/src/go.c index 6a33838..0cf856c 100644 --- a/src/go.c +++ b/src/go.c @@ -73,7 +73,7 @@ int go(S *s, int channels, const float *in, float *out) { so2echo(&s->echo[c], 160, 4000, tanh(compressed[c] + impulse[c])); } - double b = wrap(wrap(100 * p) * (60 + 60 * (wrap(32 * p) < 0.5)) * (wrap(128 * p) > 0.75 ? 2 : 1)); + double b = wrap(wrap(100 * p) * (60 + 60 * (wrap(128 * p) < 0.5)) * (wrap(128 * p) > 0.75 ? 2 : 1)); double bass = sin(3 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:36:02 +0100 diff --git a/src/go.c b/src/go.c index 0cf856c..0220877 100644 --- a/src/go.c +++ b/src/go.c @@ -116,8 +116,8 @@ int go(S *s, int channels, const float *in, float *out) { double bb = 0.5 * bytebeat( ((11 * (t >> 9)) % 19) * t ) * (wrap(256 * p) > 0.5); compressed[0] += bb; compressed[1] += bb; - double echo1 = delread4(&s->echo1, 1000 / (0.25 * 60.0 + 5 * sin(twopi * 16 * p))); - double echo2 = delread4(&s->echo2, 1000 / (0.25 * 60.0 + 5 * cos(twopi * 16 * p))); + double echo1 = delread4(&s->echo1, 1000 / (0.125 * 60.0 + 5 * sin(twopi * 16 * p))); + double echo2 = delread4(&s->echo2, 1000 / (0.125 * 60.0 + 5 * cos(twopi * 16 * p))); delwrite(&s->echo1, sin(1.25 * echo1 + bb + 0.75 * echo2)); delwrite(&s->echo2, sin(1.25 * echo2 - bb - 0.75 * echo1));
diff @ 2016-05-14 22:36:20 +0100 diff --git a/src/go.c b/src/go.c index 0220877..0252148 100644 --- a/src/go.c +++ b/src/go.c @@ -74,7 +74,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 + 60 * (wrap(128 * p) < 0.5)) * (wrap(128 * p) > 0.75 ? 2 : 1)); - double bass = sin(3 * sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); + double bass = sin(sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:36:36 +0100 diff --git a/src/go.c b/src/go.c index 0252148..5b46cd4 100644 --- a/src/go.c +++ b/src/go.c @@ -46,7 +46,7 @@ int go(S *s, int channels, const float *in, float *out) { double impulse[2] = { s->reloaded, s->reloaded }; // modulate delay times - //s->tempo *= 0.999999; + s->tempo *= 0.999999; double p = phasor(&s->phase, s->tempo); double modulation = 10 * cos(twopi * p); double feedback[2] =
diff @ 2016-05-14 22:36:45 +0100 diff --git a/src/go.c b/src/go.c index 5b46cd4..0b549fb 100644 --- a/src/go.c +++ b/src/go.c @@ -101,7 +101,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[1] += snare; - double kick = 1 - wrap(256 * p); + double kick = 1 - wrap(512 * p); kick *= kick; kick *= kick; kick *= kick;
diff @ 2016-05-14 22:36:52 +0100 diff --git a/src/go.c b/src/go.c index 0b549fb..dfa4aad 100644 --- a/src/go.c +++ b/src/go.c @@ -46,7 +46,7 @@ int go(S *s, int channels, const float *in, float *out) { double impulse[2] = { s->reloaded, s->reloaded }; // modulate delay times - s->tempo *= 0.999999; + //s->tempo *= 0.999999; double p = phasor(&s->phase, s->tempo); double modulation = 10 * cos(twopi * p); double feedback[2] =
diff @ 2016-05-14 22:37:09 +0100 diff --git a/src/go.c b/src/go.c index dfa4aad..aa2dc00 100644 --- a/src/go.c +++ b/src/go.c @@ -95,8 +95,9 @@ int go(S *s, int channels, const float *in, float *out) { snare *= snare; snare *= snare; snare *= snare; + snare *= snare; snare *= noise(); - snare = 4 * tanh(5 * snare); + snare = tanh(5 * snare); compressed[0] += snare; compressed[1] += snare;
diff @ 2016-05-14 22:37:24 +0100 diff --git a/src/go.c b/src/go.c index aa2dc00..7d2e6f0 100644 --- a/src/go.c +++ b/src/go.c @@ -114,7 +114,7 @@ int go(S *s, int channels, const float *in, float *out) { compressed[1] += kick; int t = 100 * p * 60 * 256; - double bb = 0.5 * bytebeat( ((11 * (t >> 9)) % 19) * t ) * (wrap(256 * p) > 0.5); + double bb = 0 * bytebeat( ((11 * (t >> 9)) % 19) * t ) * (wrap(256 * p) > 0.5); compressed[0] += bb; compressed[1] += bb; double echo1 = delread4(&s->echo1, 1000 / (0.125 * 60.0 + 5 * sin(twopi * 16 * p)));
diff @ 2016-05-14 22:37:31 +0100 diff --git a/src/go.c b/src/go.c index 7d2e6f0..c81c6b3 100644 --- a/src/go.c +++ b/src/go.c @@ -74,7 +74,7 @@ int go(S *s, int channels, const float *in, float *out) { } double b = wrap(wrap(100 * p) * (60 + 60 * (wrap(128 * p) < 0.5)) * (wrap(128 * p) > 0.75 ? 2 : 1)); - double bass = sin(sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); + double bass = 0*sin(sin(twopi * b + (wrap(32 * p) < 0.75 ? 2 : 4) * sin(twopi * (wrap(32 * p) < 0.75 ? 128 : 64 * 5) * p) * sin(twopi * (wrap(16 * p) < 0.75 ? 2 : 4) * b))); compressed[0] += samphold(&s->bass[0], bass, wrap(30 * b)); compressed[1] += samphold(&s->bass[1], bass, wrap(30 * b + 0.5));
diff @ 2016-05-14 22:38:03 +0100 diff --git a/src/go.c b/src/go.c index c81c6b3..b8f6329 100644 --- a/src/go.c +++ b/src/go.c @@ -110,8 +110,8 @@ int go(S *s, int channels, const float *in, float *out) { kick *= 12; kick = sin(twopi * kick); kick = 3 * tanh(3 * kick); - compressed[0] += kick; - compressed[1] += kick; + //compressed[0] += kick; + //compressed[1] += kick; int t = 100 * p * 60 * 256; double bb = 0 * bytebeat( ((11 * (t >> 9)) % 19) * t ) * (wrap(256 * p) > 0.5); @@ -120,8 +120,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (0.125 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (0.125 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(1.25 * echo1 + bb + 0.75 * echo2)); - delwrite(&s->echo2, sin(1.25 * echo2 - bb - 0.75 * echo1)); + delwrite(&s->echo1, sin(1.25 * echo1 + 0.75 * echo2)); + delwrite(&s->echo2, sin(1.25 * echo2 - 0.75 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:38:09 +0100 diff --git a/src/go.c b/src/go.c index b8f6329..6812cb0 100644 --- a/src/go.c +++ b/src/go.c @@ -120,8 +120,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (0.125 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (0.125 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(1.25 * echo1 + 0.75 * echo2)); - delwrite(&s->echo2, sin(1.25 * echo2 - 0.75 * echo1)); + delwrite(&s->echo1, sin(1.2 * echo1 + 0.75 * echo2)); + delwrite(&s->echo2, sin(1.2 * echo2 - 0.75 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:38:14 +0100 diff --git a/src/go.c b/src/go.c index 6812cb0..c14f8a6 100644 --- a/src/go.c +++ b/src/go.c @@ -120,8 +120,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (0.125 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (0.125 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(1.2 * echo1 + 0.75 * echo2)); - delwrite(&s->echo2, sin(1.2 * echo2 - 0.75 * echo1)); + delwrite(&s->echo1, sin(1.1 * echo1 + 0.75 * echo2)); + delwrite(&s->echo2, sin(1.1 * echo2 - 0.75 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:38:22 +0100 diff --git a/src/go.c b/src/go.c index c14f8a6..f8428b5 100644 --- a/src/go.c +++ b/src/go.c @@ -120,8 +120,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (0.125 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (0.125 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(1.1 * echo1 + 0.75 * echo2)); - delwrite(&s->echo2, sin(1.1 * echo2 - 0.75 * echo1)); + delwrite(&s->echo1, sin(1.1 * echo1 + 0.7 * echo2)); + delwrite(&s->echo2, sin(1.1 * echo2 - 0.7 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:38:29 +0100 diff --git a/src/go.c b/src/go.c index f8428b5..83a5e27 100644 --- a/src/go.c +++ b/src/go.c @@ -97,7 +97,7 @@ int go(S *s, int channels, const float *in, float *out) { snare *= snare; snare *= snare; snare *= noise(); - snare = tanh(5 * snare); + snare = 0*tanh(5 * snare); compressed[0] += snare; compressed[1] += snare; @@ -120,8 +120,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (0.125 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (0.125 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(1.1 * echo1 + 0.7 * echo2)); - delwrite(&s->echo2, sin(1.1 * echo2 - 0.7 * echo1)); + delwrite(&s->echo1, sin(1.1 * echo1 + 0.5 * echo2)); + delwrite(&s->echo2, sin(1.1 * echo2 - 0.5 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:38:33 +0100 diff --git a/src/go.c b/src/go.c index 83a5e27..a71ee65 100644 --- a/src/go.c +++ b/src/go.c @@ -120,8 +120,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (0.125 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (0.125 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(1.1 * echo1 + 0.5 * echo2)); - delwrite(&s->echo2, sin(1.1 * echo2 - 0.5 * echo1)); + delwrite(&s->echo1, sin(1 * echo1 + 0.5 * echo2)); + delwrite(&s->echo2, sin(1 * echo2 - 0.5 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:38:40 +0100 diff --git a/src/go.c b/src/go.c index a71ee65..27d1de4 100644 --- a/src/go.c +++ b/src/go.c @@ -120,8 +120,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (0.125 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (0.125 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(1 * echo1 + 0.5 * echo2)); - delwrite(&s->echo2, sin(1 * echo2 - 0.5 * echo1)); + delwrite(&s->echo1, sin(1 * echo1 + 0.45 * echo2)); + delwrite(&s->echo2, sin(1 * echo2 - 0.45 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:38:46 +0100 diff --git a/src/go.c b/src/go.c index 27d1de4..70fa155 100644 --- a/src/go.c +++ b/src/go.c @@ -120,8 +120,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (0.125 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (0.125 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(1 * echo1 + 0.45 * echo2)); - delwrite(&s->echo2, sin(1 * echo2 - 0.45 * echo1)); + delwrite(&s->echo1, sin(1 * echo1 + 0.3 * echo2)); + delwrite(&s->echo2, sin(1 * echo2 - 0.3 * echo1)); compressed[0] += echo1; compressed[1] += echo2;
diff @ 2016-05-14 22:39:00 +0100 diff --git a/src/go.c b/src/go.c index 70fa155..4f2b99b 100644 --- a/src/go.c +++ b/src/go.c @@ -120,8 +120,8 @@ int go(S *s, int channels, const float *in, float *out) { double echo1 = delread4(&s->echo1, 1000 / (0.125 * 60.0 + 5 * sin(twopi * 16 * p))); double echo2 = delread4(&s->echo2, 1000 / (0.125 * 60.0 + 5 * cos(twopi * 16 * p))); - delwrite(&s->echo1, sin(1 * echo1 + 0.3 * echo2)); - delwrite(&s->echo2, sin(1 * echo2 - 0.3 * echo1)); + delwrite(&s->echo1, sin(0.75 * echo1 + 0.3 * echo2)); + delwrite(&s->echo2, sin(0.75 * echo2 - 0.3 * echo1)); compressed[0] += echo1; compressed[1] += echo2;