Psylab is a vsti plugin and standalone app dedicaced to kick bass designs based on unique advanced true cubic bezier curves system.
It was initially especially designed for personal psytrance kick and bass design applications, but can do much more now and fit any electronic genre.
I was tired of loosing time having to launch 1 plugin for kick, 1 for bass, 1 for scope, 1 for sidechain, then to sync all the stuff edits and constantly tab between windows. Psylab allows to centralize it all seamlessly, easy test different kicks with different basses, easy merge it all in projects, easy A-B compare while tweaking sound designs to get best results, and 1 clic ‘save it all’ to re-usable user programs.
Psylab offers up to 16x independant, sample accurate, hi rez true cubic beziers curves that can control many things like amp, pitch, phase, distortion, filter, morph, wavtables position, lfos or even oscillator shapes and more.. for deep and precise control of wave characteristics over time.
Its NOT a traditional poly synth. It can’t do some stuff as nicely as some other synths do, ie especially pads, hypersaws or polyphonic hi freq melodies stuff, as this wasn’t its initial design goal and many synths do that task pretty well already, but it can on the other hand go way deeper in areas like kick bass / one shots, and others precise timing designs via different and unique set of tools.
audio demo of other sound types presets wip
no sound beta teaser
In professional 3D animation/video hi-end softwares, there is always a powerful « animation editor », linked to the timeline, which defines curves set-up by « key-frames » to drive animated parameters.
Industry standard for those curves is using cubic béziers , because they are the most versatile in terms of precision and possible output shapes.
True cubic beziers offer 2x tangents, that are XY movable, allowing to control both in and out slopes, while preserving (or not.., at will..) a smooth continuity from a segment to the next. Resulting possibilities go way beyond traditional found in audio software « linear » curves, which are in best case usually only « roundable » via a single one dimension parameter at the center.
Psylab was built around the integration of this system at its core.
Main idea was to be able to drive audio events « animations », same way it’s done for parameters in vfx, with sample accurate, ultra tight, hi def bezier curves to contol a wide range of aspects of the sound over time, ie amplitude, frequency, oscillators shapes, filter, distort amount ect.. with ultimate precision. Psylab Curve Editor is large, fast and responsive, can be zoomed and scrolled, with a lot of dedicaced tools for precise editing and manipulating of the 16x curves.
Its also based on a WYSIWYG system, with drawn synced sound waveform under the currently edited curve.
While cubic bezier was most wanted initial goal, psylab also has +15 others different ‘segments modes’ which are lower on cpu (ie simpler quadratic bezier, with only one tangent, linear, steps, splines or sinus modes, depending on what wanna achieve, more traditional basic pow/log ect..), which can be set individually, per segment.
Each curve can be stored as preset / recalled / Init / Copy-Pasted. A wide range of processing options are available like scale, reverse, double size, randomize, shift/roll, ect.. A shape generator easy generates say 32 random steps, perfect beziers sinus ,tri, saws, squares ect… with control points true morphing ability.
This allows design of very complex and precise curves in a way that remains unmatched yet in other traditional or much more expensive hi-end vst synthesizers.
It’s also possible to directly drag n drop procedural shape presets on individual segments for faster workflow.
On top of the interface, main oscilloscope shows the result of the output summing, always perfectly in sync with the grid. ie if set on 1/4 it will re-trigger each kick and will display the kbb. Can then zoom and scroll inside the buffer, up to sample rez.
it can be displayed in any context (curve editor, params menu..) or hidden to give more room to parameters or curves editing.
A multi-Layer mode shows individual sounds layered. Useful to perfectly tune / phase align (or not!) elements or samples.
Can display spectrum and spectrogram.
At any time its possible to bounce oscilloscope content via a single click, then direct drag and drop new made .wav file to the daw.
A second mode can display current sound note buffer only. Auto button will scan max peak to auto-fit and use maximum display area, (like a ‘display normalize’).
Current sound note can also be displayed in curve editor background, so can see how the curve tweaks affect the wave real time, with 1:1 timing perfect match and synced zoom n scroll.
An optional reference wav can also be loaded (ie a kick to inspire from) and both current and ref waveforms can be then easily compared, zoomed/scrolled in sync in a very convenient way.
Each one of the 4 parts got 2x versatile generators.
Each generator provides 7 generative modes and is made to receive some more in the future.
Currently included engines:
*Classic: traditional sin, tri, saw, square and several more ‘math’ shapes with various shaping flavors.
*Bezier: custom user curve, with unique beziers control points true morph system from a curve to another.
*Noise – Patterns: various flavors of noises and procedural patterns/sequences like white, pink, brown ,hiss,crakles,MLS,,SH…
*Wavtable: hi quality bi-cubic 2048 samples per cycle / 256 tables, with 2d or 3d overview.
*Sampler: allows to layer one shots vavs, ie add HH or other attacks or custom sounds on top of kicks.
*Cycler: creates one cycle from wavs parts wich can give interesting harmonic rich content ie for buzzy /fm-ish type leads.
—–(Ability to load custom user .wavs for all wavtable, cycler and sampler engines)—-.
*Additive: fourrier engine allowing to edit bins via bezier curve ( will be developped further in future releases.)
A powerful Warp engine allows to remap/distort phase and/or amplitude via +40 different procedural functions.. available both for osc and lfos engines.
Each generator can have a modulator engaged for AM, RM, PM, PWM, FM, phase and amp distortion.
3x extra voices can be set with independent phase, pitch and volume. ie boost cancel some harmonics.
Each part can of course receive midi from daw, but also has it own build in pattern sequencer.
This allows to quickly set ie, a 4/4 kick and a bass patern and save it within the preset.
So on reloading a patch have instant overview without messing to re-find what was
midi associated with, or make tailor sound designs for particular set of sequences.
8x playground patterns, that can be ordered with a chainor.
Its also convenient to design in standalone without need of a daw, then later re-use patches in vst version.
Its made as an hybrid step/clip , with handled separately triggers, gate length, velocities and
pianoroll. This allows ie to keep same notes, but randomize triggers or gates only,
or quickly generate random patterns for inspiration (can choose only a set of notes).
Pattern notes can be saved to midi file and directly drag and dropped ie to an ableton midi clip from the plugin interface.
8x lanes can record and remote chosen sound patch parameters movements.
All sequencer data can be stored/recalled to ‘SEQ’ presets. ie quickly test variations of kick bass with already saved presets.
Adjust Filter envelope with ultimate precision/shaping via user bezier curve, or dynamic AHDSR.
Lfos, Sequencer, Velocity and keytrack weights.
Display Frequency response and Phase response.
Affect phase only ie via Allpass mode.
from 1 up to 12 poles for precise custom response.
Put distorsion before or after filter, VCA after/before FXs, flexible routing via simple drag and re-order processors chain.
Matrix can pick any of 50 sources (4x macros, 4x lfos, 16x custom curves, 4xAHDSR, randoms, vel, gates, audio..) to +350 parameters destinations.
* 4x parts multi-timbral monophonic synthesizer.
* 4x separated midi-in & 4x audio outputs if wanna split.
* Full vector resizable Ui, fast and responsive, with lot of visual feedback.
* Ultra fast preset switching / compare system.
* Foldable parameter’s groups. Display only a reduced to ‘only wanted’ set, or have control on everything.
* Built in synced oscilloscope for precise overview (ie Kick bass phasing), with zoom and scroll, from 8 bars up to sample rez.
* Advanced curves system and editor (16x vector user curves with: true cubic beziers, quadratic beziers, cubic splines, hermite splines, steps, linear, sinus, and more … independent segment’s types controlling various sound aspects like amp, freq, osc shapes, phases, filter, morphing ect.. ).
* Ultra tight and stable/consistent sample accurate midi and envelopes timings.
* 2x versatile generators per part with classic, bezier, noizes-paterns, wavtables, sampler, cycler & additive fourrier engines.
* Hi quality bi-cubic wavtable/cycler/sampler engines modes, with custom user .wav load ability.
* Independent modulator per oscillator.
* AM, PM, FM, RM, PWM, SYNC, phase and amplitude distortion, wich can all be cumulated.
* 3x sub oscillators voices per osc with independent phase, vol , pitch controls, ie cancel/boost fundamental.
* 2x versatiles LFOs with wide range of sources modes,
including user beziers.
* 40+ modifiers/warpers types that can be applied on phase and/or amplitude of both osc and lfos.
* 40+ Filters type including LP, HP, BP, BS, Allpass, Lo/Hi shelves,
Incuding Biquad, Butterworth, Chebyshev, Elliptic, Bessel, Legendre, Moog , Korg, Oberheim Emus, Formants…
most from 1 to 12 poles, with frequency and phase response overview.
* Custom curves choice for amplitude / pitch / filter, or dynamic AHDSR envelopes.
* Fx: delay, disto, reverb, flanger, phaser, compressor, ring modulation, soft cliper, bit -rate reducer, karplus strong resonator, limiter, custom user curve based wavshaping, multi-modes drive, eq…
* Load reference wav files with wavform display, automatically extracts pitch and amplitude enveloppes for easy copy / use as starting point ie to clone a kick, easy toggle ref/current.
* Approximate true ref wavform itself with bezier function.
* Instant Midi sidechain with precise custom user bezier curve ducking.
* A-B memory slots for comparing different patch settings.
* Build in bounce sound to wav file with direct drag n drop to daw.
* Build in sequencer with drag and drop Midi patern to daw.
* Build in converter helper (samples to ms, hz, beat, note names, tempo to delay ect.. ).
* Unique bezier morph system for true morph from user osc shape to another.
* Up to 16x oversampling.
..more in cooking for future releases..
Current Build: 1.0.2869 – Published July 07 2021 –
Available as VST 2.4 – 64bits – dll and Stand-Alone app for Windows
Public Beta demo:
- Limited to one instance
- Saving of presets is disabled
- Wav export and drag n drop to daw is disabled
- No multi output
Full version without limitations requires a license that can be purchased at Gumroad Inc website linked here.
Login to your user account to retrieve latest installer and license files.
- modern i5-i7-i9 or AMD Ryzen cpu
- 8Gb ram with at least 256 mb free
- 100mb free hard drive space.
- 64 bits VST host
- Windows 7-10
- 32-2048 samples asio buffer size
- 1280×720 min screen resolution
Here find quick tours in .en and .fr. and more specific tutorials.
How to: sequence from daw
Select sound wanna remote, go to sequencer tab and switch it off via the on off button. Or to completely disable all internal sequencers go to about tab and tick « disable sequencer in vst » option.
Then create a new midi track for each sound wanna individually remote from daw and route its midi output to corresponding midi input on the plugin.
(refer to your daw manual).
If having pro version you can also route each audio individual outputs.
If wanna read more about psylab historic..
Working for vfx industry since 2005 and using cubic beziers every day in every single soft we use, i would personally never consider using something else for my daily parameters animation.. so I naturally went looking for some tool using them in audio domain, and I was quite surprised that nearly no daw/vst/synth were providing this system, ie for envelopes, lfos or automations but always some more basic version of them. wondered why. Thought one of the reason was probably they were more complex to implement and/or manipulate at first..
In 2013 i started psytrance production. Psy Kick-bass combo quickly appeared to be quite challenging aspect to design from scratch for me, yet important as the driving foundation, running nearly 80 percent of a track duration, defining a lot of its character, feel, power and structure.
To me things like kick generators could have benefited a lot of such true cubic beziers implementation for ex. That was one of the main reason i wasn’t fully happy with the ones i had.
also they didn’t have convenient zoom-scroll with 1:1 linear time match, had envelopes usually limited to amp /pitch only , offered a pretty basic set of layering/generating engines, were not 100% tight / sample accurate, ect…/rant…
but mostly i wanted to be able to design kick and bass TOGETHER if wanted to. tune them, phase them.. being able to easily A-B compare, edit, save, recall, several different kick bass combos tests in one place with an oscilloscope, rather than fire 3 plugins (one for kick, one for bass, one for scope, and even one for sidechain sometimes..) and struggle or loose time to sync all the stuff and patches each time, merge in other projects ect…
So in 2015 I decided to start trying to give a shot at prototyping my own ‘simple’ kick generator first, using nodes in a modular software called sensomucic Usine ( which allows, among tons of things, user scripting, nodal patching, and C++ sdk coding of user ‘modules’ that allow to get results relatively fast).
That’s when i started to understand that cubic beziers were quite heavy on cpu for audio tasks… involving a lot of math operations.
( bezier formulas ).
P = (1−t)3P1 + 3(1−t)2tP2 +3(1−t)t2P3 + t3P4
Above cubic formula returns a curve point from 4 input points (2x in-out and 2x controls handles). this has to be 2x times computed, once to get X and once for Y coordinates… that’s already quite a few multiplications and additions for a single sample..
While video content is usually working with ‘slow’ fps (25-60-120 at most), audio precision requires at minimum 44100 evaluations per second !, ..ok that’s maybe why they were not that used in audio domain..
That could be fairly descent and simple if ending here..
..But next problem is beziers are so-called « parametric equations », for a given t request (t being parameter on curve, not time) they return an xy coordinate as seen previously. While that’s cool for gfx usual paths drawing, creating a dot on an xy canvas (and just connecting dots with edges, or computing more dots than pixel rez for lines ), that’s not ideal for audio/discrete time applications.
If we look at above picture, the bezier curve looks fine, but the dots aren’t evenly spaced on X axis, compressing/expanding depending on control point’s positions. Naively applying would ‘stretch’ the real positions.
Audio samples are evenly spaced in time (X axis), what is needed is to return Y ( sample value ) for a given X (sample time).
Non parametric, explicit form y=f(x) requires first to find t for given X, then Y for that t.
Solving this could look simple.. but revealed to be quite complex and expensive. After trying different ‘cheating’ methods (Newton iterative method, brute force binary search, pre calculated LUTs…), i wasn’t fully satisfied as those were lower cpu, but weren’t totally accurate in all possible scenarios, and involved a precision tolerance, or quite restricting pre-calcs. The only 100% accurate method at any requested resolution is a real cubic equation roots solving, using cardano’s method , which again adds a shit load of more complex computations layer.., but gives on the other side ultimate accuracy results.
Sooo.. that was way more complex than expected.. especially since im not that a math genius either.. but at this point the module finally had at last that ‘true cubic bezier at audio rate’ system i was after since along time, working perfectly, bit high on cpu, but without any quality compromise.
Since then refined the alg/optimisations as much as possible , and hopefully today’s computers have evolved a lot and are now able to handle such load.
Then « Psylab » was born as a more advanced continuity of this project, designed around implementing such system for driving several audio events « animations », with sample accurate, ultra tight, hi def bezier curves, to control a wider range of aspects of the sound over time, ie amplitude, frequency, oscillators shapes, filter, distort amount ect…
With the engine growing in abilities it became a full 4x parts multi-timbral with lot of sound design possibilities, even if more focused on kick-bass. The main idea now is to provide a way to quickly design /save/recall/scrub all-together a 4 parts ‘PGM’ that could make the foundation of a track. (ie kick-bass-perc-lead), or a coherent ‘idea set’ of sound playing well together.