SynFactory online help system

This file is part of the online help system and not designed to be viewed outside SynFactory

It might be viewable in a normal browser, because it is almost standard HTML format.

Please DON'T modify this file, there is a high risk it breaks SynFactory!


SynFactory Quick Tour

Intro


Thank you for downloading SynFactory, The Interactive Modular Software Synthesizer. Get ready for an experience with one of the most advanced synthesizers currently available for your PC.

SynFactory is a very powerful synthesizer with almost unlimited posibilities. Although it is not a simple program to 'grasp' at first try, when mastered SynFactory gives you almost unlimited freedom in multimedia creativity.

First steps


SynFactory is a fully modular synthesizer and it tries to mimmick the old analoge modular synths from the past. Unlike many other virtual analog synthesizers there is no limit on the way modules can be connected. There are many different modules available, each with his own purpose, but the trick is to use multiple modules connected together to make the requested sound(s). This can be a difficult task in the beginning, because it takes experience before it is immediately clear which modules give the right effect. This introduction will give you a head-start by introducing the most important modules and some tips on constructing larger setups which are called patches.

We start with a clean patch. Select New from the File menu at the top of the main window. Don't worry this window will stay on top, if the your screen resolution allows it you can have them both open next or below each other, otherwise a little movement with the mouse may be needed to bring the main menu in view. We now have a clean window with a gray background. This gray area is called the 'patch' area. You can build patches here which means a group of interconnected modules generating sound/music. We start simple by adding our first module.

Select the patch window and press the right mouse button (or enter) to display the context window. Select the Frequently used modules submenu. Select the last one OUT - Output (T), as you can see this is a important module so it has a shortcut. Pressing T on the keyboard also inserts this module without the need to go through the menus. The OUT module will take between 1 and 8 audio inputs and sends them to the audio card.

Menu help

File menu

New


Clear the patch area and reset the program state back to the defaults. Make sure to save the current patch before executing this command. There is no confirmation box and any unsaved changes are lost.

Open...


Load a patch from disk. This will replace the current loaded patch, again no confirmation box so make sure the current patch is saved if necessary.

Save patch


Store the patch, overwriting original file used to load the patch. If its a patch created with the 'new' command a 'Save patch as' is executed instead.

Save patch as


This command is used to save the current patch under a new name. If the new name already exists a confirmation box will be displayed asking if the old file should be replaced with the new one.

Insert file (merge)


This also loads a patch from disk like the 'open...' command, but the new patch is added to the current loaded patch instead of replacing it. The new patch is loaded on the current viewed area on the screen, move the screen to an empty area within the current patch to prevent the modules of the two patches overlapping.

Exit program


This will exit the program (same as clicking on the 'X' on the right top of the patch window). The current patch is automatically stored in a file called 'autoload.syn' together with the current program settings. This file is reloaded on startup of SynFactory. This makes it possible to leave at anytime without losing work.

Edit menu

Cut (Ctrl+X)


Move all currently selected modules from the patch to the clipboard. They will be removed from the patch.

Copy (Ctrl+C)


Place a copy of all currently selected modules on the clipboard.

Paste (Ctrl+V)


Place a copy of the modules stored on the clipboard to the current patch.

Delete (Del)


Remove the currently selected module(s) from the patch area. All cables running to and from the module(s) are also removed from the patch.

Select All (Ctrl+A)


Select all modules in the patch.

Clone (Ctrl+D)


Clone currently selected modules. This duplicates the modules inclusive all the settings of the controls and the wiring within the set of selected modules. The newly created module(s) are selected (so they can be moved to a new location).

Select cable color


This selects the color used for new patch cables. The cables already connected will keep their color. Its like you have four boxes with patch-cables sorted on color and select which box to use. This menu is only available if 'Patch cable display' in the config-submenu is NOT set to mode 0.

PlayMode menu

Stop


Stops playback and closes the capture file if it is open (record mode). The scope window freezes on the last generated audio information. This function is also available on the buttonbar.

Pause


Pauses playback until play or record button is pressed again. The audio generation will continue where it stoped without any gap in the generated wavefile. The only difference between stop and pause is that the capture wavefile isn't closed.

Record


Opens a file dialog to set the filename of the capture file. Synfactory will always create a stereo .WAV file with 16 bits resolution and 44.1 KHz sampling rate. Capturing will start immediately after closing the dialog with OK. If the filename already exists a confirmation box will appear asking if the original file must be overwritten. During capture the sound will also be played through the soundcard.

Play


Starts playback of the generated audio.

Config menu

Edit Settings


Opens the settings window.

Window menu

Output Scope


Opens a new window showing the waveform currently send to the soundcard or capture-file. The top waveform shows the left channel and the bottom waveform shows the right channel. It's possible the scope window will show the waveform a little earlier than it is heard on your speakers. Depending on the buffer sizes this delay can be up to 1 second.

Playback control


Opens the transport window. This has buttons for play, stop, pause and record. It also has a digital VU-meter showing a the amplitude of the left and right audio channels.

Mixing console


Opens the mixing console window. This window contains sliders and virtual pots for setting volume and send-levels for internal mixer busses. Use CON, AUX and RET modules to provide connection with the mixer console.

Tracker (F3)


Switches main window to tracker.

Timeline view (F4)


Switches main window to timeline view.

Patch editor (F5)


Switches main window to patch editor.

Help menu

Context menu (F1)


Help window will open displaying help corresponding with current context. This is most of the time the current selected item or the item directly below the cursor.

Editor help (Shift+F1)


Help window will open showing help for current active editor screen.

Menu help


Help window will open showing this information page.

About SynFactory


Help window will open showing detailed licencing and version information of SynFactory.

Patch editor

Concepts

The configuration of an analog synth is called a patch. Because SynFactory tries to mimic a modular analog synth the files and setups will be refered to as a patch. Only one patch is active or loaded at a time. A patch consists of modules and cables. Modules are the processing elements and are shown on the screen by rounded rectangles. The cables connect the modules together. There are multiple ways to show these cables, from simple black lines to emulating real hanging colored cables and connectors. The modules contain controls which you can manipulate with the mouse. There are a few different controls. The green colored circles are virtual rotary knobs and can take values from -32768 to 32768. The value is displayed below the control in numeric from and is also visualised in the green circle with a white marker. Some modules also use push-buttons or switches.

The program is designed to be used in real-time. All modification made to the patch have a direct influence on the generated audio. Modifications can be made to the patch while sound is generated.

User interface concepts

The screen will be almost empty initially. The trick is located under the right mouse button. With this button you can add modules to the patch area. The patch area is the dark grayish background filling almost the complete program window. The patch area is actually larger as your window and with the left mouse button it is possible to scroll the patch area around. Just click on the darkgray background with the left mouse button and while holding down the button scroll with your mouse. The patch area will follow your mouse. To speedup redrawing the screen it is redrawn in a simplified version until the mousebutton is released.

Adding modules is simple. Just select the module from the popup menu (right mouse button or press enter). There are two submenu's where you can find modules to insert. The Frequently used modules submenu will list the most common modules also often found on analog equipment. The All modules submenu lists all available modules (around 80) sorted on function.

Modules can moved by left clicking on the name of the module and holding it while scrolling the mouse. Most modules have inputs and outputs located at the sides of the modules (represented by small rectangles). Inputs can be conncted to an output, only one connection per input is possible. The outputs can drive an unlimited number of inputs. To make a connection first a output must be choosen. Click left on the output rectangle you want to use. The output color will change to from gray to black. Now select an input and a connection will be made. Depending on the settings there will be a black or colored line showing the connection. Left clicking on a already connected input will disconnect the current connection.

Using the mouse

Program assumes a two button mouse, the left mouse button is used to activate controls and to move objects around the screen. The right mouse button displays a popup menu. Some actions require both mouse buttons to be pressed.

Tracker editor

Concepts

Keyboard commands

Effect list

000 - no effect

MOD: 000
S3M: ???

Axy - Arpeggio


Standard PT Arpeggio.

MOD: 0xy
S3M: Jxy

Dxy - Volume slide up/down.

MOD: Axy
S3M: Dxy

Modules

OSC - Multifunction oscillator

This is the standard oscillator, it can provide 5 different waveforms selectable with a block of icons (there are 6 icons but one is not currently active). The 5 waveforms are: Triangle, Saw, Pulse, Sin, Triggered Noise. The Pulse waveform has a variable pulse width. Use the PWidth control and/or the PW inputs to change the pulse width. With the control at 0 gives a 50% waveform. At 32767 (or -32768) the wave is fully DC. The Triggered Noise waveform is comparable with a white noise source followed by a Sample and Hold gate. The trigger speed of the gate is set by the oscillator speed. The effect is usefull as stepped random control at low speed, or at higher speeds to generate special effects like spaceships, storms and sea-waves.

Controls:
Freq - Sets frequency, this is a logarithmic control. To make live easier the actual frequency is displayed below the control in Hertz (number of cycles a second).
PWidth - Sets the pulsewidth, only functional when the Pulse waveform is selected.
Ampl - Sets the amplitude of the output signal. When set to 0 there is no signal. The value can also be negative and reverses the waveform (usefull for the Saw waveform).

Inputs:
FM (2x) - (frequency modulation) modulates the oscillator frequency in a logarithmic (musical) way.
Lin - Also a frequency modulation input but with a linear response, usefull for vibrato and FM synthesis.
PW (2x) - PulseWidth modulation, sets the width of the Pulse waveform (only active when the Pulse waveform is selected).
AM - Amplitude modulation input, it is added to the amount set by Ampl control. The amplitude control is linear.
Sync - Hardsync, can be used to let two or more oscillators run synchronised to each other, even if both run at different frequencies. The trigger point is when the input signal becomes positive.

Outputs:
Single output providing the currently selected waveform.

Available:
SynFactory 0.99 or higher version.

MOS - Mini oscillator

This is a more simple oscillator as the OSC. It has less inputs and controls. It provides only 3 waveforms, but these are available simultaneously. This can be usefull when combined with a selector or switch so the waveform can be changed by signals available in the patch.

Controls:
Freq - Sets frequency, this is a logarithmic control.

Inputs:
FM - (frequency modulation) modulates the oscillator frequency in a logarithmic (musical) way.
Lin - Also a frequency modulation input but with a linear response, usefull for vibrato and FM synthesis.
PW - PulseWidth modulation, sets the width of the Pulse waveform.

Outputs:
Tri - Triangle wave output
Saw - Saw-wave output
Pls - Pulse wave output (only this one can be controlled with the PW input)

Available:
SynFactory 1.00 or higher version.

RND - White and colored noise source

White noise source, with an additional 6db/oct lowpass filter.

Controls:
Color - Sets the cutoff frequency of the lowpass filter.
Ampl - Sets the peak amplitude of the resulting noise.

Inputs:
AM - Controls the peak amplitude of the resulting noise.

Outputs:
Single output providing the (filtered) noise.

Available:
SynFactory 0.99 or higher version.

Formanzzz - The formant oscillator

The formanzz module generates sound with very distinct sound spectra. It is usefull as raw material to filter or otherwise process. As pure sound source it is less usefull due to its harsh sound. It can be used to emulate electric gitars or other sounds with much overtones. The formant control selects one of the available waveforms and must be set to something different as zero (0) to generate sound. There are over 30000 different sounds spectra to choose from.

Controls:
Freq - Sets frequency, this is a logarithmic control (same scale as OSC and MOS oscillators).
Formant - Selects the generated waveform. Set this to something different as zero (0) otherwise there is no sound.
Ampl - Sets the amplitude of the output signal. When set to 0 there is no signal. The value can also be negative and reverses the waveform.

Inputs:
FM - (frequency modulation) modulates the oscillator frequency in a logarithmic (musical) way.
Lin - Also a frequency modulation input but with a linear response, usefull for vibrato and FM synthesis.
Frmt - Sets the formant, this value is added to the formant control.
AM - Amplitude modulation input, it is added to the amount set by Ampl control. The amplitude control is linear.

Outputs:
Single output providing the generated waveform.

Technical details:
The formanzzz module is actually a pseudo random noise generator, but it gets retriggered by a buildin oscillator. Due to the repeating character of the noise a tone with specific spectra is generated. The noise source is specificly 'badly' designed so its repeative, something a normal noise source shouldn't be. The formant control sets the start point for the pseudo random number generator (seed) and is multiplied by a internal value to spread the actual available sounds over a huge range. Its undoable to describe all 30000+ spectra so experiment yourself.

Available:
SynFactory 0.99 or higher version.

SineBank - Multiple octave Sine wave oscillator

Oscillator generating 9 sinewaves at the same time, each one higher in frequency. This oscillator can be used to experiment with additive synthesis (usefull to make organ and bell like sounds).

Controls:
Freq - Sets frequency, this is a logarithmic control. To make live easier the actual frequency is displayed below the control in Hertz (number of cycles a second).
Base - Sets amplitude for sinewave of base harmonic.
Base*2-Base*9 - Sets amplitudes for sinewaves of higher harmonics (number gives multiplication to base frequency).

Inputs:
FM (2x) - (frequency modulation) modulates the oscillator frequency in a logarithmic (musical) way.
Lin - Also a frequency modulation input but with a linear response, usefull for vibrato and FM synthesis.
FB-F9 - Control input for amplitude modulation of each of the 9 sinewaves.

Outputs:
Single output providing the sum of the 9 generated sinewaves.

Available:
SynFactory 1.12 or higher version.

OB VCF - 12dB OB-type filter

This filter emulates the sound of the Oberheim voice-expansion filter. It is a two stage filter with much feedback, so it gives a very strong sound. Use it for those classic analog sounds like leads and strings. Because of its resonance characteristic, its also usefull for noise filtering in percussion sounds.
Due to the power of the filter, there is a buildin limiter to prevent 'lockup' at high signal inputs.

Controls:
Cutoff - Sets cutoff frequency for the filter. All frequencies above the cutoff frequency will be filtered.
Reso - Sets the filter resonance amount. It amplifies frequencies around the cutoff point. Generates a distinct peak in the audio spectrum. At high settings the filter will self oscillate.

Inputs:
In (3x)- Audio input, this is the signal which is filtered.
Frq (2x)- Cutoff control input. Same scale as Cutoff control.
Q - External control of resonance, input is combined with Reso control.

Outputs:
LP - Lowpass output, the audio is filtered with a 12 db/oct slope.
BP - Bandpass output.
HP - Highpass output.

Technical details:
The filter has 2 stages with 6 db/oct lowpass filters. Due to a feedback loop from the last stage to the input the filter will operate as a multimode filter providing LP, BP and HP outputs simultaneous. This filter has some special characteristics. The resonance peak lies higher as the cutoff frequency. The BP and HP outputs are much stronger as compared to the LP (except when selfoscillating). Although the MMF-filter has a feedback loop, using it will not result in the same sound. The MMF-filter has the resonance peak around the cutoff, while this filter has it about 2 octaves higher.

Available:
SynFactory 1.00 or higher version.

MMF - Multimode Mode filter (12/18/24 dB)

This is a 4 stage filter with multiple outputs. It has a very natural character and can be used for most filtering purposes. Because of its 4 stages it can sound a little dull, use the feedback control to 'lighten up' the sound.

Controls:
Cutoff - Sets cutoff frequency for the filter. All frequencies above the cutoff frequency will be filtered.
Reso - Sets the filter resonance amount. It amplifies frequencies around the cutoff point. Generates a distinct peak in the audio spectrum. At high settings the filter will self oscillate.
FdBack - Enhances the higher tones in the spectrum. Higher feedback settings give a brighter sound.

Inputs:
In (3x)- Audio input, this is the signal which is filtered.
Frq (2x)- Cutoff control input. Same scale as Cutoff control.
Q - External control of resonance, input is combined with Reso control.

Outputs:
L12 - Lowpass output, the audio is filtered with a 12 db/oct slope.
L18 - Lowpass output, the audio is filtered with a 18 db/oct slope.
L24 - Lowpass output, the audio is filtered with a 24 db/oct slope.
BP - Bandpass output.
HP - Highpass output.

Technical details:
The filter has 4 stages with 6 db/oct filters. The BP and HP are generated by taking the difference between some outputs of the stages. This result in only between 6 to 12 db/oct for the BP and HP outputs. More strong filtering would make these outputs too dull. Use the OB-VCF filter if a little more heavy BP filtering is necessary. The OB-VCF has very strong feedback and therefore more steep filtering. The Feedback control is accomplished by sending part of the lowpass filtered output back to the input, because these will be out of phase they cancel each other out. This results in LP outputs which sound brighter.

Available:
SynFactory 1.00 or higher version.

VCA - Amplifier with variable gain

This module which is named after its analog counterpart (Voltage Controlled Amplifier), is used to amplify a signal depending on the value of the control inputs. There is also a frontpanel control to set the default gain of the amplification. The range of the gain is 0% (<0) to 400% (32767).

Controls:
Gain - Initial gain (range 0% to 400%).

Inputs:
In - Input signal.
Exp - Exponentional control input (same as Gain knob).
Lin - Linear control input, sometimes usefull for control by an ADSR. Because this module has 2 quadrant modulation only, it can't be used for ringmodulation. Use a MUL module instead.

Outputs:
Single output providing the attunated or amplified signal.

Technical details:
Output = (In * (Lin + SCALEDEXP(Exp + Gain))) / 8192

Available:
SynFactory 1.00 or higher version.

ADD - 2-8 input adder

Adds the signals on all inputs together and send it to the output. It accepts all types of signals and simply adds them together. Usefull if you want to feed multiple outputs into one input. Some modules already have multiple inputs when this is common (like the filters). Adding multiple high volume signals together increases the chance for distorsion. Use one of the mixers instead, because these have controls to lower the volume on each input.

Inputs:
2 to 8 signal inputs which will be added together.

Outputs:
Single output providing the summed value of all inputs

Available:
SynFactory 0.99 or higher version.

MUL - Multiplier/Ringmodulator

Calculates the product of the two inputs and scales this down to the normal signal range. If both inputs have maximum amplitude, the resulting product will have the same amplitude. This module can be used for multiple purposes. It can function as a ringmodulator, a amplitude modulator with linear response or a distortion unit (with same signal connected to both inputs).

Inputs:
Two signal inputs.

Outputs:
Single output providing scaled product of the two inputs.

Technical details:
Normal signal range is from -32768 to 32767. Multiply these together and the range becomes much larger. The resulting product is scaled down by dividing by 32768. This is a very fast operation because it can be done by shifting the result 15 bits to the right.

Available:
SynFactory 0.99 or higher version.

SUB - Subtractor

Calculates the difference between two signals. Because a not connected input is zero, it can also be used as an inverter.

Inputs:
inv - Inverted input, this signal is subtracted from zero before added.
noninv - Non inverting input, this signal is added unmodified.

Outputs:
Single output providing the defference between the two inputs.

Technical details:
Output = noninv - inv

Available:
SynFactory 0.99 or higher version.

SPLIT - Positive and negative signal splitter

This module splits the input in 3 different signals depending on the sign of the input signal.

Inputs:
Single input signal which is splitted on sign.

Outputs:
Pos - Only the positive values of the input signal are send to this output. If the input signal is negative this output is set to zero.
Neg - Only the negative values of the input signal are send to this output. If the input signal is positive this output is set to zero.
Abs - This is the absolute value of the input signal. Negative signals are converted to positive signals, zero or positive signals are unchanged. The effect is a signal with the same amplitude as the input signal, but the signal is always positive (or zero).

Available:
SynFactory 0.99 or higher version.

BETWEEN - Window comparator

This module performs two functions. It checks if a signal is in a range set with two set-points. Two logical outputs provide information about the input signal. The signal is also send out unmodified as long its in the allowed range. Outside the range its clipped to one of the set-points. This module can therefore also be used as a distortion unit.

Controls:
Point1 - Set clipping point 1.
Point2 - Set clipping point 2.

Inputs:
inp - Signal input
pnt1 - Control input for setting first limit point.
pnt2 - Control input for setting second limit point.

Outputs:
out - Output is the same as the input signal but clipped to the set-points when the signal is outside the allowed range.
btwn - This logic output is active (32767) when the signal is within the range (doesn't clip).
clp'd - This logic output is active (32767) when the signal is outside the range (it is clipped).

Available:
SynFactory 1.13 or higher version.

OR - 2-8 input logic OR gate

The OR module performs a logic function. The output is active when one or more of the inputs are active.

Inputs:
Two to eight logic inputs. When the input value is <0 the input is inactive, when value is >0 the input is active.

Outputs:
Single output providing the result of the logic OR function. This output is active (32767) when one or more inputs are active (>0).

Technical details:
Logic diagram OR
Input 1Input 2Input 3Input 4Input 5Input 6Input 7Input 8Output
<0<0<0<0<0<0<0<00
>0xxxxxxx32767
x>0xxxxxx32767
xx>0xxxxx32767
xxx>0xxxx32767
xxxx>0xxx32767
xxxxx>0xx32767
xxxxxx>0x32767
xxxxxxx>032767

Available:
SynFactory 1.00 or higher version.

AND - 2-8 input logic AND gate

The AND module performs a logic function. The output is active when all of the inputs are active.

Inputs:
Two to eight logic inputs. When the input value is <0 the input is inactive, when value is >0 the input is active.

Outputs:
Single output providing the result of the logic AND function.

Technical details:
Logic diagram AND
Input 1Input 2Input 3Input 4Input 5Input 6Input 7Input 8Output
<0xxxxxxx0
x<0xxxxxx0
xx<0xxxxx0
xxx<0xxxx0
xxxx<0xxx0
xxxxx<0xx0
xxxxxx<0x0
xxxxxxx<00
>0>0>0>0>0>0>0>032767

Available:
SynFactory 1.00 or higher version.

NOT - Logic NOT gate

Inputs:
Single input for NOT gate.

Outputs:
Single output providing the logic NOT function.

Technical details:
Logic diagram NOT
InputOutput
<032767
>00

Available:
SynFactory 1.00 or higher version.

XOR - Logic XOR gate

Inputs:
2 inputs for XOR gate.

Outputs:
Single output providing the logic Exclusive OR function.

Technical details:
Logic diagram ExOR
Input 1Input 2Output
<0<00
<0>032767
>0<032767
>0>00

Available:
SynFactory 1.00 or higher version.

Pulsar - Pulse generator/clock divider

Pulsar acts like a counter but the outputs give only a very short pulse. This module can be used to trigger SyncDelay modules or control counters or other pulsar modules. Triggering envelope generators can be tricky because the pulse is too short for the envelope generator to follow. Use a TRIG module to increase the pulse length.

Inputs:
Clk - Clock input, Pulsar counts on rising edge of clock signal.
Rst - Internal counters are resetted.

Outputs:
:2 - Clock divided by two (a pulse is generated for each 2 clocks).
:3 - Clock divided by three (a pulse is generated for each 3 clocks).
:4 - Clock divided by four (a pulse is generated for each 4 clocks).
:5 - Clock divided by five (a pulse is generated for each 5 clocks).
:6 - Clock divided by six (a pulse is generated for each 6 clocks).
:7 - Clock divided by seven (a pulse is generated for each 7 clocks).
:8 - Clock divided by eight (a pulse is generated for each 8 clocks).
:16 - Clock divided by sixteen (a pulse is generated for each 16 clocks).

Available:
SynFactory 1.01 or higher version. Although available, this module doesn't work correctly in pre 1.01 versions.

BIN - 8 bit Binary counter

Digital counter. Clock signals are counted binary wise. The counter is 8 bits wide so divides the clock signal by 256. The counter triggers on a negative clock input, this makes daisychaining multiple counter easy. Simply connect the :256 output of the first counter with the -Clk input of the second. They will act as a 16 bit counter that way dividing the clock by 65536.

Inputs:
-Clk - Clock input for counter. Single step after each positive to zero or negative transition of the clock.
Rst - Making this input high will reset the counter to 0 (all outputs low).

Outputs:
:2 - Counter bit 0, clock divided by 2 output.
:4 - Counter bit 1, clock divided by 4 output.
:8 - Counter bit 2, clock divided by 8 output.
:16 - Counter bit 3, clock divided by 16 output.
:32 - Counter bit 4, clock divided by 32 output.
:64 - Counter bit 5, clock divided by 64 output.
:128 - Counter bit 6, clock divided by 128 output.
:256 - Counter bit 7, clock divided by 256 output.

Available:
SynFactory 1.00 or higher version.

DeMux - 1 to 2 demultiplexer

A demultiplexer makes one of its outputs high (>0) and the rest low (<0). Which one depends on its inputs. The inputs represent a binary number.

Inputs:
S0 - Binary input to select one of the two outputs.

Outputs:
Gt0-1 - Only one of these outputs is active.

Technical details:
Logic diagram 1 to 2 demultiplexer
S0Gt0Gt1
<0327670
>0032767

Available:
SynFactory 1.00 or higher version.

DeMux - 2 to 4 demultiplexer

A demultiplexer makes one of its outputs high (>0) and the rest low (<0). Which one depends on its inputs. The inputs represent a binary number.

Inputs:
S0 - Binary input to select one of the four outputs (weight of S0 is 1).
S1 - Binary input to select one of the four outputs (weight of S1 is 2).

Outputs:
Gt0-3 - Only one of these outputs is active (active output calculate with S1*2+S0).

Technical details:
Logic diagram 2 to 4 demultiplexer
S1S0Gt0Gt1Gt2Gt3
<0<032767000
<0>003276700
>0<000327670
>0>000032767

Available:
SynFactory 1.00 or higher version.

DeMux - 3 to 8 demultiplexer

A demultiplexer makes one of its outputs high (>0) and the rest low (<0). Which one depends on its inputs. The inputs represent a binary number.

Inputs:
S0 - Binary input to select one of the eight outputs (weight of S0 is 1).
S1 - Binary input to select one of the eight outputs (weight of S1 is 2).
S2 - Binary input to select one of the eight outputs (weight of S2 is 4).

Outputs:
Gt0-7 - Only one of these outputs is active (active output calculate with S2*4+S1*2+S0).

Technical details:
Logic diagram 3 to 8 demultiplexer
S2S1S0Gt0Gt1Gt2Gt3Gt4Gt5Gt6Gt7
<0<0<0327670000000
<0<0>0032767000000
<0>0<0003276700000
<0>0>0000327670000
>0<0<0000032767000
>0<0>0000003276700
>0>0<0000000327670
>0>0>0000000032767

Available:
SynFactory 1.00 or higher version.

DeMux - 4 to 16 demultiplexer

A demultiplexer makes one of its outputs high (>0) and the rest low (<0). Which one depends on its inputs. The inputs represent a binary number.

Inputs:
S0 - Binary input to select one of the sixteen outputs (weight of S0 is 1).
S1 - Binary input to select one of the sixteen outputs (weight of S1 is 2).
S2 - Binary input to select one of the sixteen outputs (weight of S2 is 4).
S3 - Binary input to select one of the sixteen outputs (weight of S3 is 8).

Outputs:
Gt0-15 - Only one of these outputs is active (active output calculate with S3*8+S2*4+S1*2+S0).

Technical details:
Logic diagram 4 to 16 demultiplexer
S3S2S1S0Gt0Gt1Gt2Gt3Gt4Gt5Gt6Gt7
<0<0<0<0327670000000
<0<0<0>0032767000000
<0<0>0<0003276700000
<0<0>0>0000327670000
<0>0<0<0000032767000
<0>0<0>0000003276700
<0>0>0<0000000327670
<0>0>0>0000000032767
>0xxx00000000

S3S2S1S0Gt8Gt9Gt10Gt11Gt12Gt13Gt14Gt15
<0xxx00000000
>0<0<0<0327670000000
>0<0<0>0032767000000
>0<0>0<0003276700000
>0<0>0>0000327670000
>0>0<0<0000032767000
>0>0<0>0000003276700
>0>0>0<0000000327670
>0>0>0>0000000032767

Available:
SynFactory 1.00 or higher version.

CTR - Signal controller

This module can change the gain and offset of a control signal. The gain can change the amplitude of the control signal from -200% to 200%. The offset setting will add an additional static level to the signal (DC offset).

Controls:
Gain - Change gain (amplification) of the input signal.
Offset - Add DC offset to the output signal.

Inputs:
In - Signal input.
Mod - External control of gain, input is added to value of Gain control.
Offs - External control of offset, input is added to value of Offset control.

Outputs:
Single output providing the modified control signal.

Technical details:
Output = (In * (Gain + Mod)) / 16384 + Offset + Offs

Available:
SynFactory 0.99 or higher version.

ENV - ADSR Envelope generator

Controls:
A - Sets the attack rate for the envelope generator.
D - Sets the decay rate for the envelope generator.
S - Sets the sustain level for the envelope generator.
R - Sets the release rate for the envelope generator.
Amount - Set the maximum level the envelope will reach.

Inputs:
Mod - Amount control input.
A - Attack rate control input.
D - Decay rate control input.
S - Sustain level control input.
R - Release rate control input.
Gate - When gate is high (>0), Attack/decay stage is started. On gate is low (<0) release stage is entered.

Outputs:
Single output with envelope signal.

Available:
SynFactory 0.99 or higher version.

AHD - Attack/Hold/Decay envelope generator

Small envelope generator which uses a trigger input. It has a hold setting, because normally the sustain time is determined by a gate input. But this envelope generator has only a trigger input.

Controls:
Attack - Set total attack time.
Hold - Set time the envelope will wait after attack phase before starting decay phase.
Decay - Set total decay time.
Amount - Set the maximum level the envelope will reach.

Inputs:
Mod - Amount control input.
A - Attack time control input.
H - Hold time control input.
D - Decay time control input.
Trig - Trigger input, envelope starts on positive trigger. It will retrigger even if A, H or D stage is not yet completed.

Outputs:
Single output with envelope signal.

Available:
SynFactory 1.13 or higher version.

S/H - Sample and Hold

The sample and hold module will take the value of the In input on each low->high transition of Trig and will hold this value until the next. It will generate stepped control signals from continuous signals.

Inputs:
In - Signal input, this signal is sampled on each trig transistion
Trig - Trigger signal.

Outputs:
Out - Stepped signal output

Technical details:
This module can be used for a lot of different purposes. In combination with a RND as source it generates a new random value on each trigger point. Unlike its analog counterpart it's use is not restricted to control signals, it works also on audio signals, generating all sorts of artifacts when both Trig and In are connected to two different audio signal sources, in this mode it functions as a distortion unit.

Available:
SynFactory 0.99 or higher version.

GLI - Glide/Portamento

The output of this module follows the input, but it can be slowed down with the speed setting. It find its use after Sample&Hold gates or sequencers to 'glide' the sound. In combination with a 'splitter' module it can function as a envelope follower. This module is not very usefull for processing audio signals (output doesn't follow the input fast enough).

Controls:
Speed - Sets the follow speed 0 slowest and at 32767 the output will follow input directly.

Inputs:
In - Input signal which is filtered and send to the output.
Spd - Control input for the speed setting.

Outputs:
Single output providing the filtered/followed input signal.

Available:
SynFactory 0.99 or higher version.

TRIG - Delayed gate/trigger/one-shot

This module delays a trigger signal or stretches a gate signal. Both modes can be used at the same time, delaying both the trigger moment and the gate release times.

Controls:
T-On - Sets the delay time between the activation of the gate input and the outputs becoming active (32767).
T-Off - Sets the delay time between the deactivation of the gate input and the gate output becoming inactive (0) and it also sets the length of the oneshot pulse.

Inputs:
T-on - Control input for the on time delay setting.
T-off - Control input for the off time delay setting.
Gate - Gate signal input. Defined as <0 is inactive and >0 is active.

Outputs:
Gate - Gate signal delayed from the input gate. Length of the pulse depends on the length of the input pulse and the settings of the controls.
1shot - The pulse length is independed on the length of the gate input.

Available:
SynFactory 1.00 or higher version.
SynFactory 1.12 or higher version for module with 1shot output.

SEQ - 16 steps sequencer

Controls:
Step 1-16 - Value for each step of the sequencer

Inputs:
Clk - On each clock transition from low to high (<0 to >0) the seqeuncer steps one step further.
Rst - Restart sequencer to the first step when this input is high (>0). It will stay at step 1 as long as the input is high.

Outputs:
Out -
Rst - This output is active when sequencer is on step 1.

Available:
SynFactory 0.99 or higher version.

SEQ - 8 steps sequencer

Controls:
Step 1-8 - Value for each step of the sequencer

Inputs:
Clk - On each clock transition from low to high (<0 to >0) the seqeuncer steps one step further.
Rst - Restart sequencer to the first step when this input is high (>0). It will stay at step 1 as long as the input is high.

Outputs:
Out -
Rst - This output is active when sequencer is on step 1.

Available:
SynFactory 0.99 or higher version.

BinSeq - Binary input 8 steps sequencer

Controls:
Step 1-8 - Value for each step of the sequencer

FLA - Flanger

Strictly speaking a flanger/chorus is nothing more as a variable delayline. This delayline has filters around it, so it's possible to modulate the delayline length without introducing noise. When combining the input and delayed signal, phase differences will generate the flanger/chorus effect. The exact effect depends on modulation speed, modulation amplitude and waveform used (best use triangle or sine waves as modulator). The delayline is very short, use a normal delay module if longer delaytimes are needed (but the length of the normal delayline is more difficult to modulate without artifacts).

Controls:
InpLev - Sets the gain of the input signal. The delayline can clip if the sum of the feedback and input signal is too high.
FdBack - Part of the delayline output can be send back to the input.
Mix - Sets the mixing level between the input signal and delayed signal.

Inputs:
Inp - Audio input signal
Pos - Controls the position of tap in the delayline. This changes the effective length of the delayline. Modulate with a low-frequency triangle or sine wave.
Fbd - Control input for the feedback setting.
Mix - Control input for the mix setting.

Outputs:
mix - This output provides the sum of input signal with the delayed signal (depending on the setting of the mix control).
dly - Provides the output of the delayline without mixed input (this is also the internal signal used as feedback signal).

Technical details:
The flanger is a delayline with a interpolation filter at the output. The lower 4 bits are used to interpolate between the nearest samples in the delayline. This gives a 16 times higher modulation precision as the samplerate normally permits, but it sacrifices the maximum available delayline length for getting these 4 extra bits.

Available:
SynFactory 0.99 or higher version.

DLY - Delay line

Delayline with single input and ouput (single tap). For convience there is buildin support for a feedback signal. Use it as a simple reverb or connect multiple together to build a multi-tab delay effect. Although the length of delayline can be modulated, there is a high chance for clicking noise. Use a Flanger module instead because it has better suppression of transition noise (but also shorter delay times).

Controls:
InpLev - Sets the gain of the input signal. The delayline can clip if the sum of the feedback and input signal is too high.
Length - Sets the length for the delayline (in samples). Maximum length is 32767/44100 = 0.74 seconds.
FdBack - Part of the delayline output can be send back to the input.

Inputs:
Inp - Audio input signal
Len - Control input for the delayline length setting.
Fbd - Control input for the feedback setting.

Outputs:
mix - This output provides the sum of input signal with the delayed signal.
dly - Provides the output of the delayline without mixed input (this is also the internal signal as used feedback signal).

Available:
SynFactory 0.99 or higher version.

SyncDly - Syncable Delay line

Delayline with single input and ouput (single tap). For convience there is buildin support for a feedback signal. The delay length is derived from a clock source. Maximum delay length is little over 1 second, it can take a few seconds before the delay 'locks' to the input clock. Use it as a rithmic delay or connect multiple together to build a multi-tab delay effect.

Controls:
InpLev - Sets the gain of the input signal. The delayline can clip if the sum of the feedback and input signal is too high.
FdBack - Part of the delayline output can be send back to the input.

Inputs:
Inp - Audio input signal
Clk - Input for clock signal, the frequency of the input clock determines delayline length.
Fbd - Control input for the feedback setting.

Outputs:
mix - This output provides the sum of input signal with the delayed signal.
dly - Provides the output of the delayline without mixed input (this is also the internal signal as used feedback signal).

Available:
SynFactory 1.00 or higher version.

BIT - Bit reducer

This module is also known as a quantizer. It reduces the possible values a signal can be. All other values are rounded down to the nearest allowed value. High settings will generate extreme quantization noise, which might be usefull for special sound effects. It can also process control signals to make 'stair case' waveforms. Not unlike a Sample&Hold gate, but without the need for a trigger signal.

Controls:
Bits - Resolution of the quantizing steps. Higher values give bigger steps and more noticable effect.

Inputs:
Inp - Signal input which will be quantized.
Bits - Resolution control

Outputs:
Single output providing the quantized output.

Technical details:
If this module would really do a bit-reducement only 15 different control settings would be available. To make a finer control range, a rounding function is performed. The signal is divided, rounded to the nearest integer and then multiplied again by the same value. The result is the same as a bit-reduce but with much finer control.

Available:
SynFactory 0.99 or higher version.

Clippy - NoiseGate / Clipper / Distortion

This module does multiple sound effects at the same time. Its a weird combination of a limiter, distortion unit and a noise-gate. Unlike normal noise-gates it doens't remove small signals by opening and closing a (virtual) switch, but it subtracts them from the signal. The result is a crossover distortion generating high-frequency sounds at zero crossings. After that comes an amplifier with a hard limiter. When the sound hits the limiter threshold rich overtones are generated (like a pulse wave).

Controls:
Lev - Initial amplitude level. Higher settings will increase the limiter effect. Lower settings will increase the noise-gate effect.
Gate - Sets the minimum level of the signals which are let through. Higher settings (1024+) give huge distortion.
Drive - Boosts the signal to get the amplitude needed to activate the limiter. Works together with the Lev and Gate controls. Because these can lower the amplitude of the signal. Drive can restore of even increase the level of the signal.

Inputs:
Inp - Audio signal input.
lev - External control input for the Lev setting.
gate - External control input for the Gate setting.
drv - External control input for the Drive setting.

Outputs:
Single audio output providing the resulting audio signal after the effects.

Available:
SynFactory 1.00 or higher version.

PAN - Signal controlled panner

Give an audio source a position within the stereo signal.

Controls:
Pan - Manual panning (balance), sets the centre of the sound.
CtrDly - Delays the 'Ctr' input. Fast changes can cause clicks, this can be prevented by slowing down fast transitions. If this control is at 32767 the 'Ctr' input is directly setting the panning position, lower values will filter the signal, at 0 there is no change at all.

Inputs:
In - Audio input.
Ctr - Panning control. -32768 is left, 0 is center and 32767 is right.
Dly - This input is added to the value of the CtrDly control.

Outputs:
Left - Left channel audio output.
Right - Right channel audio output.

Available:
SynFactory 1.10 or higher version.

MIX - 3 channel Mixer

Module to mix 3 input signals to one. Level for each input can be set independently. The level controls are logarithmic. This means like a real mixing desk, two times higher level setting means two times preceived higher volume. This module can also be used to mix control signals, but because of the logarithmic level controls it can be tricky to get the correct amplitude for the resulting sum signal.

Controls:
Lev 1 - Control the mixing level of the In 1 input (logarithmic).
Lev 2 - Control the mixing level of the In 2 input (logarithmic).
Lev 3 - Control the mixing level of the In 3 input (logarithmic).

Inputs:
In 1 - Signal input 1.
In 2 - Signal input 2.
In 3 - Signal input 3.

Outputs:
Single output providing the mixed signal.

Available:
SynFactory 0.99 or higher version.

MIX - 4 channel Mixer

Module to mix 4 input signals to one. Level for each input can be set independently. The level controls are logarithmic. This means like a real mixing desk, two times higher level setting means two times preceived higher volume. This module can also be used to mix control signals, but because of the logarithmic level controls it can be tricky to get the correct amplitude for the resulting sum signal.

Controls:
Lev 1 - Control the mixing level of the In 1 input (logarithmic).
Lev 2 - Control the mixing level of the In 2 input (logarithmic).
Lev 3 - Control the mixing level of the In 3 input (logarithmic).
Lev 4 - Control the mixing level of the In 4 input (logarithmic).

Inputs:
In 1 - Signal input 1.
In 2 - Signal input 2.
In 3 - Signal input 3.
In 4 - Signal input 4.

Outputs:
Single output providing the mixed signal.

Available:
SynFactory 0.99 or higher version.

MIX - 8 channel Mixer

Module to mix 8 input signals to one. Level for each input can be set independently. The level controls are logarithmic. This means like a real mixing desk, two times higher level setting means two times preceived higher volume. This module can also be used to mix control signals, but because of the logarithmic level controls it can be tricky to get the correct amplitude for the resulting sum signal.

Controls:
Lev 1 - Control the mixing level of the In 1 input (logarithmic).
Lev 2 - Control the mixing level of the In 2 input (logarithmic).
Lev 3 - Control the mixing level of the In 3 input (logarithmic).
Lev 4 - Control the mixing level of the In 4 input (logarithmic).
Lev 5 - Control the mixing level of the In 5 input (logarithmic).
Lev 6 - Control the mixing level of the In 6 input (logarithmic).
Lev 7 - Control the mixing level of the In 7 input (logarithmic).
Lev 8 - Control the mixing level of the In 8 input (logarithmic).

Inputs:
In 1 - Signal input 1.
In 2 - Signal input 2.
In 3 - Signal input 3.
In 4 - Signal input 4.
In 5 - Signal input 5.
In 6 - Signal input 6.
In 7 - Signal input 7.
In 8 - Signal input 8.

Outputs:
Single output providing the mixed signal.

Available:
SynFactory 0.99 or higher version.

MXO - Output with mixer control

OUT - Output

This module mixes its inputs together and sends the result directly to the soundcard. The mono (mid) inputs are mixed both to the left and right channel. The signal is reduced to 50% of the original amplitude before send to the soundcard. This allows some headroom is multiple signals are added. There can be multiple OUT modules in the patch, the signals from the various OUT modules are simply added together.

Inputs:
Left (2x) -
Mid (4x) -
Right (2x) -

Available:
SynFactory 0.99 or higher version.

OUT - Output with surround

This module mixes its inputs together and sends the result directly to the soundcard. The mono (mid) inputs are mixed both to the left and right channel. The signal is reduced to 50% of the original amplitude before send to the soundcard. This allows some headroom is multiple signals are added. There can be multiple OUT modules in the patch, the signals from the various OUT modules are simply added together.

Inputs:
Left (2x) -
Mid (4x) -
Right (2x) -
Surrnd (2x) -

Available:
SynFactory 1.10 or higher version.

ECF - Envelope Controlled 12 dB OB-type Filter

This module is a combination of 3 other modules. It contains a 3 channel audio mixer, an envelope generator and a Oberheim type filter.

Controls:
Lev 1 - Control the mixing level of the In 1 input (linear response).
Lev 2 - Control the mixing level of the In 2 input (linear response).
Lev 3 - Control the mixing level of the In 3 input (linear response).
Cutoff - Sets cutoff frequency for the filter. All frequencies above the cutoff frequency will be filtered.
A - Sets the attack rate for the envelope generator.
D - Sets the decay rate for the envelope generator.
S - Sets the sustain level for the envelope generator.
R - Sets the release rate for the envelope generator.
Reso - Sets the filter resonance amount. It amplifies frequencies around the cutoff point. Generates a distinct peak in the audio spectrum. At high settings the filter will self oscillate.

Inputs:
In1 - Audio input 1.
In2 - Audio input 2.
In3 - Audio input 3.
Mod - Amount control input.
Frq (2x)- Cutoff control input. Same scale as Cutoff control.
Q - External control of resonance, input is combined with Reso control.
Gate - When gate is high (>0), Attack/decay stage is started. On gate is low (<0) release stage is entered.

Outputs:
LP - Lowpass output, the audio is filtered with a 12 db/oct slope.
BP - Bandpass output.
HP - Highpass output.

Available:
SynFactory 1.00 or higher version.

ECA - Envelope Controlled Amplifier

This module is a combination of 3 other modules. It contains a three channel mixer, an envelope generator and an amplifier with variable gain. In most analog synthesizer a module like this one is used as last stage before it goes to the output mixer.

Controls:
Lev 1 - Control the mixing level of the In 1 input (linear response).
Lev 2 - Control the mixing level of the In 2 input (linear response).
Lev 3 - Control the mixing level of the In 3 input (linear response).
Volume - The mixed signal of the 3 inputs are scaled by the output curve of the envelope. This Knob sets the maximum amplification level for the envelope.
A - Sets the attack rate for the envelope generator.
D - Sets the decay rate for the envelope generator.
S - Sets the sustain level for the envelope generator.
R - Sets the release rate for the envelope generator.

Inputs:
In1 - Audio input 1.
In2 - Audio input 2.
In3 - Audio input 3.
Vol - External control for the Volume setting.
A - Attack rate control input.
D - Decay rate control input.
R - Release rate control input.
Gate - When gate is high (>0), Attack/decay stage is started. On gate is low (<0) release stage is entered.

Outputs:
Single output providing the mixed and enveloped signal.

Available:
SynFactory 1.00 or higher version.

SCRIPT - Script controlled note player

This module is a note sequencer with a buildin scripting engine. It can perform multiple functions depending on the script. Main output is a note with gate signal, but six additional control outputs are available. The outputs can be used for example to set note volume (velocity) or change the filter cutoff and resonance.

Double click on the script module with the left mousebutton to open the script editor. After required changes are made, close the editor window with the close icon in the right corner of the window. If the patch is running, the scripting module will react as if the Rst input is activated (the script will start from the beginning). Take note: Errors in the script will be skipped without any visual feedback!

Inputs:
-Clk - Clock input. With the Pcount command the script can be paused for one or more clock ticks (trigger on falling edge).
Rst - If >0 reset the module, script will restart from beginning (Note: outputs are not resetted).
Inp1 - Inp6 - 6 extra inputs which can be used to control the flow of the running script.

Outputs:
Freq - Frequency output (use commands 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#' or 'B' to control this output).
Gate - Gate signal (use commands [ and ] to control this output).
u-z - Six extra control outputs (use commands u-z to control these outputs). Outputs can function as control signal or extra note outputs.

Scripting language:
{ comment } - Place comment in the script, this will be skipped by the scripting engine. Use it to make the scripts more readable.
C4 - Play note C from 4th octave. Last octave is remembered so if multiple notes from the same octave are played only the first one needs the octave number.
C - Play note C from current octave.
C# - Play note C-sharp from current octave
D D# E F F# G G# A A# B - Play one of the other notes from the octave.
[ - Turn gate signal on (32767)
] - Turn gate signal off (0)
:label - Define subroutine label. The : command will only set a label, executing the command will not skip the subroutine behind it. Therefore place subroutines at the end of the script, so the normal script flow is not disturbed.
; - Return from subroutine, back to the point just behind the Mlabel command. If there are no return points, it will behave as the R command.
Jlabel - Jump to label, its like a 'goto' command in basic. The ; command can not return after a jump, use Mlabel if the return point is needed.
Mlabel - Call subroutine with specified label.
Pcount - Wait for count number of clock cycles. P0 doesn't wait on clock but waits only one sample, this is usefull for generating trigger signals. The sequence W32767 P0 W0 P0 will generate a short pulse on the w output.
R - Reset module, script will restart from beginning (Note: outputs are not resetted, use the sequence U0 V0 W0 X0 Y0 Z0 ] P0 to reset all outputs).
Uvalue - Set u output to specified value.
Unote - Set u output to specified note (for example UC#2).
Vvalue - Set v output to specified value.
Vnote - Set v output to specified note (for example VC#2).
Wvalue - Set w output to specified value.
Wnote - Set w output to specified note (for example WC#2).
Xvalue - Set x output to specified value.
Xnote - Set x output to specified note (for example XC#2).
Yvalue - Set y output to specified value.
Ynote - Set y output to specified note (for example YC#2).
Zvalue - Set z output to specified value.
Znote - Set z output to specified note (for example ZC#2).

Example script:
{ This script will loop fast through multiple notes, use W output to trigger base drum sound }
C5 W1 P0 W0 P2 D# P2 E P2 D P2
C5 W1 P0 W0 P2 D# P2 E P2 D P2
C5 P2 D# P2 E P2 D P2
C5 P2 D# P2 E P2 D P2
R

Available:
SynFactory 1.13 or higher version.

Joystick - Joystick controlled module

If an (analog) joystick is connected to the machine, this module can be used to extract position information from the joystick to control various parameters. Joysticks with upto 6 axis and 4 buttons are supported.

Outputs:
X - Returns position on the horizontal axis (range -32767 to 32767).
Y - Returns position on the vertical axis (range -32767 to 32767).
Z - Returns position on the third axis, this is often the throttle control (range -32767 to 32767).
R - Returns position on the fourth axis (range -32767 to 32767).
U - Returns position on the fifth axis (range -32767 to 32767).
V - Returns position on the sixth axis (range -32767 to 32767).
B1 - Returns state of button 1 (32767 if held down, 0 if not pressed).
B2 - Returns state of button 2 (32767 if held down, 0 if not pressed).
B3 - Returns state of button 3 (32767 if held down, 0 if not pressed).
B4 - Returns state of button 4 (32767 if held down, 0 if not pressed).

Available:
SynFactory 1.20 or higher version.

Scope - 4 channel scope

This is a seperate scope, use it to debug the patch or visualize one or more parameters. Double click on the module to open the scope Window. It can display upto 4 channels at the same time. The 3 numbers represent the running average and the lowest and highest peak value seen in the current timeslot.

Inputs:
Ch 1 - First signal input. Data will be shown in left-top corner of scope window.
Ch 2 - Second signal input. Data will be shown in right-top corner of scope window.
Ch 3 - Third signal input. Data will be shown in left-bottom corner of scope window.
Ch 4 - Fourth signal input. Data will be shown in right-bottom corner of scope window.

Available:
SynFactory 1.20 or higher version.