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