The correct electronics term for this module is a Monostable Multivibrator. The name derives from the fact that they have a default state of 0 volts output until they are triggered by an external pulse, they then flip to the on state (usually 5 volts) for a preset length of time, once this expires they then revert to their default of 0 volts output. The monostable module operates on the same principle. It normally outputs a “False” or 0 logic state. Once the Monostable receives a pulse signal input the leading edge of the pulse triggers the monostable, the output of which then switches to the “True” or 1 logic condition. The gate then holds the “True” condition for a period of time determined by the voltage present on the Pulse Length (ds)- (ds stands for DeciSeconds) plug. The Time to Voltage is 1 Volt = 10 seconds. See the demo screenshots below (the small voltages are because the demo setup has quite a high pulse rate)
Note: You’ll find that once the monostable has been triggered, it won’t respond to another trigger pulse until the preset time has elapsed. Trying to trigger it a second time will not extend the length of the output pulse, also no matter how long the input pulse this will not affect the length of the output pulse.
What use is a Monostable?
What use is a monostable? Well one possible use is the following: Say we wanted to detect when our audio level passed 2 volts, and light an LED. We can us a comparator to detect this, but say the audio only exceeds 2 V for a few milliseconds? That’s not enough time for the LED to respond, let alone for us to see it light up. This is where a Monostable is useful. By adding this to the output, and putting 5V on the Pulse length plug, we will detect the short lived peak, and the monostable will send a half second pulse to the LED- enough to see it flash and warn us the audio will be clipping
Delaying the Trigger pulse from a keyboard.
If you needed a delayed Keyboard Trigger pulse then this is one way to approach it. By not connecting the Gate pulse from MIDI-CV 2 to the ADSR 2 module then no matter how long you hold down a key only the attack/decay portions of the envelope will be active. The decay can be set to 0 V as it’s unimportant, as are the sustain and release portions. Note: The overall Level plug is set to 10.2 volts, otherwise the structure isn’t reliable at triggering. Input B of the comparator is set to 10 volts, so the comparator switches to + 10 volts output when Input A of the comparator reaches 10 volts, the monostable then generates a fixed length pulse from this providing us with a delayed Trigger pulse, the delay time being set by the Attack segment timing of the ADSR 2 module (the time it takes to reach 10 V). Because the Envelope isn’t held when the Attack reaches its maximum the resulting pulse is extremely short hence using the monostable on the output, which in this usage triggers another ADSR2 module. Note: Always connect both Trigger and Gate plugs as shown. Using this method we can create a delayed trigger as was used in the Moog modular synthesizers. You don’t specifically need to use the Fixed Values modules (you can specify the values needed in the module properties), but it does make it easier to work out what you have done at a later date, and here it’s done for illustration purposes.
A logic gate is a device that is used as a building block for digital circuits. They perform basic logical functions that are a basic part of digital circuits. Most electronic devices we use have some form of logic gates in them. For example, logic gates can be used in smartphones, tablets, control circuits, and obviously computers. In a circuit, logic gates work based on a combination of digital signals coming from its inputs. Most logic gates have two inputs and one output, and their operation is based on Boolean algebra. At any given moment, any terminal is in one of the two binary conditions: true or false. False represents 0, and true represents 1. Depending on the type of logic gate being used and the combination of inputs, the binary output will differ. A logic gate can be thought of like a light switch, where in one position the output is off (0), and in another, it is on (1).
Logic Voltage Levels in Synthedit.
The logic gate emulations in SynthEdit are similar in operation to hardware logic chips with a few additions for reliability. 1) Input pins incorporate ‘hysteresis’ to give noise-immunity. 2) An input registers ‘ON’ when the voltage exceeds 3.33, but isn’t ‘OFF’ until the voltage drops below 1.66, this helps the device to handle imperfect input signals. i.e. small errors, fluctuations or noise in a input signal. This means they generally can’t jump the ‘grey area’ and create a false “on” or “off” signal.
Important note regarding logic gates: A logic gate cannot be used for audio purposes for example- to pass audio through an OR gate when one input is high. You will just get a very distorted audio signal from the output. Although they have dark blue Audio Voltage pins we are dealing with a simple on/off (True/False) signal.
The way I have chosen to try and make things a little easier is to show the state of the inputs and outputs with LED indicators showing the logic states: LED Lit = 1 (true) LED Unlit = 0 (false)
AND Gate.
The And gate gives an output of 0 unless ALL inputs are 1, when it the outputs 1.
NAND Gate
A Nand Gate is the inverse of an And Gate
Or Gate.
An Or Gate gives an output of 1 if either or both inputs are 1, and a 0 if either or both inputs are 0
Nor Gate.
A Nor Gate is the inverse of an Or Gate
Logic Inverter (Not Gate)
A Not Gate gives an output of 1 if the input is 0, and an output of 0 if the input is 1. It only has one input.
XOR Gate (Exclusive OR gate)
An XOR gate gives an output of 1 if either input is 1, if both inputs are 1 or 0 it outputs a 0.
Sometimes you need a special module to control Filters or Oscillators.
TD_EnvFollow_A Envelope Follower Type A This is a simple envelope follower based on “traditional” analogue effects pedal design. This module does not do any filtering, you will need to connect a filters cut off control to the output plug! The input is internally rectified, so you also save a module in the process. The attack and release time pins only update at SE’s internal block-rate. Note: This is a typical type of envelope follower found in guitar pedals and some High-End compressors. The release time should always be much larger than the attack time, otherwise the envelope following isn’t very accurate. If the release time is too short the effect it is being used in will produce distorted audio due to the input waveform modulating the output (which is how the original effects pedal would normally behave).
Typical Envelope follower application:
TD_EnvFollow_B Envelope Follower Type B Notes: A simplified envelope follower based on traditional analogue design techniques. The input is internally rectified – so you also save a module in the process. Attack and Release time pins only update at SE’s internal block-rate. For the technically inclined: This topology is unique because internally it releases before it attacks. The actual release time is T-attack + T-release, but usually attack is much shorter than release so this isn’t very audible, it does however reduce intermodulation distortion more than the regular switched coefficient method. The native SE envelope is a switched coefficient type, as is all other. This method does change the release trajectory somewhat. This does not use TPT/ZDF but the Step Invariant method instead to realize the topology.
TD_Quantizer Mono voltage quantizer. Notes: Suitable for control voltage or audio-rate signals. The module quantizes the input voltage according to step size, that is it constrains the input voltage change to pre-set steps of the value specified. Minimum step size is 0.0000001V. This module uses less CPU than the stock SynthEdit version.
TD_Quantizer_ST Stereo voltage quantizer. Notes: Suitable for control voltage or audio-rate signals. The module quantizes the input voltage according to step size, that is it constrains the input voltage change to pre-set steps of the value specified. Minimum step size is 0.0000001V. This module uses less CPU than the stock SynthEdit version.
TD_Contour Voltage contour modifier, select for a list of pre-set formulae. Notes: The easiest way to see what the modes do, is to connect a sawtooth wave of +/- 5 volts to the input and then check it on a Scope. Predominantly made to alter the response of a VCA (use with Level Adjust), but can be used for other things too. Modes:- Thru, Mirror, Clip0/10, Expo1, InvExpo1, Expo2, InvExpo2, Expo3, InvExp3, Square, InvSquare, Log1, InvLog1, Log2, InvLog2, Log3, InvLog3, Sqrt, InvSqrt, Pow.25, InvPow.25, Scrv, InvScrv, SqrScrv, SqrInScrv, Gate40, Gate34.
TD Curver. Control voltage curve modifier. Input voltage: the range is within the 0 to10 Volt Range. This input is internally clipped to these levels.. Curve Amount: the range here is also 0 to 10 volts. 5 Volts = Unchanged input signal appears at the output. Again the easiest way to see the effect is to experiment using a sawtooth input and a ‘scope on the output. Some of the results I have obtained are shown below
TD_PeakHold Peak Hold Filter Notes: This module is generally used as a Peak hold for GUIs, and is not recommended for audio use. (You need to use a DSP-GUI bridge or Patch Mem)
TD_PeakHold_ST Stereo peak hold filter Notes: Generally used as a Peak hold for GUIs, and is not recommended for audio use. (You need to use a DSP-GUI bridge or Patch Mem)
Important Note: None of these filters are intended to have their frequency cutoff modulated by an envelope or another oscillator/LFO. Rapid frequency changes will introduce audio artefacts, clicks and popping noises. Some of these artefacts may be very loud.
Butterworth filters.
TD_Butterworth_HP Type: Butterworth high pass filter. Can be set from 2nd order filtering to 12th order filtering. There is no internal clipping on the kHz input voltage, and the control voltage only has the 1V/kHz characteristic.
TD_Butterworth_LP Type: Butterworth low pass filter. Can be set from 2nd order filtering to 12th order filtering. There is no internal clipping on the kHz input voltage, and the control voltage only has the 1V/kHz characteristic.
TD_P1Z1 Type: 1 Pole (6dB per octave), 1 Zero Filter. A specific design of Butterworth filter. Selectable filter modes: Low Pass, High Pass, Bandpass.
TD_P1Z1_ST Type:Stereo version of the 1 Pole (6dB per octave), 1 Zero Filter. A specific design of Butterworth filter. Selectable filter modes: Low Pass, High Pass, Bandpass.
State Variable Filters.
TD_SV2 Type: Linear State Variable Filter Note:- The kHz 0-10 V, and Res -10 – +10V inputs are not internally clipped so external voltage limiting should be applied to prevent illegal values being used. Filter Modes; Low pass 12dB per octave, High pass 12dB per octave, Bandpass 6dB per octave, Band reject 6dB per octave, Low pass 6dB per octave, High pass 6 dB per octave, All pass 12dB per octave.
TD_SV2_ST Type: Stereo Linear State Variable Filter Note:- The kHz 0-10 V, and Res -10 – +10V inputs are not internally clipped so external voltage limiting should be applied to prevent illegal values being used. Filter Modes; Low pass 12dB per octave, High pass 12dB per octave, Bandpass 6dB per octave, Band reject 6dB per octave, Low pass 6dB per octave, High pass 6 dB per octave, All pass 12dB per octave.
State Variable Formant filters.
TD_SVX4 Four zero peak gain state variable bandpass filters internally connected in parallel. Notes: Primarily designed as a building block for designers to create their own formant filters. Having a quad filter module uses less CPU than individual filters. Note:- The kHz 0-10 V, and Res -10 – +10V inputs are not internally clipped so external voltage limiting should be applied to prevent illegal values being used.
TD_SVX4_ST Stereo version. Four zero peak gain state variable bandpass filters internally connected in parallel. Notes: Primarily designed as a building block for designers to create their own formant filters. Having a quad filter module uses less CPU than individual filters. Note:- The kHz 0-10 V, and Res -10 – +10V inputs are not internally clipped so external voltage limiting should be applied to prevent illegal values being used.
Audio Crossover Filters.
TD_Xover12 Type: 12dB per octave crossover filter. Notes: The crossover frequency is not internally limited, so the crossover kHz input voltage should be clipped in case illegal values might occur. This is module is built out of a standard State Variable filter and is suitable for modulation if need be.
TD_Xover12_ST Stereo 12dB per octave crossover filter. Notes: The crossover frequency is not internally limited, so the crossover kHz input voltage should be clipped in case illegal values might occur. This is module is built out of a standard State Variable filter and is suitable for modulation if need be.
Hilbert 90 degree filter network.
TD_Hilbert_A Type: Hilbert Filter network, this network creates 90 degrees phase difference between the two outputs. Notes: This uses an IIR 2 x 8 pole 90 degree phase-difference network. The outputs are approximately 90 degrees apart in phase, which is needed to build frequency shifters. The approximation in phase shift is not a problem for frequency shifting in general because if the input frequency shifts, so does it’s ability to cancel out with the original signal.
TD_Slew2 Control signal “slewer”. The type of slew can be set to; Constant rate, Constant time. Notes on Constant Time: It takes the same amount of time to go from 0-1 or 0-10. 1 volt = 1 second. The curve is exponential. Volts slew time is limited to a maximum of 20 seconds and a minimum of 1 millisecond. Notes on Constant Rate: It takes less time to go from 0-1 than 0-10, as it moves at the same speed between points. 1volt per 1second. The curve is linear. Volts slew rate is limited to a maximum of 20,000 volt per second and a minimum of 0.1 volt per second. Useful for introducing “glide/portamento” effects for control voltages, removing “stepper” effects, and smoothing out the output of sample/hold generators.
TD_PeakHold Type: Peak Hold Filter Notes: Generally used as a Peak hold for GUIs, and is not recommended for audio use. (You need to use a DSP-GUI bridge or Patch Mem)
TD_PeakHold Type: Stereo Peak Hold Filter Notes: Generally used as a Peak hold for GUIs, and is not recommended for audio use. (You need to use a DSP-GUI bridge or Patch Mem)
These filters are all suitable for use as a Voltage Controlled Filter (VCF) in synthesizers, and as such can have their cutoff and resonance frequencies modulated rapidly. Notes: It should be taken as read that all these filters have their control voltage internally limited to +10 Volts, and that they operate within the normalizer SynthEdit audio voltage range. Some may have the audio internally clipped so will distort at high input levels.
Ladder Filters.
TD_DiodeLP24_A Type: 24dB per Octave frequency roll-off diode ladder lowpass filter type A Notes: A simplified 4 pole diode-ladder lowpass filter with a single symmetrical non-linearity. Partial passband gain-loss compensation. Diode-ladder filters are unbuffered which leads to the cutoff frequency being a product of cutoff amount, input level and resonance.
TD_DiodeLP24_B Type: 24dB per Octave frequency roll-off diode ladder Lowpass Filter Type B Notes: A 4 pole diode-ladder lowpass filter, the first pole is an octave higher, with an additional unbuffered high pass filter in the feedback path that partially damps the resonance at low cut-off frequencies. An extra buffered high pass filter is on the input too. So it is more like a 5 pole + 1 pole filter. The filter cutoff slope is not a constant vs frequency. There are asymmetrical non-linearities, and partial passband gain-loss compensation. Diode-ladder filters are unbuffered which lead to the cutoff frequency being a product of cutoff amount, input level and resonance. Because of the first pole being an octave higher, maximum cutoff is 9.5 Octaves (~9.95kHz) if the sample rate is equal or less than 48kHz, 10.5 octaves (~19.9kHz) otherwise.
TD_DiodeLP24_C (EMS VCS3 Emulation) Type: 24dB per Octave frequency roll-off diode ladder Lowpass Filter Type C Notes: A 4 pole diode-ladder lowpass filter inspired by the paper “Efficient polynomial implementation of the EMS VCS3 filter” by Stefano Zambon and Federico Fontana. However it uses ‘Mystan’s Pivot’ method to approximate the non-linearities instead, which in this case are asymmetrical. Full passband gain-loss compensation. Diode-ladder filters are unbuffered which lead to the cutoff frequency being a product of cutoff amount, input level and resonance.
TD_Ladder5out_HP Type: Linear 4 pole High pass filter with five outputs Note: This module is useful as the basis for pole-mixing filters. Note: The filter does not self oscillate. Traditionally, 4-pole pole-mixing filters only mix the 4 poles. Two of the poles are inverting – either 1 and 3 or 2 and 4. Some short/set-high/bypass the first pole under some circumstances to get more variations. With this version, instead of bypassing – all you have to do is move the mixing-coefficients up i.e. hp1 coefficient, hp2 coefficient, hp3 coefficient becomes in-hp4 coefficient, hp1 coefficient, hp2 coefficient.
TD_Ladder5out_LP Type: Linear 4 pole Lowpass Filter with 5 outputs Notes: This module is useful as the basis for pole-mixing filters. Note: The filter does not self oscillate. Traditionally, 4-pole pole-mixing filters only mix the 4 poles. Two of the poles are inverting – either 1 and 3 or 2 and 4. Some short/set-high/bypass the first pole under some circumstances to get more variations. With this version, instead of bypassing – all you have to do is move the mixing-coefficients up i.e. lp1 coefficient, lp2 coefficient, lp3 coefficient becomes in-lp4 coefficient, lp1 coefficient, lp2 coefficient.
TD_LadderLP18_A Type: 18dB per Octave Transistor-Ladder Lowpass Filter Simplified filter version with a single symmetrical non-linearity. No passband gain-loss compensation. Self oscillates.
TD_LadderLP24_A Type: 24dB/Octave Transistor-Ladder Lowpass Filter Type A Simplified version with a single asymmetrical non-linearity. No passband gain-loss compensation (classic behaviour). Self oscillates.
TD_LadderLP24_B Type: 24dB per Octave Transistor-Ladder Lowpass Filter Type B Multiple asymmetrical non-linearities. Partial passband gain-loss compensation. Note: The filter does not self-oscillate.
TD_LadderLP24_C Type: 24dB/Octave Transistor-Ladder Lowpass Filter Type C This filter has a buffered high pass filter in the feedback path. This prevents self oscillation at very low frequencies and also prevents bass loss at high resonance levels. Asymmetrical non-linearities.
Oberheim X-Pander type filter.
TD_Panda (Inspired by the Oberheim X-Pander filter) Type: 4pole OTA Inspired Filter Notes: The filter poles are mixed internally to create 25 different frequency responses. Produces predominantly 3rd harmonic distortion. Self oscillates. List of Filter frequency responses; LP4, LP3, LP2, LP1, HP4, HP3, HP2, HP1, BP4, BP2, BPS, HP3LP1, HP2LP1, HP1LP3, HP1LP2, HP1BR2, BR2LP2, BR2LP1, BR4, BR2, BRBP2, LP1BR2HP1, LP1PK2, BR2PK2, HPX.
Sallen-Key filters.
TD_SK3P Type: Buffered 12dB/Octave Lowpass Sallen-Key Filter Frequency cutoff 12dB per octave slope. The extra pole is in the feedback path and limits resonance at higher frequencies and alters tracking a bit. Self-resonates up to about 3.7kHz. Symmetrical non-linearities.
TD_SK4P Type: 12dB/Octave Lowpass Sallen-Key Filter Experimental, has extra poles. Asymmetrical non-linearities.
TD_SK_A Type: Multi-Mode Sallen-Key Filter; Low Pass 12dB per Octave, High Pass 6dB per Octave, Band Pass 6dB per Oct. Buffered. This saves some CPU cycles compared to the Steiner modules. Asymmetrical non-linearity.
Steiner-Parker filters.
TD_Steiner_A Type: Buffered Steiner-Parker multi-mode filter Type A A Steiner-Parker filter is simply a multi-input Sallen-Key filter. Symmetrical non-linearities. Does not self-oscillate. Maximum input is +/- 10 volts. If the sample rate is less than, or equal to 48 kHz, then the maximum cutoff frequency is approximately 14 kHz otherwise it is approximately 19.9kHz.
TD_Steiner_B Type: Steiner-Parker Filter Type B An unbuffered version of a Steiner-Parker filter (the feedback loop is still buffered), which simply is a multi-input Sallen-Key filter. Asymmetrical non-linearities. Does not self-oscillate. Resonance decreases in higher octaves. Maximum input is +/- 10 volts. If the the sample rate is less or equal to 48kHz, maximum cutoff frequency is approximately 17.3 kHz otherwise it is approximately 19.9 kHz.
TD_Steiner_C Type: Steiner-Parker Filter Type C A buffered version of a Steiner-Parker filter, which simply is a multi-input Sallen-Key filter. Bright asymmetrical non-linearities. Self-oscillates. If the sample rate is less or equal to 48kHz, the maximum cutoff frequency is approximately 17.3kHz otherwise it is approximately 19.9kHz.
State-Variable filters.
TD_SV24_A Type: Cascaded State Variable Filters Type A; 24dB per Octave Low pass, 24dB per Octave High pass, and 12dB per Octave Band pass. Induced passband gain-loss to prevent too high levels with high resonance. This is a non-linear filter but it is not able to self-oscillate. This module uses less CPU than if two standard SE SV filters were cascaded.
TD_SV24_B Type: Cascaded State Variable Filters Type B; 24dB per Octave Low pass, 24dB per Octave High pass, 12dB per Octave Band pass. Induced passband gain-loss to prevent signal levels becoming too high with high levels of filter resonance. This is non-linear filter but it is not able to self-oscillate. The resonance level decreases as the filter cutoff frequency increases. This module uses less CPU than if two standard SE SV filters were cascaded.
TD_SV_C Type: State Variable Filter Type C; 12dB per Octave Low pass, 6dB per Octave Band pass. Experimental State Variable Filter that is modified by adding an extra feedback path around the structure, so it’s not really a true SV filter any more. Resonance decreases at higher frequencies. Asymmetrical non-linearities. Does not self oscillate.
TD_SVmo2 Type: Multiple Output State Variable Filter; 12dB/Octave Low pass, 6dB/Octave Band pass, 12dB/Octave High Pass The filter outputs can be mixed, combined or otherwise processed to achieve other filter shapes. Non-linear filter.
TD_SVmo2_ST Type: Stereo Multiple Output State Variable Filter 12dB/Octave Low pass, 6dB/Octave Band pass, 12dB/Octave High Pass The filter outputs can be mixed, combined or otherwise processed to achieve other filter shapes. Non-linear filter.
TD_SVxfade Type: Cross-fading State Variable Filter. Three pre-programmed selectable crossfade sequences. Select the filter type and cross-fade sequence from; Low pass /Band Reject /High pass, Low pass /Peak /High pass, Low pass /All pass /High pass. The cross-fade voltage range is from -5 Volts to +5 Volts.
This is a handy little prefab, that’s easy to make. It’s useful if you have a slider with the range of -10 V to + 10 V, it can be fiddly finding the 0 V “null point” with the standard slider.
How the center return slider works.
The control works by having a button or other clickable item send a Mouse Down signal to a Spring module, which then sends a reset value of 0 volts to the Patch Memory, and the Image 2 slider control.
We need to make up the structure below inside a container. When we change the Image2 filename to “vslider_med.png” this will automatically load the instructions for how the control should behave, so leave this property setting as “Auto”. Likewise with the Image2 that has “button.bmp” loaded. By connecting the Mouse Down plug of Text Entry4 to the PatchMemory Float3 if we click on this text label it will also reset the control to 0 Volts. You should untick the Text Entry4’s writeable property so that it can’t be edited from the panel (it keeps it’s mouse down control output though). All we need to do is set the Reset Value for the Spring module to 0, the the prefab is completed ready to save and use The maximum and Minimum slider values can be set as normal in the Prefab properties panel when in use in SynthEdit. Note: Do not try and make the slider return to 0 V “on click” by connecting the Mouse Down plug for the slider control… it won’t work like that. As soon as you move the slider it will send a Mouse Down to the Spring, and as soon as you release the control it will snap back to 0 V.
VST is an abbreviation of Virtual Studio Technology which is an audio plug-in software interface that plugs-in software synthesizers and effects units into digital audio workstations. VST and similar technologies use digital signal processing (DSP) to emulate a traditional hardware recording studio using computer software technology. Thousands of plugins exist, both paid and free, and many audio applications support VST under license from it’s original creator, Steinberg.
Overview VST plugins generally run within a digital audio workstation (DAW), to provide additional functionality and instruments, although there are few standalone plugin hosts exist that support VST plugins. Most VST plugins are either instruments (VSTi) or effects (VSTfx), although other categories do exist: for example spectrum analyzers, and various meters. VST plugins nearly always provide a custom graphical user interface (GUI) that displays controls similar to physical switches and knobs on audio hardware. Some (often older) plugins rely on the host application for their user interface.
VST Instruments.
VST instruments include software simulation emulations of well-known hardware synthesizers (Moog, ARP, Roland to name a few) and samplers. These often closely emulate the look of the original equipment as well as its sonic characteristics, and behaviour. This lets musicians and recording engineers use virtual versions of devices that otherwise might be almost unobtainable, very expensive and hugely expensive to keep in working condition.
A VST Instrument running in the Reason DAW.
VST plugins and MIDI VST instruments receive notes as digital information via MIDI, generate, process and output the results as digital audio.
VST Effects plugins.
Effects plugins are able to receive digital audio and process it, passing it on to their outputs. Some of the effect plugins also accept a MIDI input – for example, MIDI sync to modulate the effect in sync with the tempo. MIDI messages can control both instrument and effect plugin parameters. Most host applications can route the audio output from one VST to the audio input of another VST (chaining). For example, the output of a VST synthesizer can be sent through a VST reverb effect.
A VST plugin running in Reason DAW.
History of VSTs.
Steinberg released the VST interface specification and Software Development Kit (SDK) in 1996. They released it at the same time as the Steinberg Cubase 3.02 DAW, which included their first VST plugins: Espacial (a reverb effect), Choirus (a chorus effect), a Stereo Echo, and an Auto-Panner.
VST 2. Steinberg updated the VST interface specification to version 2.0 in 1999. One notable addition was the ability for plugins to receive MIDI data. This supported the introduction of VSTi plugins. VST Instruments could now act as standalone software synthesizers, samplers, or drum machines. Neon was the first available VST Instrument (which was included with Cubase VST 3.7). It was a 16-voice, 2-oscillator virtual analog synthesizer (Pretty basic compared to some of the VSTi’s being created now). VST 2.4. In 2006, the VST interface was updated to version 2.4. Changes included the ability to process audio with 64-bit precision. A free-software replacement was developed for Linux MultiMedia Studio (LMMS) that would be used later by other free-software projects.
VST 3.0 was introduced in 2008. Changes included: Audio Inputs for VST Instruments Multiple MIDI inputs/outputs Optional Steinberg Kernel Interface (SKI) integration
VST 3.5 was introduced in February 2011. Changes included: Note expression, which provides extensive articulation information in individual note events in a polyphonic arrangement. According to Steinberg, this improves support for performance flexibility, and allows a more natural playing feel. In October 2011, Celemony Software and PreSonus released Audio Random Access (ARA), which is an extension for audio plug-in interfaces, such as VST, allowing for greater integration between the audio plug-ins and DAW software.
VST2 Support officially discontinued. In September, 2013, Steinberg discontinued maintenance of the VST 2 SDK. In December, Steinberg stopped distributing the V2 SDK. The higher versions of SDK have continued support.
VST 3.6.7 came out in March, 2017. VST 3.6.7 includes a preview version of VST3 for the Linux software platform, and the VST3 part of the SDK was given a new dual license: “Proprietary Steinberg VST3” or the “Open-source GPLv3”.
Hosting VST’s
VST plugins can be hosted in incompatible environments by using using software a translation layer, or shim. For example, FL Studio only supports its own proprietary plugin architecture, but a native “wrapper” loads VST plugins, among others. FXpansion likewise has a VST to Real Time Audio Suite (RTAS) wrapper that lets VST plugins run in Pro Tools, and a VST-to-Audio Units (AU) wrapper lets VST plugins run in Logic Pro.
Hardware Hosting. Hardware VST hosts can load specially created versions of VST plugins. These units are portable and usable without a computer, although some of them do require a computer for editing. Other hardware options include PCI/PCIe cards designed specially for audio processing, which take over audio processing from the computer’s CPU and free up RAM and valuable processor power. Some hardware hosts accept VSTs and VSTis, and either run Windows-compatible music applications such as Cubase, Live, Pro Tools, Logic etc., or are able to run their own DAW. Other hardware hosts are only VST Hosts, and thus will require a separate DAW to function. Origin from Arturia is a hardware DSP system that houses several VST software synthesizers in one machine, such as the Jupiter 50/80 from Roland. Using the required software, audio data can also be sent over a network, so the main host runs on one computer, and the VST plugins can run on peripheral machines.
The VST Standard.
The VST plugin standard is the audio plugin standard created by Steinberg to allow any third-party developers to create VST plugins for use within VST host applications. VST requires separate installations for Windows, macOs, and Linux. The short history of software developments for Linux means few developers have as yet targeted the Linux platform.
Presets VST plugins usually have many controls, and therefore need a method of managing presets (sets of control settings). Steinberg Cubase VST introduced two file formats for storing presets: an FXP file stores a single preset, while an FXB file stores a whole bank of presets. These formats have since been adopted by many other VST hosts, although Cubase itself switched to a new system of preset management with Cubase 4.0. Many VST plugins have their own proprietary methods of loading and saving presets, which do not necessarily use the Steinberg FXP/FXB formats.
Synthedit Skins are a means of changing the appearance of your control panel view, and defining the behaviour of some of the controls. From the default dark blue skin:-
To this one:-
Skins are a collection of graphics files and text files. These folders and file are at the default path of C:\Users\Public\Documents\SynthEdit Projects once again do not edit or change this, except to add new folders which must always have a unique name. Shown below is the contents of the Default folder.
Important note: Do not change, edit or delete the default skin. Really don’t change it, not ever.
Add a new folder to the skins directory, the folder name is your new skin’s name. Once again, this folder must have a unique name.
Copy and paste images. Copy any of the skin bitmaps you want to change to your new directory. Each bitmap has a text file with the same name. It describes the skin. Once you have made your copy then feel free to edit it as you like using a bitmap (paint) editor.
Size matters: Keep your new skin images the same size as the originals, this will allow you to change the skin without having to re-arrange the controls again. You will almost certainly need to restart SynthEdit to see the changes you have made.
Mask files: The mask file is optional, it contains transparency information. A simpler way to use transparency is the keyword ‘transparent_pixel x,y’ in the text file. This tells synthedit which pixel contains the ‘transparent’ color.
Fonts: Font face, size and color are controlled by the file global.txt.
Image options: Type:- Slider:- the image has two parts: a background image and a sliding part that moves along a straight path. Knob/Animated:- An image containing a series of frames arranged in a vertical stack (aka ‘filmstrip’). Button:- Similar to a knob, but only two frames; on and off. Bargraph:- the image contains two stacks of ‘lights’ (all-off and all-on). The metadata describes how to animate the lights.
Knob/Animated frame_size:- the size of each frame of a filmstrip image. in pixels. Applies to buttons, knobs and animated images. Example:- frame_size 32, 32
padding:- The number of extra blank pixels to insert around an image. Used to visually center a knob or button which is asymmetrical. Example; padding 13, 7, 13, 4
handle_rect:- The position of the handle in a slider image. The handle is the part that moves. Example;- handle_rect 4, 41, 28, 55
handle_range:- The range of motion of the handle in a slider image. The handle moves from the top to the bottom of the image. The range is specified in pixels. Example;- handle_range 1, 26
orientation:– vertical or horizontal – the direction of motion of the handle in a slider image. Example;- orientation vertical
segment:- Used for Bargraph images. The vertical position of the first segment, followed which is by the height of each subsequent segment, specified in pixels. Example;- segment 1, 6
segment_count:- for bargraph images. The number of segments in the image in a Bargraph image.
tiled t/f:- indicates that an image should repeat like wallpaper to fill the available space. Example;- tiled t
mouse_response:- how the image reacts to the mouse.
h – horizontal v – vertical c – click r – rotary s – stepped
line_end_length:- for panel group images.
transparent_pixel:- deprecated. For bmp images without a mask file, this is the color that is treated as transparent. The color is specified as a pixel position in the image.
If you were a new user looking at the default skin for the first time, wondering how to make your own slick professional skin, the first thing you should look at is: C:\Users\Public\Documents\SynthEdit Projects\skins\default\global.txt This is where fonts, their sizes, colours, backgrounds, etc. are all defined. Global.txt is the minimum requirement to have a new skin, here are the contents of the global.txt file as defined for the default skin.
Note: If you are familiar with CSS as used in web page design this will look familiar, it’s basically a cut down version of CSS.
Important Note: Never delete or modify the default skin or its global.txt file. Synthedit looks for these file when loading. As with every other item in the default skin – that SynthEdit looks for when loading – if there is no definition in the global.txt file, it will refer back to the original default folder. That is why you don’t edit the default, among other reasons (you will get a strange display in structure view unless you really know what you’re doing).
Commenting: A line prefixed by a semicolon is a comment, anything you put in a comment is not read by SE. Commenting is useful as you may not remember why you changed a setting in a skin, and what the results of the change are. Comments are a designers best friend. Note: You can also use ‘//’ for commenting.
If you see the 3rd party skins made by experts, they only have a few items in them, you only need to include the objects you want to replace or change. For example: you could, for example, make a skin called “Alternative Fonts1” and it would just contain global.txt – and your new global.txt need only contain a few references, not all, if you only wanted to change fonts for a few but not all text displays.
Fonts: Beware of using unusual fonts. You’ll experience a bit of a disappointment seeing one of you projects on someone else’s computer with the wrong font, your fonts have to exist on the host system to display correctly, stick to the window (or MAC) system core fonts and you can’t go wrong.
Small Button and LED:– There is the difference between small button and switch or led. The small button is ‘click’ action -momentary- switch is ‘stepped’ -2step ‘latch’ , and the LED isn’t defined, and therefore is ‘passive’, a slave graphic.
Knob med.png and Knob small.png:- These are ‘type animated‘ with mouse response rotary. In contrast to the fader used with the standard fader, which is a bitmap with a Mask, why the different method? I could replace the bitmap and mask with a PNG with transparency, as long as I observed positioning and size (making it much easier to make new faders)
Are you really supposed to start using the subcontrols knobs straight off? You don’t of course, you use the stock knob and fader when you’re knocking up an idea – so ideally, it would be nice to re-do those in your new skin, even if you were to use subcontrols. In fact the quest would ideally be to produce a complete replacement generic skin where you can change the colours easily (for example). That is quite a bit of work if you want to know what is going on with each different object type. The ‘workmanlike’ approach of just bashing out new graphics, rigorously adhering to default sizes, and maintaining consistency in style, may be the quickest and most effective way to achieve this, ultimately.
Note that there is a full set of parameters for each text category, but that it is not always used in full; so you could add extra parameters like background colour to them.
Colours: For some reason the method of specifying colours is non-standard. Instead of RR GG BB (the usual Red-Green-Blue format) in SynthEdit it’s reversed to BB GG RR!
Default skin global.txt (annotated)
;other skin settings ; EVERYTHING WITH SEMICOLONS IS IGNORED ; Fonts ; www.w3.org/TR/REC-CSS1#font-variant ; font-color – BBGGRR Blue-Green-Red mix, hexadecimal numbers ; background-color SAME (-1 = transparent) ; font-size – Height in pixels ; font-family – Searches available fonts, left to right. Specific font name, or generic… ; ‘serif’ (e.g. Times) ; ‘sans-serif’ (e.g. Helvetica) ; ‘cursive’ (e.g. Zapf-Chancery) ; ‘fantasy’ (e.g. Western) ; ‘monospace’ (e.g. Courier). Doesn’t seem to go smaller than 12 (Mind you too much smaller and it will be difficult to read, need to consider usability) ; Arial, Times New Roman, and Courier New are core fonts to Windows ; ; text-decoration underline (overline, line-through, blink not supported) ; font-style normal |italic (oblique not supported)
; font-weight : normal | bold | light | 100 | 200 | 300 | 400 ; | 500 | 600 | 700 | 800 | 900 ; following not supported at present: bolder | lighter ; text-align center | left | right ;UP TO THIS POINT, EVERYTHING IS INSTRUCTIONS FOR HOW TO DEFINE FONTS AND DISPLAY THEM ; ;TEXT DISPLAY CATEGORIES FOLLOW: ; >(text on modules title bar, structure view) FONT_CATEGORY module_title font-family Arial, “sans-Serif” font-size 12 font-color #FFFFFF
FONT_CATEGORY panel_group (panel lines title font) ;font-family “System”, “sans-Serif” <THIS IS IGNORED but why 2 options below? font-family “MS Sans Serif”, “sans-Serif” font-size 14 font-weight bold font-color #FFFFFF
FONT_CATEGORY control_label (never sure about this one.. ?default control text?) ;font-family System, “monoSpace” ;font-size 12 font-family “MS Sans Serif”, “sans-Serif” font-size 14 font-weight bold font-color #FFFFFF
FONT_CATEGORY control_edit (get confused by this one too..) ;font-family System, Arial, “sans-serif” ;font-size 12 font-family “MS Sans Serif”, “sans-Serif” font-size 14 font-weight bold ;font-color #000000 – don’t apply to edit boxes
this one is obvious ; this category is for LED Stack item labels and rotary switch labels FONT_CATEGORY switch_label font-family Verdana, “monoSpace” font-size 10 font-color #F5F5F5
joystick.txt type animated frame_size 25, 25 ; extra space at: top, bottom, left, right padding 7, 1, 7, 1
knob_med.txt type animated frame_size 32, 32 mouse_response rotary
knob_sm.txt type animated frame_size 16, 16 mouse_response rotary
led.txt type animated frame_size 18, 18
lines.txt type lines frame_size 27, 27 // Size of corners ; line_end_length 5 // length of line end-cap. Defaults to 5.
moog_knob.txt – this is the scale for the knob. type animated frame_size 48, 45 padding 13, 7, 13, 4 mouse_response rotary
moog_kob_sm.txt– is just a smaller version of the knob scale shown above. type animated frame_size 30, 29 padding 8, 4, 8, 3 mouse_response rotary
shiny_cap.txt – shiny_cap is the insert in the centre of the knob control. type animated frame_size 28, 28 padding 18, 19, 18, 19 mouse_response rotary
shiny_cap_sm.txt – shiny_cap_sm is the insert in the centre of the small knob type animated frame_size 18, 18 padding 11, 12, 11, 12 mouse_response rotary
switch.txt ; medium vertical slider type animated orientation vert frame_size 25, 26 ; padding adds extra space at: top, bottom, left, right padding 5, 2, 5, 3 mouse_response stepped
switch_rotary.txt type animated frame_size 40, 40 mouse_response rotary