The project was started in March 2002 by Nasca Octavian Paul. He began to write ZynAddSubFX in order to create a synthesizer which could produce beautiful sounds, while being freely available to anybody who needs it.
For sound generation it has three hybrid synth engines that combine additive, subtractive, Fourier and other synthesis methods. No external samples are used to produce the sound; everything is done by synthesis. The synthesizer has effects like reverberation, echo, chorus, distortion, equalization and others, and supports microtonal tunings.
The author of ZynAddSubFX is a Romanian programmer, Nasca Octavian Paul. The project was started in March 2002 and the first public release was version 1.0.0 on September 25, 2002.
A limited Mac OS X version was released by Ben Powers.
A VST port implementation is now available, being maintained by jackoo [Vlad Ionescu] on the KVR Audio Forums.[ The VST version is still in beta development, but has been tested with hosts such as VSTHost, EnergyXT 1.41, Cubase and Reaper. The latest version features a 'MidiLearn' mechanism (which enables users to assign CC messages to various controls), and multiple outputs.
ZynAddSubFX combines several different methods of audio synthesis in order to create sounds: additive synthesis by the ADSynth engine, subtractive synthesis by the SUBSynth engine, and an original algorithm used to generate wavetables in the PADSynth engine.
Polyphonic synth (allows playing more than one note at once)
Mutlitimbral synth (allows playing more than one instrument at once)
Microtonal capabilities with any scale, up to 128 notes per octave, and key mapping
Three synthesizer engines:
"ADsynth" or "ADnote" is a complex engine which makes sounds by adding a number of voices. Each one has filters, envelopes, LFOs, morphing, modulation (Ring Modulation, Phase Modulation... the modulators can have any shape), resonance, etc. Each voice includes a very powerful waveform generator with up to 128 sine/non-sine harmonics. You can use Fourier synthesis or if you don't like it you can wave-shaping/filtering of functions. This engine includes anti-aliasing.
"SUBsynth" or "SUBnote" is a simple engine which makes sounds through subtraction of harmonics from white noise
"PADsynth" or "PADnote" is engine that makes very beautiful pads and other instruments. (these instruments can be exported for use with other programs too)
Legato, Poly, and Mono modes
Instruments can be organized in kits, which allows you to make drum kits or layered(mixed) instruments; this makes possible to use more than one instrument for a single part. It is possible to choose what items from the kit should be processed by the Part's effects.
Reverb, Echo, Chorus/Flange, Phaser, AlienWah (it's a kind of vocal morpher), Distortion(Wave-shaping), EQ, DynamicFilter
The effects can behave as System Effects or as Insertion Effects; this allows to use many effects at the same time. You can put any insertion effect on any part(or more insertion effects to same parts, if you like so) or you can put the insertion effect to Master output (very useful if you use the EQ effect). Also, you can have instrument's effect (which save with the instrument).
Filters up to 60dB/octave (or more..); filters can be analogic (LPF,HPF, BPF,etc.), formant(advanced formant filters) and state variable (SVF)
Envelopes can have ADSR (or ASR, etc..) modes or can be free modes (with any shape)
Many settings have a "randomness" option, which you can make instruments that every time produces a subtle different sound; this produces a very pleasant effect (like analogue synths or natural instruments that can't produces exactly same sound twice). Because of this, even if it is digital synthesis, it sounds "warm". Listen the ogg vorbis demos from this page to hear this effect.
The specifications can be easily changed, so (for example) if you want to change the number of voices or parts to a higher value or to allow a higher number of effects at the same time, there is necessary to change only a single value from the source file (globals.h) and to recompile the program
Intuitive and easy to use User Interface with Clipboard and many objects has user presets
Midi support (supports many controllers) and (if you want) JACK support
A built-in Virtual Keyboard which let you to use it even if you don't have a real midi keyboard
The graphical user interface can be completely disabled if the user need so
It is a free program, licensed under version 2 of the GNU General Public License
DSSI audio output
Over 300 high quality instruments included
Many other features... It is is impossible to describe all this program's features in just a page
Version 2.4.1 Release (Jun 27 2010)
merging APhaser into Phaser
Your distro should have a ZynAddSubFX package (hereafter referred to as "Zyn") and the details of starting it will vary. If you have never run it before, it should look like this the first time (except hopefully with better fonts; sorry about that):
For our purposes here, we will use the beginner mode, so click that button, and the interface should look something like this:
Have a look with QJackCtl's Connections button, and you should see that Zyn has hooked itself up automagically. Start Rosegarden and click the icon, and you should see that Rosegarden has found Zyn, and created a device for it:
Next, we want to change "MIDI output system device" or whatever similarly useless name you have in front of you on your own screen into a memorable name. How about "ZynAddSubFX"? It doesn't really matter which entry on the left you match up with ZynAddSubFX on the right, and you can change any of these entries to satisfy this purpose. Double click on one of the labels, and type the new name, then scroll through the combo box on the right to pick Zyn out of the list if necessary (and I did have some annoying quirky bug problems trying to do this with my SVN example, but I couldn't actually repeat and therefore couldn't report any of the bugs; so if this happens to you, keep tinkering, and you'll get there):
Now use the track parameters box in Rosegarden to assign track 1 to the new ZynAddSubFX device, instrument #1 (or right click on the track label, and use the assignment menus; whichever you find most convenient.)
By default, Rosegarden instruments correspond with channels of the same number, so instrument #1 defaults to channel 1. This will be fine for our purposes. Now let's get Zyn to play something more interesting. I won't even try to tell you how to twiddle the real synth controls. Instead, we'll stick with its presets. The "Click here to load preset" button on my screen is totally illegible, but it's the blue bit here:
Which brings up this blank looking dialog:
Now use the combo box to pick the Bass bank,
and then pick something. I picked "Analogue Bass."
Now we can record or enter something in Rosegarden to play with this bass patch, such as this bit of classic bass riff:
Now we want to enable another channel in Zyn, so find the Part controls, scroll to part 2, and check the Enabled box, then load another patch from the preset bank. I used "Trash Guitar 1:"
Repeat the assignment process for track 2, assigning it to ZynAddSubFx #2, and it might be useful at this point to label these tracks as well:
Throw something on this track too:
And now you have a taste of Zyn's polyphonic capabilities. I think this is very cool, and I have done entire compositions with Zyn as my only synth. Just for fun, let's add some drums, using Zyn's only preset synth drum kit on channel 3:
Finally, we want to share our little masterpiece with the world. Since Zyn doesn't know anything about program changes (or other controllers, as far as I can tell) that means some extra effort is involved in saving a copy of its state for another day. You want to go to Zyn's File -> Save All Parameters to create an .xmz file, then if you want to bundle it with your Rosegarden composition, you can create a Rosegarden Project Package, and include this .xmz file as an extra file.
First, create an .xmz file. Next, go to Rosegarden's File -> Export Rosegarden Project File and save it (for example) as a project of the same name as the .xmz file
After a short bit of processing, the exporter will ask if you want to include any extra files:
You should say yes, and then pick your .xmz file for inclusion:
Audio demos (OGGvorbis):
All these demos are recorded directly from the ZynAddSubFX without audio processing with another program (well, except cutting/ OGG Vorbis compressing).
Source code some demos(7k)