Quote:I developed Diodow 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/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.
The synthesizer is fully functional and there are no disabled features ... use freely.
[*] 4x Oscillators
Diodow 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.
* FixedFreq (Hz) ... Oscillator fixed frequency.
* PulseWidth ... Controls phase distance between Saw1 and Saw2 (only if SawSigma1<>0 and SawSigma2<>0) for pulse-width modulation on all waveforms.
* SyncOsc ... Activates sync between the oscillator and internal sync oscillator (set SyncOsc to 1 for the usual sync). The frequency of the sync oscillator is fixed to the note frequency, so you can achieve a typical sync-sound by modulating oscillator pitch.
* 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.
* Morph ... Morphing between full saw (up or down) and sine wave. Higher morphing values (starting at around 0.7-0.8) generate stronger high-frequency harmonics which can actually produce aliasing when using lower sample rates and/or oversampling has been turned off.
* DCFilter ... DC filter at the oscillator output (my oscillator algorithm can produce DC offset in some cases, which can sometimes be desirable or undesirable and can be controlled using this parameter).
* 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.
* Tracking ... Oscillator pitch keyboard tracking.
* Center ... Center note for keyboard tracking (60 = C3).
[*] Sample Engine
Oscillator section has a complete sample engine built-in. Sample oscillators are sub-modules inside main oscillators - they share common pitch/frequency parameters together with the same outputs, so they can be used in tandem with the regular oscillators, processed through Diodow engine, etc.
* SampleLoop ... One-shot (off) or sample looping (on).
* SampleLevel ... Sample oscillator output level.
* SampleFilter ... The strength of 20kHz lowpass filter applied to the sample.
* Upsample ... The rate of internal upsampling inside the sample engine (higher upsampling = higher transposition quality and bigger CPU usage).
Diodow sample engine supports linear interpolation only and doesn't have high-quality interpolation available in Tranzistow.
The engine can load 8/16/24/32-bit PCM and 32-bit FP mono/stereo WAV files. To load a sample click on the oscillator section name (Osc #1, Osc #2, Osc #3, Osc #4). In case of stereo samples - if you load a sample into oscillators 1 & 3 then left left channel will be loaded, otherwise right channel will be loaded. To remove the sample press and hold Ctrl key and click on the appropriate oscillator section name. The oscillator section name will have an asterisk on front of it if a sample has been loaded into the connected sample oscillator.
[*] 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)
* 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 a feedback saturator, otherwise both input and feedback signals will be fed.
* Declick ... Activates declicker for the particular filter (see "Voice/Declicker" parameter).
* Velocity ... The intensity of velocity => cutoff modulation.
* Tracking ... Filter pitch keyboard tracking.
* Center ... Center note for keyboard tracking (60 = C3).
[*] 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 ;-)
* Clocked … LFOs will be synced to host tempo when activated.
* Smooth … Smooths out the LFO shape.
[*] 4x Envelopes
* Time0/1/2/3 (s) … Envelope stage times.
* Level0/1/2/3 … Envelope stage levels.
* Time4 (s) … Release time.
* Level4 … Release level.
Each envelope stage can have it’s 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.
* Legato … 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.
* Clocked … 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 intensity 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.
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, Diodow 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 Diodow.ini file:
I don't plan to provide any additional automation features beside this.
[*] Technical Details
* Requirements: 32/64-bit 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 correctly, you don't really need 64-bit and double-precision to achieve a high-quality sound in most cases. In fact, the only place where I had to switch to a double-precision calculations is Diode-Ladder filter on Tranzistow because single-precision wasn't sufficient there.
* 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. On today's machines 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. Diodow
* Diodow has Single audio processing engine ... Tranzistow has Single, Dual and Quad audio processing engines (Dual comes with 2x oversampling and Quad with 4x oversampling).
* Diodow 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 Waldorf Q, Microwave II/XT, MonoWave, Prophet VS, Ensoniq SQ waves/wavetables etc.
* Diodow 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.
* Diodow sample engine doesn't support high-quality interpolation available in Tranzistow.
* Diodow has fixed Transistor-Ladder filter types ... Tranzistow has freely configurable Transistor-Ladder filter poles.
* Diodow has 4 LFOs ... Tranzistow has 8 (much more advanced) LFOs.
* Diodow has 4 envelopes ... Tranzistow has 8 (much more advanced) envelopes.
* Diodow envelopes have 5 stages ... Tranzistow envelopes have 10 stages.
* Diodow 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.
* Diodow has 47 modulation sources ... Tranzistow has 258 modulation sources (262 with Additive/GPU engine), including audio sources which can be used as modulators.
* Diodow supports all MIDI controllers, pitch bend and channel aftertouch ... Tranzistow supports all MIDI controllers, pitch bend and channel/poly aftertouch.
* Diodow has 75 modulation destinations ... Tranzistow has 575 modulation destinations (603 with Additive/GPU engine), plus additional 36 SyncMod destinations and 107 FX modulation destinations.
* Diodow supports linear modulations only ... Tranzistow has linear, exponential, logarithmic, chromatic and many other modulation curves.
* Diodow 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 Diodow/Tranzistow.
* There is no FX modulation on Diodow ... On Tranzistow FX modulation is configurable from SampleRate/256 up to SampleRate.
* Diodow has only one Multi part ... Tranzistow has 4 multimode parts with separate stereo outputs for each part + main stereo output + 4 external mono inputs which can be routed freely between parts.
* Diodow can utilize only one CPU core ... Tranzistow can utilize up to 4 CPU cores in multithreading mode (one core per each 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.
* Diodow doesn't support external control interface and doesn't have a native support for Behringer BCR2000 controller.
* Diodow doesn't have randomizer.
* Diodow does not support Additive/GPU engine.
* Many features are cut-down on Diodow and, in global, it contains less than 10% of Tranzistow capabilities.
Diodow 32/64-bit VST Synthesizer by HrastProgrammer