would you like your codebox in the next synthCore library?
After two years, the 'synthLab Libary,' is almost complete. Would you like to add anything to it? The full listing is 900 lines currently, so here are the signatures for the current methods in it:
/* -----------------------------------------------------------------------
SYNTHLAB LIBRARY (beta 2)
/* -----------------------------------------------------------------------
// --- MIXERS AND SHAPERS ---//
ramp0(in1, linc); // ramps to new val, incr = 1/#samples
smoother1(val); // smoothing over ~46 clock cycles
mixer3(x); // 3-way linear mixer, returns gain for 3channels
pan3db(x); // pan with -3dB center
parabol(in1, shape); // parabolic shaper
hyperbol(in1, shape); // hyperbolic shaper
a2db(a); // quick amp to deciBel conversion
db2a(db); // quick deciBel to amp conversion
qsin(x); // quick sine calc
qcos(x); // quick cosine emulation
qtan(x); // simple tan emulation
qtanh2(x); // Good-quality tanh emulation
powerfade(L1, L2, R1, R2, x); // ganged fader with exp crossfade
stereomix(L1, L2, R1, R2, x); // stereo ganged mix
quadAutoMix(in1, in2, in3, in4); // scale 4 inputs to add up to unity gain
// --- RESAMPLING ---//
spline2xUp(in1); // 2x upsampling, Catmulli Rom spline
spline2xDn(in1, in2); // 2x downsampling, Catmulli Rom spline
spline4xUp(in1); // 4x upsampling, Catmulli Rom spline
spline4xDn(in1, in2, in3, in4); // 4x downsampling, Catmulli Rom spline
upsample(input); // 3x upsampling, sinc coefficients
downsample(val1, val2, val3); // 3x downsampling, sinc coefficients
// --- EQUALIZERS AND DYNAMICS ---//
lo1pole(left, right, p); // 1-pole low pass filter
loshelf12(in1, in2, pitch, db); // 1-pole stereo low-shelving EQ filter
hishelf12(in1, in2, pitch, db); // 1-pole stereo low-shelving EQ filter
shelf2corelo(in1, a0, a1, b1, w); // 2-pole low shelving EQ core
loshelf22(in1, in2, p, db); // 2-pole stereo low-shelving EQ filter
shelf2corehi(in1, a0, a1, b1); // 2-pole high shelving EQ core
hishelf22(in1, in2, p, db); // 2-pole stereo low-shelving EQ filter
peakeq1(in1, p, db, bw); // 1-pole peak EQ core
peakeq1core(in1, w, d2, a0, a1, a2);// 2-pole peak EQ core
peakeq12(in1, in2, p, db, bw); // 2-pole stereo peak EQ filter
// utility function for demoing EQs:
eqsel(in1, in2, lop, midp, hip, log, midg, hig, bw, mode);
limit1(in1, lclk); // zero-crossOver limiter to unity gain
limit2(in1,in2,lvl,window,att,rel); // stereo limiter with settable window
// combined compressor and limiter
compander1(in1, type, amp, thresh, ratio, att, rel, lclk);
// --- FILTERS ---//
// 2-pole Butterworth svf core:
svfCore1(in1, wa, d1, ft1, ft1n, ft2, zlp, zbp);
// Fully 3x-oversampled 2p/4p type -mixing SVF
filt3x(input,f0, q0, s0, lx, bx, hx, f2x, l4x, b4x, h4x, f4x, rsrx2pi){
svfCoeffs3x(f0, q0, s0, f4x, rsrx2pi); // coefficents for filt3x()
// 5D saturating filter with table-based gain limiting
filt5d3x(input, pitch, poles, res, sat, type, srflt);
svfCore5(in1, w, d, d2, g1, g2); // Better 2-pole Butterworth core
saturator5(in1, sat, lclk, linc); // 2x-oversampling tanh-based saturator
// 5d oversaturating filter with 2x tanh-based saturation
filt5d2x(in1, pitch, poles, res, sat, type, drive, lclk, linc);
have you check out stkr.waveshaping and those algorithms? They are their own thing already of course. But I think they are great wave shaping algorithms that would add things.
Thats an interesting thread on the forum. Unfoirtunately the links on the strkr website havent worked a long time.
I found in an old archive of mine these functions, if someone has interest to implement them in the SynthCore library:
By the way, great project, Ernest.
I have the whole library downloaded with the algorithms, gen expr. Code etc. I can dig those up though I’m not sure if that’s ok to share this way? I think so.
also the website isn’t active but I believe I got them from the github.
Lemme know if you want them. I also release dance music commercially and have a fairly deep knowledge of sound design. I'm just not quite a coder or Max expert. But if you ever want someone to chat with about this I'm always available for that sort of stuff. Have an interesting idea I refer to as multiband synthesis as well that maybe you could implement better than I...
You're asking for codeboxes, but I do have some gen~ stuff that people might like a lot. Side chain pumper effect that automatically adjust with changing tempo. Multiband algorithmic distortions. Very modern kick drum, with fm noise (using your envelopes). Cascading mixer matrix that's probably wildly inefficient, but still lets you do fairly smooth wavetable fading.
Well Ryan, I'd certainly be glad to hire you for at least a nominal fee to make some presets for Husserl 4, which will also include a multiphonic sequencer like the original Reaktor one, but it's going to be a while before I get to that. It's going to take at least a couple more weeks to finish converting the polyphonic Husserl 2 into the multiphonic Husserl 3.