DumBass VST Synthesizer by HrastProgrammer (32-bit only)
Note: I decided to abandon further development of this synthesizer (including a 64-bit version) because I implemented an enhanced SuperSaw engine inside my Tranzistow synthesizer:
This page is about my DumBass Virtual Synthesizer with SuperSaw engine.
It contains around 5% capabilities/features of it's mighty bigger brother - Tranzistow.
But don't worry, despite those 5% it has enough capabilities to keep you busy for quite some time and very complex sounds can be made with 4x oscillators, 16x super-saws per oscillator, 4x filters, 4x LFOs, 4x 5-stage envelopes, 16x+16x modulation matrix, 4x delays, etc.
Copyright © 2012-2018 by HrastProgrammer. All rights reserved.
I developed Tranzistow, Diodow and DumBass for myself in the first (and only) place.
My goal was not to (try to) emulate existing (hardware or software, analog or digital) synthesizers but to create something I can actually use in my own music, to master DSP/Assembler/Vector/SSE/AVX/AVX2/GPU/OpenCL programming, to refresh my mathematics knowledge and, last but not least - to have fun.
As a result, the synthesizer is mostly unconventional, some features (which most users take for granted) could be missing or could look rather strange, user interface may not be everybody's cup of tea because it was designed according to my habits/needs, etc.
Scroll down the page for screenshots and more info ...
Description of parameters, capabilities and features (parameters without description are mostly self-explanatory) ...
[*] 4x Oscillators
DumBass oscillators are based on Tranzistow Aux oscillators model. Each oscillator contains two saw waveform generators (Saw1 and Saw2) with continuous morphing between full saw and sine wave.
* PulseWidth ... Controls phase distance between Saw1 and Saw2 (only if SawSigma1<>0 and SawSigma2<>0) for pulse-width modulation on all waveforms.
* OscRange (Hz) ... Oscillator pitch modulation range (0 => range equals Osc pitch).
* SawShape ... Controls the amount of waveshaping applied to the sum of Saw1 and Saw2.
* SawSigma1/SawSigma2 ... Saw1/Saw2 level.
For Square/Pulse waveform set SawSigma1=1, SawSigma2=-1, SawShape=0. For Ramp/Triangle waveform set SawSigma1=1, SawSigma2=-1, SawShape=0.993 or so. Mathematics behind all this is out of the scope of this manual.
* Center ... Center note for keyboard tracking (60 = C3).
* SuperSaws ... Number of super-saws per oscillator.
* SuperTune ... Detuning amount for super-saws.
* SuperType ... SuperSaw generator type/algorithm.
* Level ... Oscillator output level.
* Balance1-2 ... Balance between filters 1 and 2.
* Balance3-4 ... Balance between filters 3 and 4.
* FreeRun ... If activated then oscillator phase will not restart on note-on.
* SyncOsc ... Activates sync between the oscillator and internal sync oscillator. The frequency of the sync oscillator is fixed to the note frequency, so you can achieve a typical sync-sound by modulating oscillator pitch.
* FixedFreq (Hz) ... Oscillator fixed frequency.
* Env1Mod, Env2Mod, Env3Mod, Env4Mod ... The amount of envelope => oscillator pitch modulation.
* Tracking ... Oscillator pitch keyboard tracking.
[*] 4x Filters
Filters are based on 4-Pole Ladder model (like the ones on Oberheim Xpander, for example) and are the same as B-filters on Tranzistow with greatly reduced parameter/feature set and without the ability to freely configure filter poles.
* Cutoff (Hz) ... Well, filter cutoff. Although it can go down to 0Hz there really isn't much sense to go below 20-30Hz, otherwise you can experience excessive output level and similar artifacts with some filter configurations.
* Gain ... Input level gain.
* Qompensate ... Resonance (Q) gain attenuation compensation (may shift cutoff a bit).
* FilterRange (Hz) ... Filter cutoff modulation range (0 => range equals cutoff).
* NoiseMix ... Level of white noise mixed with oscillator output *prior* to filter.
* Level ... Filter output level.
* PostFeed ... If activated then only feedback signal will be fed into the feedback saturator, otherwise both input and feedback signals will be fed.
* Declick ... Activates declicker for the particular filter (see "Voice/Declicker" parameter).
* Env1Mod, Env2Mod, Env3Mod, Env4Mod ... The amount of envelope => filter cutoff modulation.
* Velocity ... The amount of velocity => filter cutoff modulation.
* Tracking ... Filter pitch keyboard tracking.
* Center ... Center note for keyboard tracking (60 = C3).
* Pole1Init ... Filter initialization value. Great for percussive sounds if set to a non-zero value (1 by default) but can cause clicks with some filter configurations, especially with very low cutoff (below 20Hz) and/or high resonance.
[*] 4x LFOs (Low Frequency Oscillators)
* Rate (Hz)
* Level ... LFO output level.
* Random ... LFO random output level (summed with the regular output).
* Offset ... LFO output offset.
* FadeIn (s) ... LFO fade-in time.
* Quantize ... LFO phase quantization (no further explanation - just try it ;-)
LFOs will be synced to host tempo when activated.
Smooths out the LFO shape.
[*] 4x Envelopes
* Time0/1/2/3 (s)
Envelope stage times.
Envelope stage levels.
* Time4 (s)
Each envelope stage can have its own curve and can continue to any other stage after finishing, so you can have loops an even use envelopes as some kind of additional LFOs.
Envelope #4 is amplifier envelope - it controls the overall duration of the voice. Of course, it can be routed to various modulation destinations but it controls the voice activity no matter what destination it is routed to.
If activated then envelope will not restart on note-on while playing legato (only for mono voices e.g. Polyphony=1).
* FreeLFO1/2/3/4 (not an envelope parameter)
If activated then LFO phase will not restart on note-on.
* Declick ... Activates declicker for the particular envelope (see "Voice/Declicker" parameter).
* VoiceLFO1/2/3/4 ... If activated then LFO will be global.
[*] 16-Slot Modulation Matrix
Modulation rate is SampleRate/8 so, for example, at 96kHz all modulations are calculated/refreshed at 12kHz. There is another 16-slot modulation matrix which is refreshed at MIDI-rate, approx. 333 times per second. MIDI modulation matrix parameters are hidden on the modulation matrix page.
Modulation matrix is processed in groups of 4 slots (1..4, 5..8, 9..12, 13..16). To conserve CPU power only groups with at least one active slot (Destination other than None) are processed. So, don't leave unnecessary gaps between slots and allocate them sequentially from the beginning.
[*] 2x Delays
* Wet ... Level of wet (delayed) signal.
* Dry ... Level of dry (original) signal.
* TimeL/R (s) ... Delay time of left/right channel.
* FeedbackL/R ... Feedback of left/right channel.
* Damp ... Damping of the delayed signal over time.
* StereoWidth ... Stereo image width of the delayed signal.
* Input ... Level of the input signal to the delay.
* Mix ... Level of the output signal from the delay.
Delays will be synced to host tempo when activated.
* Serial ... Serial delay configuration.
If Wet levels of both delays are zero then delays are deactivated to conserve CPU.
By default delays work in parallel and the same signal is fed into both delays. Using Serial/Input/Mix parameters various other configurations can be achieved. To have a pure serial connection you have to set Delay #1 Input=1 & Mix=0, Delay #2 Input=0 & Mix=1 and activate Serial mode.
Due to the design of the delay engine it can start to selfoscillate if you overdo the feedback, and it will continue to oscillate even after there is no input signal present anymore. To reset the engine click at the top of the delay section.
[*] Voice/Global Parameters
* Oversample ... Internal engine oversample on/off. It doesn't make much sense to turn oversample off and degrade the sound quality, except if you have a really underpowered CPU.
* PlayNote ... You can actually play a note using this slider ;-)
Amp/Volume ... Overall voice level (prior to delays).
AmpSource ... Amplitude modulation source (Envelope #4 by default).
AmpAmount ... Amplitude modulation amount.
* Declicker ... Enables declicker for envelopes and filters. Clicks can occur under various circumstances: short envelope times combined with mono mode and/or free-running oscillators, voice stealing, playing speed and style, etc. Declicker can minimize those clicks in most cases. Use it carefully (otherwise it can create clicks when there aren't any) and don't forget that not all clicks are (always) bad ;-)
* Velocity ... The amount of velocity => amplitude modulation.
* Init ... Initialize a voice to default settings.
* Load ... Load a voice from the *.hp file.
* Save ... Save a voice to the *.hp file.
* Alt+Save ... Asks for a file name before saving ("Save As").
All voice parameters are saved to a separate files, no VST parameter handling has been used. Only Polyphony and MIDI Channel are saved as part of the VST configuration.
[*] User Interface
* Hidden parameters can be accessed by clicking twice on the page button.
* To access various parameter lists (LFO Shape, Modulation Source/Destination, etc.) just click on the parameter and a list will pop up.
* All sliders have an edit box above them => you can enter the value directly into it.
* All sliders have vertical mode => you can move a mouse vertically outside the slider area and use the whole display height for a single slider.
* Right-click on the parameter resets it to a default value.
* Double-click on the parameter name (or right-click on the parameter slider/combo while holding Ctrl key) is Undo - resets a parameter to the previous value (Undo buffer is unlimited for each parameter).
* Press and hold Ctrl key while moving a slider to activate the "microscope" mode for precise parameter adjustment.
* Many parameters have extended ranges e.g. they allow values outside the slider range. If a value falls outside the slider range then a slider will be colored red. You can enter such values directly into the edit box or you can press and hold Alt key and move a mouse outside the slider area.
* In case of "clocked" parameters (LFO rates and Delay times with Clocked activated) numbers represent notes e.g. 0.0625 = 1/16 note, 0.125 = 1/8 note, 0.25 = 1/4 note, 0.5 = 1/2 note, 1 = whole note, etc. To simplify entering of such parameters you can enter a number and press / (divide) key ... For example, 4 followed by / will give you 0.25.
By default, DumBass doesn't support VST automation because I don't use it and prefer to control everything over MIDI. But you can turn it on using DumBass.ini file:
I don't plan to provide any additional automation features beside this.
[*] Technical Details
* Requirements: 32/64-bit Windows VST2.x host and SSE3 capable CPU.
* The complete low-level audio/processing/control/MIDI/FX engine is written in 100% Intel x86/x64 assembler utilizing SSE3 instructions for vector processing - that's the main reason why there are 4 (and multiples of 4) elements of each module (oscillators, filters, etc.) because I am processing 4 vector elements in parallel.
* 32-bit integers and single-precision floating point numbers are used for all processing as a proof that, if done properly, you don't need 64-bit and double-precision to achieve a high-quality sound.
* User interface and all other high-level tasks are written in Borland Delphi.
* The engine is optimized for 96kHz sample rate. Other sample rates can be used, of course, but 96kHz is the only officially supported sample rate. Most high-end hardware synthesizers (like Solaris, for example) use 96kHz sample rate as well, so I didn't want to make compromises here. On today's computers it doesn't have much sense to intentionally degrade a sound by using lower sample rates just to save some CPU, and 192kHz is really an overkill.
[*] Tranzistow vs. DumBass
* DumBass has Single audio processing engine ... Tranzistow has Single, Dual and Quad audio processing engines (Dual comes with 2x oversampling and Quad with 4x oversampling).
* DumBass has 4x analog-modeling oscillators only ... Tranzistow has 4x analog-modeling/wavetable/spectral oscillators (Osc) with XFade/Interpolation plus 4x sine/analog-modeling oscillators (AuxOsc) and tons of additional oscillator functionality, including SuperSaw/HyperSaw/HyperWave/FormantSaw engines, etc.
* DumBass has 4x 24dB (4-pole) Transistor-Ladder filters of older design ... Tranzistow has 4x 24dB (4-pole) Transistor-Ladder filters (both new and older design), 4x 12+24dB (2/4-pole) SVF (State Variable Filter), 2x 24dB (4-Pole) Diode-Ladder filters, 4x Comb filters, both Transistor/Diode-Ladders have normalizers, etc.
* DumBass has fixed Transistor-Ladder filter types ... Tranzistow has freely configurable Transistor-Ladder filter poles.
* DumBass has 4 LFOs ... Tranzistow has 8 (much more advanced) LFOs.
* DumBass has 4 envelopes ... Tranzistow has 8 (much more advanced) envelopes.
* DumBass envelopes have 5 loopable stages ... Tranzistow envelopes have 10 loopable stages.
* DumBass modulation matrix has 16 slots ... Tranzistow modulation matrix is much more advanced and has 32 slots where dedicated groups of 4 modulation slots can be run at audio/oversample rate.
* DumBass has 40+ modulation sources ... Tranzistow has 340+ modulation sources, including audio sources which can be used as modulators.
* DumBass supports all MIDI controllers, pitch bend and channel aftertouch ... Tranzistow supports all MIDI controllers, pitch bend and channel/poly aftertouch.
* DumBass has ~70 modulation destinations ... Tranzistow has 940+ modulation destinations (even more with Additive+FM/GPU engine), plus additional 36 SyncMod destinations and 100+ FX modulation destinations.
* DumBass supports linear modulations only ... Tranzistow has linear, exponential, logarithmic, chromatic and many other modulation curves.
* DumBass modulation rate is SampleRate/8 ... On Tranzistow this is configurable from SampleRate/256 up to SampleRate (Single), 2x SampleRate (Dual) and 4x SampleRate (Quad).
* MIDI modulation rate is approx. 333 per second on both DumBass/Tranzistow.
* DumBass doesn't have contour generators ... Tranzistow has 100 contour generators per patch/part with various editing/resynthesis options.
* There is no FX modulation on DumBass ... On Tranzistow FX modulation is configurable from SampleRate/256 up to SampleRate.
* DumBass has only one Multi part ... Tranzistow has 4 main and 4 sub multimode parts with separate stereo outputs for each main/sub pair + main stereo output for all parts + 4 external mono inputs which can be routed freely between parts.
* DumBass can utilize only one CPU core ... Tranzistow can utilize up to 4 CPU cores in multithreading mode (one core per each main multimode part).
* Tranzistow has Oscillator FM (Osc and AuxOsc), Filter FM (Ladder and SVF), 4x Ring Modulators, various forms of waveshaping (including 4x Driver, 4x Shaper and feedback curves on all filters), dedicated 4-bus Mixer (each with 4 inputs), Colored Noise, 4x Vectors, 4x Rotors per each audio/modulation generator (Main/Aux oscillators, mixers, LFOs, envelopes, modulation matrix, etc.), 16-slot NoteOn Modulation Matrix, 4-slot NoteOff Modulation Matrix, 4x Modifiers, 4x Sync Modulators, 4x Lag Processors, External Audio Processing, 2x Phasers, 2x Reverbs, etc, etc.
* DumBass doesn't support external control interface and doesn't have a native support for Behringer BCR2000 controller.
* DumBass does not support Additive+FM/GPU engine.
* Many features are cut-down on DumBass and, in global, it contains around 5% of Tranzistow capabilities.
Look at the images here to get a better Tranzistow picture ...
[*] Known Issues
* Tab key doesn't work in some hosts, or doesn't work properly, like in Reaper, for example - Tab selects prior edit control and Shift+Tab selects next ... This is out of my control and I cannot do anything about it.
[*] Final Notes
* I developed the synthesizer for myself and it probably won't appeal to everyone, but I cannot do anything about this, I am afraid.
* If you dont like then don't use it, simple as that ;-) I really don't have the time and patience to argue about something someone doesn't like, or whether "it is or isn't analog enough" etc.
* I've done my best to make it 100% compatible with the VST specification but if it still doesn't work (or doesn't work well) under some VST hosts then - sorry. There are tons of various VST hosts out there and the exploration of all sorts of VST hosts quirks is almost "mission impossible".
* [Doesn't really apply anymore] There are no presets included - my synthesizers are aimed at sound programmers, not preset players. If you don't know how to design/program sounds then this synthesizer is not for you, I am afraid.
* The synthesizer is "feature finished" - no new features will be added so, please, don't ask for a new feature, user interface changes, VST3 support, additional VST automation support, VST preset management, etc. I also don't have any plans to support AU, AAX, RTAS or any other platform beside VST.
* Only 32/64-bit Windows VST 2.x, Linux standalone and experimental Linux native VST 2.x versions are currently available. No other versions (VST 3.x, Macburger, AU, RTAS, AAX, iCrap, dumbphones and similar) are planned.
* I am not responsible for anything you do with this software - use it at your (and only your) own risk!
* You may not alter this software in any way, including changing or removing any messages.
* You may not decompile, reverse engineer, disassemble, modify, rent or resell this software, or create derivative works based upon it.
Copyright © 2012-2018 by HrastProgrammer. All rights reserved.
All content (audio, graphics, software, etc.) on this and related websites is fully copyrighted. You can download the music
for your personal listening only, but you cannot redistribute it, modify it, sample it, sell it, release it, perform it,
broadcast it, stream it, or use it in any other way, commercially or non-commercially, personally or in public, without
my explicit written permission!