Synthcore 2.1 library upgrade next week

    Feb 02 2018 | 3:56 pm
    Yofiel is pleased to provide the Synthcore 2.1 library, which provides quite a number of enhancements over the 2.0 version, next week. Existing customers will receive the upgrade for free, and with the new release, the price will be increasing, so this is mentioned now as fair notice. The library now lives at:
    Synthcore2 Library (Max7)
    With over 1500 downloads in the first six months, this is the most popular item on this site. The library bundle includes: the Synthcore2 library, with over a hundred functions written in Cycling74 gen~ codebox for audio; two complete synths built with the library that implement the audio path entirely in gen~; a demo patch illustrating usage of the main library functions; data files; and a suite of demo patches with graphical designs of the same gen~ and MAX patches.
    For free downloadable demos, please see the compiled versions forWin32,Win64, andMacOS X.
    Synthcore 2.1
    Released on the first-year anniversary of Synthcore 2.0, The 2.1 upgrade includes the BEAP 5D Filter available for free on this site. Version 2.1 also adds shelving filters, parametric EQ filters, and more biquad filters. There are several FIR/IIR versions that are not biquad based. The Synthcore 2.1 library versions are redesigned so that coefficients can be stored statically within the filter calls, and are only recalculated if the filter controls change. As a side benefit of static coefficient calculation at Parameter value changes, the benefit of passing in constants is minimal, so the signatures are greatly simplified. However, if for example there are two channels with the same filter settings, this means the coefficients would be calculated twice necessarily, once for each channel. Multichannel versions are therefore included for more performance optimization.
    //*************** SYNTHCORE 2.1 FOR GEN 7.3.4 ********************* //
    // UTILITY FUNCTION SIGNATURES *********************************** //
    out = qsin(in);    // quick transcendental calcs
    out = qcos(in);
    out = qtan(in);
    gain= db2a(db);    // quick level conversion
    db  = a2dB(gain);    
    out = smoothermsecs(in);// predelay smoother, 0~0.24
    out = smoother1(val){     // smoothing over ~46 clock cycles
    out = smoother2(val);     // smoothing over ~400 clock cycles
    out = smoother3(val);    // slowest smoothing for long delay line times
    out = pan3db(x);        // pan with -3dB center
    out = powerfade(in1L, i2L, in1R, in2R, x); // ganged fader with exp crossfade
    out = stereomix(in1L, in2L, in1R, in2R, x);// stereo ganged mix
    out = ramp(inc);        // quickest ramp generator, 0 to 1 over inc cycles
    out = ramptrig(msecs, trg);// triggered 1-shot ramp, time in msecs
    // OSCILLATOR FUNCTION SIGNATURES******************************** //
    out = parasine(inc);    // a sine osc approximation. with much lower cpu
    out = triwave(ramp, width);    // variable tri/saw with simple AA
    out = karplus(impulse, P, dampen);     // Karplus oscillator
    out = karplusd(impulse, P, diffuse);     // diffused Karplus
    out = karplusm(impulse, fc, mod);     // mod Karplus
    out = noiseosc(type, p, fc, q);        //lp/bp/hp/notch white/pink noise
    out = waveset(sel, width, ramp, wavesets); // waveset oscillator, crosswave interp.
    out = eptr3x(ramp, inc, width, eptr); // 3x-oversampled AA Pulse, table-based calcs
    out = eptrx(ramp, inc, width, eptr);    //antialiasing slope for pulse osc
    out = lfo(sel, Fc, wid, snc_en, trg);     // basic LFO
    out = lfopoly(sel, Fc, sprd, sprdlvl, sprdtype, wid, sncen, trg); // LFO, voice spread
    // ENVELOPES FUNCTION SIGNATURES ********************************** //
    out = adsr(gate,predelay,att,dec,sus,susn,rel); basic ADSR
    out = adsrloop(trg,gate,predelay,att,dec,sus,susn,rel,mode);// ADSR with loop mode
    out = padsrloop(trg,gate,pre1, pre2,att,dec,sus,rel,mode); // PADSR, loop & predelay
    out = adbdsrloop(trg,gate,predelay,att,dec1,brk,dec2,sus,rel,mode); // ADBDSR, loop
    out = padbdsrloop)trg,gate,pre1,pre2,att,dec1,brk,dec2,sus,rel,mode); // PADBDSR. predelay & loop
    // FILTER FUNCTIONS  ----------------------------------------------------
    out = lo1pole1 (in, P);                // 6db lowpass filter 
    out = hi1pole1(in, P);                    // 6db highpass filter 
    out1, out2 = lo1pole2 (in1, in2, P);        // stereo 6db lowpass filter 
    out1, out2 = hi1pole2(in1, in2, P);        // stereo 6db highpass filter 
    out =  loshelf(in, P, dB);                // 12dB/oct lo shelf, +/-12dB range
    out =  hishelf(in, P, dB);                // 12dB/oct hi shelf, +/-12dB range
    out =  loshelf2(in, P, dB);                // 24dB/oct lo shelf, +/-12dB range
    out =  hishelf2(in, P, dB);            // 24dB/oct hi shelf, +/-12dB range
    out1, out2 =  hishelfStereo(in1, in2, P, dB); // stereo hishelf
    out1, out2 =  loshelfStereo(in1, in2, P dB); //stereo lowshelf
    out = biquad0    (in, a0, a1, a2, b1, b2);     // biquad direct form 1
    out = biquad     (in, a0, a1, a2, b1, b2);    // biquad optimized form 2
    out = biquadresonant(in, P, Q);            //resonant
    out = biquadgainresonant(in, P, Q, gain);    //gain resonant
    out = biquadlo   (in, Fc, Q);              // biquad lowpass, simple
    out = biquadlp1  (in, Fc, Q);             // tuned  lowpass 
    out = biquadlo2  (in, P,  Q);            // biquad lowpass, MIDI pitch Fc,
    out = biquadlo3  (in, P,  Q);            // biquad lowpass, qain-limiting
    out = biquadband (in, Fc, Q);            // biquad bandpass, simple
    out = biquadbp1  (in, Fc, Q);             // tuned  bandpass 
    out = biquadband2(in, P,  Q);            // biquad bandpass, MIDI pitch Fc,
    out = biquadband3(in, P, Q);            // biquad bandpass, gain limiting
    out = biquadband4(in, P,  Q);            // biquad bandpass, unity gain
    out = biquadbandgain(in, Fc, Q, gain);    // biquad bandpass gain
    out = biquadhi   (in, Fc, Q);            // biquad highpass, simple
    out = biquadhp1  (in, Fc, Q);             // tuned  highpass 
    out = biquadhi2  (in, P,  Q);            // biquad highpass, MIDI pitch Fc,
    out = biquadhi3  (in, P,  Q);            // biquad highpass, gain limiting
    out = biquadhigain(P, Q, gain);            // biquad gain hipass
    out = biquadnotch(in, Fc, Q);            // biquad notch, somple 
    out = biquadgainbandstop(in, P, Q, gain);    //gain gandstop
    out = biquadbandstop(in, P, Q);            // biquad bandstop
    out = biquadpeaknotch(in, Fc, Q, gain);    // biquad peak/notch 
    out = biquadallpass(in, P, Q);            // biquad allpass
    out = biquadgainallpass(in, P, Q, gain);    // gain allpass
    val = biquadamp  (w,  a0, a1, a2, b1, b2);    // biquad gain @ specfic fc
    out = filt5d(in, P, Q, type, poles, drive);    // 3x-oversampled 5d filter
    out1, out2, out3 =  upsample(in);        // 3x upsampling with sinc coefficients
    out = downsample(out1, out2, out3);        // 3x downsampling with sinc coefficients
    out = comb(input, delay, feedback, lvl); // feedforward comb filter
    // EFFECTS FUNCTION SIGNATURES ************************************* //
    out1, out2 = ping0(L, R, delayL, delayR, cross, feedback); // simple stereo delay
    out1, out2 = ping1(L, R, delayL, delayR, cross, feedback, 
            locut, hicut); // stereo delay, 1pole filter
    out1, out2 = ping3(L, R, delayL, delayR, cross, feedback,
              loP, loG, midP, midG, midQ, hiP, hiG); //  stereo delay with 3band EQ
    out1, out2 = chorus(in1, in2, del, deep, sprd, mix); // dual quad-band chorus
    out = diffdelay(in, delay, diff);            //  basic diffusion delay
    out = diffdelSmall(in, depth, time);     // small diffusion delay
    out = diffdelBig(in, depth, time);      // large diffusion delay
    out = earlydelF(in, Dffs, size, ha1, hb0, hb1, la1, lb0, lb1); // biquad diff delay
    out = tankLeft(in, damp, decay);          // left late reflections
    out = tankRight(in, damp, decay);      // right late reflections
    out1, out2 = reverb(in1, in2, pre, cut, damp, decay, lvl);//acoustic reverb
    out1, out2 = rev66(in1, in2, pre, cut, latemix, size, time, inc, 
              spin, rndm, hishelf, loshelf); // production-quality reverb
    out1, out2 = limit(in1, in2, lvl, window, attlo, atthi, rello, relhi); // stereo limiter
    // ***************************************************************** //
    Synthcore 2 Patch and Source Code
    Synthcore 2 is one of the most powerful analog emulation synthesizers ever made, based on features from the OSCAR and Waldorf Q (both of which, as you may know, were discontinued because they were too expensive to build in hardware). The monophonic version is now available for free download in Windows 32/64, Mac OS X, and open-source Cycling'74 Max 7 code.
    * 3 oscillators, with feedback, FM, four kinds of sync, phase control, ring modulation, and dual output mixing; 61 morphing waveforms, including: pulse, saw, and triangle oscillators with newest EPTR anti-aliasing technology; Karplus physical modeling; multiple filtered noise options; 48 cross-sampled waveset oscillators; and sub oscillator.
    * 2 comb filters, both with pitch tracking.
    * 2 5-d serial/parallel, 2/4-pole, 3x-oversampled SVF filters, with continuous control of: filter type; number of filter poles; drive + saturation: cutoff; resonance; serial/parallel output; and output pan.
    * 3 envelopes. Predelay and 7-stage breakpoint included. Multi, single, loop, and clock triggers.
    * 3 LFOs, all with morphing waveforms, gate sync, and freq. control.
    Modulation matrix with 15 nodes, each scalable from any of 60 sources to 135 destinations. Sample and hold, gated, and MIDI sources available. Many compound sources and destinations for rapid patching. Fixed- and variable-source modulations may shape and scale each other within the matrix.
    * Multi-mode glide and glissando, with unique glissando pattern generator.
    Stereo effects chain with 2 tempo delays, 8-band chorus, realistic reverb, and advanced limiting.
    * Toggle-mode monophonic keyboard. Notes may optionally be stored in programs.
    Flexible multi-channel architecture functions like a modular synth without needing rewiring. Monitor outputs at all mix points. LFOs, envelopes, and other modulation sources may modulate effects parameters.

    • Feb 02 2018 | 5:00 pm
      an awesome library, thanks much for your hard work and contributions to the community!
    • Feb 14 2018 | 6:22 pm
      Glad you like it. The 2.1 version is now available.
      Synthcore 2.1 also includes a gen~ implementation of Reverb66, originally in the instrument 'steampipe', designed for Reaktor by Martijn Zwartjesmatz in 2001. Native Instruments was very proud of this design, and duplicated it, only replacing the filters with parametric EQ, in its pro version. Their duplication included an error which caused the frequency modulation not to work. This version fixes the problem, although it doesn't do much to improve the reverb. But as Native Instruments considers this a premiere reverb, its gen~ implementation is available in the 2.1 library.
    • Jun 27 2020 | 1:21 pm
      Hey Ernest! I’m really interested in checking out your synthcore bundle to get my head around Gen codebox programming a little more but can’t find it online. Do you have a version that I can check out? Thanks!
    • Aug 01 2020 | 8:36 pm
      He Gennaro, sorry for not responding sooner. There is a scoping bug in the current gen~ implementation such that variables in called methods change the values of variables with the same name in the caller code. This means that people using a function library can get unexpected and apparently unpredictable behaviors if they use variables of the same name as in the library. Cycling74 is aware of the bug and my website is offline until they fix it. Apologies.