JS80P

A MIDI driven, performance oriented, versatile, free and open source synthesizer VST plugin for Linux and Windows
JS80P screenshot
JS80P has two oscillators (and a sub-harmonic sine), and a lot of filters, effects, envelopes, LFOs, and powerful macros to shape your sound with subtractive, additive, FM, PM, and AM synthesis, complete with polyphonic, monophonic, and split keyboard modes, MTS-ESP tuning support, and analog imperfection emulation.

Download (v2.4.4)

Which distribution should I download?

For newer CPUs with AVX

Windows and Linux, 64 bit

Windows

Linux

For older CPUs with SSE2

Windows and Linux, 64 bit and 32 bit

Windows

Linux

Source Code

What's New in v2.4.4

  • Reduced RAM usage.

  • Bugfix: hosts that use variable length rendering blocks could cause JS80P in some circumstance to leave garbage in the buffers of delay based effects when they decayed into silence, which (depending on the settings of the patch) could produce audible glitches. Now the delay buffers are properly cleaered when both their input and their feedback line decays into silence.

  • Bugfix: despite the efforts in v1.5.1, in some circumstances, short delay times (lower than 3-5 milliseconds) could still make the feedback lines noisy in delay based effects in hosts which use variable rendering block size (e.g. FL Studio). The rendering logic has been adjusted to prevent delay feedback lines from falling behind and becoming discontinuous when the host requests a large rendering batch after a sequence of short ones.

What's New in v2.4.2

  • The MTS-ESP mode (continuous or note-on) is now shown at the beginning of the tuning selector for better readability.

  • Bugfix: Envelope 3 of the Dystopian Cathedral preset was accidentally configured to be dynamic.

  • Bugfix: inaccuracy has been turned off for the unused oscillator in the Gloomy Brass preset.

  • Bugfix: the release time of Envelope 4 in the Gloomy Brass Raindrops preset has been increased so that when a Note Off event occurs right after the "raindrop" sound kicks in, its decay is more natural.

  • Bugfix: MTS-ESP related information has been corrected in README.txt.

What's New in v2.4.1

  • Bugfix: fixed a potential crash or memory corruption when MIDI channel number is greater than 8.

  • Bugfix: fixed several typos in the documentation.

What's New in v2.4.0

  • Support for microtonal and any other tunings via MTS-ESP, one-click switch between 440 Hz and 432 Hz equal temperament tunings.

  • Analog inaccuracy and instability emulation for oscillator pitch, and inaccuracy settings for filter frequency and Q factor, and envelope time and level.

  • New presets: Gloomy Brass, Gloomy Brass Raindrops, Sawyer.

  • Bugfix: the typo in the label of the dynamic envelope toggle has been corrected.

What's New in v2.3.2

  • New preset: Dystopian Cathedral.

  • New parameter for the Modulator: sub-harmonic sine wave amplitude.

  • New parameter for the Carrier: Distortion.

  • Bugfix: fixed a crash when side chaining was turned on for the Reverb or Echo effects, and the Chorus effect got overloaded by too much feedback

  • Bugfix: reduced unwanted noises in the Acid Lead presets.

What's New in v2.2.0

  • New parameter for the Chorus effect: switch between 15 different configurations, with up to 7 voices.

  • New parameter for the Reverb effect: switch between 10 different tunings.

What's New in v2.1.0

  • Echo and Reverb now support side-chain compression: clean up the sound by reducing the volume of the wet signal while the dry signal is loud, and gradually bring up the wet signal once the dry signal goes below the threshold.

  • Multiple volume controls have been added to the effect chain. The one before the overdrive and distortion goes up to 200%, allowing the effects to be pushed really hard.

  • Signal peak levels at various points of the signal chain can now be used for controlling parameters and macros.

What's New in v2.0.3

  • Implemented monophonic mode for smooth legato playing

  • New preset: Monophonic Saw

  • Flexible Controllers have been renamed to Macros.

  • Reduced RAM and CPU usage, especially when the plugin is idle.

  • Documented how Envelopes work in the synth with regards to polyphony.

  • Reduced patch size and improved patch import and export performance by omitting redundant information from patches.

  • Improved responsivity of the FST plugin to host events (by requesting the "effIdle" message from the host) when the plugin's own window is closed or hidden.

  • It is now possible to assign Macros to discrete parameters like Filter Types and Waveforms.

  • Bugfix: fixed a bug with program name saving and loading in the FST plugin.

  • Bugfix: fixed possible crashes in the FST plugin when using automation.

  • Bugfix: fixed a problem in filter state handling which could lead to occasional signal discontinuities and glitches.

  • Bugfix: fixed a potential crash around GUI and audio engine communication.

  • Bugfix: the FST plugin sometimes switched to the blank preset while loading banks, saved projects, or when doing a preset change or MIDI program change.

Demos


Demo 3: JS80P v1.7.3 in Reaper 6.79
Download: MP3 | FLAC | MIDI | patch

Demo 2: JS80P v1.0 in Reaper 4.402
Download: MP3 | FLAC | MIDI | patch

Demo 1: JS80P v1.0 in Reaper 4.402
Download: MP3 | FLAC | MIDI | patch

Installation & Usage

System Requirements

  • Operating System: Windows 7 or newer, or Linux (e.g. Ubuntu 22.04 or newer)
  • CPU: SSE2 support, 32 bit (i686) or 64 bit (x86-64)
    • separate packages are available for AVX capable 64 bit processors
  • RAM: 200-300 MB per instance, depending on buffer sizes, sample rate, etc.

Note: a RISC-V 64 port is available as a separate project by @aimixsaka.

Dependencies on Linux

On Linux, the libxcb, libxcb-render, and libcairo libraries, and either the kdialog or the zenity application are required to run JS80P. To install them on Debian based distributions (e.g. Ubuntu), you can use the following command:

sudo apt-get install libxcb1 libxcb-render0 libcairo2 zenity kdialog

Note that if you want to run the 32 bit version of JS80P on a 64 bit system, then you will have to install the 32 bit version of the libraries, for example:

sudo apt-get install libxcb1:i386 libxcb-render0:i386 libcairo2:i386 zenity kdialog

Before Installing

If your plugin host application does not support VST 3, but does support VST 2.4, then you have to download and install the FST version of JS80P. Otherwise, you should go with the VST 3 bundle on both Windows and Linux.

If your CPU supports AVX instructions and you use a 64 bit plugin host application, then you should download a JS80P package that is optimized for AVX compatible processors. If you have an older computer, or if you experience crashes, then you should go with one of the SSE2 compatible JS80P packages.

If your plugin host application fails to recognize JS80P from the VST 3 bundle, then you have to download and install the VST 3 Single File version that matches the CPU architecture for which your plugin host application was built.

(For example, some 32 bit (i686) versions of Reaper are known to be unable to recognize VST 3 bundles when running on a 64 bit Linux system, so you would have to download the 32 bit VST 3 Single File JS80P package.)

Installation

  • VST 3 Bundle on Windows

    1. Download JS80P.
    2. Extract the ZIP archive.
    3. Copy the entire js80p.vst3 folder to your VST 3 folder which is usually C:\Users\YourUserName\AppData\Local\Programs\Common\VST3.
  • VST 3 Bundle on Linux

    1. Download JS80P.
    2. Extract the ZIP archive.
    3. Copy the entire js80p.vst3 directory to your VST 3 directory which is usually ~/.vst3.
  • VST 3 Single File on Windows

    1. Download JS80P.
    2. Extract the ZIP archive.
    3. Copy the js80p.vst3 file to your VST 3 folder which is usually C:\Users\YourUserName\AppData\Local\Programs\Common\VST3.
  • VST 3 Single File on Linux

    1. Download JS80P.
    2. Extract the ZIP archive.
    3. Copy the js80p.vst3 file to your VST 3 directory which is usually ~/.vst3.
  • FST (VST 2.4) on Windows

    1. Download JS80P.
    2. Extract the ZIP archive.
    3. Copy the js80p.dll file to the folder where you keep your VST 2.4 plugins.

    Note: VST 2.4 plugins are usually put in the C:\Program Files\VstPlugins folder.

  • FST (VST 2.4) on Linux

    1. Download JS80P.
    2. Extract the ZIP archive.
    3. Copy the js80p.so file to the directory where you keep your VST 2.4 plugins.

    Note: VST 2.4 plugins are usually put in the ~/.vst directory.

Usage

  • Move the cursor over a knob, and use the mouse wheel for adjusting its value, or start dragging it.

  • Hold down the Control key while adjusting a knob for fine grained adjustments.

  • Double click on a knob to reset it to its default value.

  • Click on the area below a knob to assign a controller to it.

  • It is recommended to use a small buffer size for lower latency, for example, 3-6 milliseconds, or 128 or 256 samples at 44.1 kHz sample rate.

Tuning

Each oscillator can be tuned separately by clicking on the tuning selector in the title bar of the oscillator, allowing maximum flexibility; for example, you can have continuously updated tuning for one oscillator, and have the other update its frequency tables only for NOTE ON events.

The following options are available:

  • C MTS-ESP: continuously query information from an MTS-ESP tuning provider (usually another plugin) when at least one note is playing, and update the frequency of all sounding notes that haven't reached the Release portion of their volume envelopes yet, on the fly. The tuning selector displays "on" when a tuning provider is available, and "off" when no tuning provider is found. In the latter case, notes will fall back to 440 Hz 12 tone equal temperament.

  • N MTS-ESP: query tuning information from an MTS-ESP tuning provider (usually another plugin) for evey NOTE ON MIDI event. Already sounding notes are kept unchanged. The tuning selector displays "on" when a tuning provider is available, and "off" when no tuning provider is found. In the latter case, new notes will fall back to 440 Hz 12 tone equal temperament.

  • 440 12TET: the usual 12 tone equal temperament tuning, where the A4 MIDI note is 440 Hz.

  • 432 12TET: 12 tone equal temperament with A4 set to 432 Hz.

Setting up MTS-ESP on Windows

Download and install either the free MTS-ESP Mini plugin or the paid MTS-ESP Suite plugin by ODDSound. Follow the instuctions on the website, where you can also find the User Guide documentation for each product.

Note: it is possible to use a different tuning provider without installing any of the above plugins, but you may have to manually download the LIBMTS.dll library from the ODDSound/MTS-ESP GitHub repository, and put it in a folder where Windows can find it:

  • On 64 bit Windows:

    • put the 64 bit DLL into the Program Files\Common Files\MTS-ESP folder,

    • put the 32 bit DLL into the Program Files (x86)\Common Files\MTS-ESP folder.

  • On 32 bit Windows, put the 32 bit version of LIBMTS.dll into the Program Files\Common Files\MTS-ESP folder.

Setting up MTS-ESP on Linux

As of November, 2023, there is no official distribution of the MTS-ESP tuning provider plugins by ODDSound for Linux, however, there are plugins which can act as a tuning provider, for example, Surge XT.

To use MTS-ESP, you may have to download the libMTS.so library from the ODDSound/MTS-ESP GitHub repository, and put it in the /usr/local/lib directory, if it is not already installed on your system. As of November, 2023, libMTS.so is only available for x86_64 Linux systems.

Source, Bugs, Development

The source code is available at https://github.com/attilammagyar/js80p, under the terms of the GNU General Public License Version 3.

If you find bugs, please report them at https://github.com/attilammagyar/js80p/issues.

Presets

JS80P has a few built-in presets, and in case you don't like your DAW's preset browser, you can load and save them as ordinary files. For each plugin type, you can find these presets in the presets folder in the ZIP archive, and you can load them into JS80P by clicking on the Import Patch icon near the top left corner of the main screen of the plugin.

Blank

The default, empty patch, a blank canvas.

Bright Organ

A bright, clean, Hammond-like organ sound. Aftertouch and mod wheel increase the vibrato. The softer you play, the slower the attack, the harder you play, the harder the attack.

Chariots-Aftertouch

A Vangelis-inspired split keyboard patch. Notes below C3 are modulated with and inverse sawtooth LFO, notes above C3 get some wavefolding treatment if you use aftertouch. The mod wheel controls the vibrato of notes above C3, and the pitch wheel also affects only these notes.

Chariots

A Vangelis-inspired split keyboard patch. Notes below C3 are modulated with and inverse sawtooth LFO, notes above C3 get some wavefolding treatment, depending on the velocity. The harder you play, the longer it takes for the wavefolder to kick in. The mod wheel controls the vibrato of notes above C3, and the pitch wheel also affects only these notes.

Demo 1

The patch from the first demo video of JS80P. The mod wheel makes the sound brighter, the volume knob (CC 7) adjusts the inverse sawtooth LFO which controls the filter before the wavefolder.

Demo 2

The patch from the second demo video of JS80P. This split keyboard patch has slow tremolo bass notes below Gb3, with extremely long release (just press a key, and you're good for about 2 measures with your left hand being free, even without a sustain pedal), and plucky lead notes, with the mod wheel and the volume knob (CC 7) controlling the timbre. (However, it is not recommended with this patch to adjust the mod wheel while a right hand note is playing.)

Kalimba

A simple kalimba sound with percussive attack and short decay. The sustain pedal adds more reverb and echo, and lengthens note decay.

Rock Organ

A little darker, overdriven Hammond-like organ sound. Aftertouch and mod wheel increase the vibrato. The softer you play, the slower the attack, the harder you play, the harder the attack.

Sandstorm

A dirty, harsh, detuned FM lead sound. Mod wheel and aftertouch make it even dirtier and harsher.

Stereo Saw

A little bit metallic sounding sawtooth wave. Note velocity slightly affects the timbre, mod wheel and aftertouch add wavefolding. The volume knob adjusts an LFO which controls filter resonance.

Acid Lead 1

Sawtooth wave based acid lead sound. Aftertouch and mod wheel increase the vibrato, the sustain pedal lengthens the decay.

Acid Lead 2

Square wave based acid lead sound. Aftertouch and mod wheel increase the vibrato, the sustain pedal lengthens the decay.

Acid Lead 3

Another sawtooth wave based acid lead sound. Aftertouch and mod wheel increase the vibrato, the sustain pedal lengthens the decay.

Bells 1

A bright bell sound. Aftertouch and mod wheel increase the vibrato, the sustain pedal lengthens the decay.

Bells 2

A slightly darker bell sound. Aftertouch and mod wheel increase the vibrato, the sustain pedal lengthens the decay.

Flute

A synth flute sound with a couple of tricks: the pitch of the notes decreases slightly when they end, and the mod wheel adds a little embellishment to the beginning of each note. Aftertouch adds more emphasis to the note.

FM Womp 1

A clean FM sound where the modulator and the carrier use different envelopes, so the notes start with a slight "wah" effect. Aftertouch and mod wheel increase the vibrato. Aftertouch also adds more modulation.

FM Womp 2

A slightly distorted FM sound where the modulator and the carrier use different envelopes, so the notes start with a slight "wah" effect. Aftertouch and mod wheel increase the vibrato. Aftertouch also adds more modulation, making the sound brighter and more distorted.

FM Womp 3

A more distorted FM sound where the modulator and the carrier use different envelopes, so the notes start with a slight "wah" effect. Aftertouch and mod wheel increase the vibrato. Aftertouch also adds more modulation, making the sound brighter and more distorted.

Tech Noir Lead 1

A brass sound for futuristic sci-fi dystopias with a slower filter sweep at the beginning of notes, depending on note velocity. Mod wheel adds vibrato, aftertouch adds emphasis and brightness.

Tech Noir Lead 2

A brass sound for futuristic sci-fi dystopias with a harsher filter sweep at the beginning of notes, depending on note velocity. Mod wheel adds vibrato, aftertouch adds emphasis and brightness.

Tech Noir Lead 3

A darker brass sound for futuristic sci-fi dystopias with a filter sweep at the beginning of notes, depending on note velocity. Mod wheel adds vibrato, aftertouch adds emphasis and brightness.

Derezzed

This Daft Punk inspired patch is built around sawtooth waves with lots of distortions. Mod wheel makes upcoming notes brighter (without affecting the currently sounding ones), and it increases the distortion. Aftertouch adds vibrato.

Ambient Pad 1

Slowly evolving pad sound with sci-fi vibe. The mod wheel destabilizes the tuning, the aftertouch increases that effect, and adds slight distortions.

Ambient Pad 2

Slowly evolving pad sound with a dark sci-fi vibe. The mod wheel destabilizes the tuning, the aftertouch increases that effect, and adds slight distortions.

Ambient Pad 3

Slowly evolving pad sound with a dark sci-fi vibe. The mod wheel destabilizes the tuning, the aftertouch increases that effect, and adds ghostly, distant screams.

Saw Piano

A sawtooth wave based sound where high notes decay quickly, lower notes decay slowly, but decay time is also affected by note velocity. The harder you play, the brighter and richer the timbre, and the harder the note attack. Mod wheel controls the vibrato, and aftertouch controls filtering. The sustain pedal lengthens note decay.

Saw Piano Reversed

A sawtooth wave based sound which sounds like as if you were playing a recording backwards. The time it takes for notes to un-decay depends on note pitch and velocity. The harder you play, the brighter and richer the sound gets. Mod wheel controls the vibrato, aftertouch adjusts the filtering.

Nightmare Lead

Starts out as a nice, filtered sawtooth wave, but as you begin to turn the mod wheel and add some aftertouch, it becomes more and more menacing and distorted, until it finally descends into madness.

Tremolo Lead

Thick lead sound. Aftertouch adds vibrato and harmonics, mod wheel opens up the filter and adds a tremolo effect. Filtering also responds to note velocity.

Monophonic Saw

A sawtooth wave based monophonic, sustained sound with smooth legato glides. The harder you play, the brighter and richer the timbre, and the harder the note attack. Mod wheel controls the vibrato, and aftertouch controls the filtering and the wavefolder. The sustain pedal lengthens note decay.

Dystopian Cathedral

Play softly and this futuristic organ-like patch will sound smooth as butter, but when you start playing with more force, the sound will become angry, fat, and in-your-face. The mod wheel increases the level of madness.

Gloomy Brass

Turn the mod wheel down for a soft, warm, and fat sound, turn it up for brassy swells, distortion, and reverb. Aftertouch adds some harshness and vibrato.

Gloomy Brass Raindrops

A version of Gloomy Brass where each note is followed by a raindrop after a random amount of time.

Sawyer

Recreation of the iconic bass and lead sound from Tom Sawyer by Rush. Notes below middle C will do the well-known resonance sweep and then turn into a dark growl (which you can spice up with the mod wheel and some aftertouch), and notes above middle C will be bright, but will lose much of their brightness while doing a huge vibrato when you turn up the mod wheel or apply aftertouch. (Note that this is not a split-keyboard patch, because both oscillators are required to make this sound good in stereo - instead, the effect is achieved through trickery with the Note controller and the Distortion knob of Macro 12 and 13.)

About

Signal Chain (Simplified)

Signal Chain

Features

  • 64 notes polyphony.
  • Last-note priority monophonic mode.
    • Legato playing will either retrigger or smoothly glide to the next note, depending on the portamento length setting.
  • 2 oscillators with 10 waveforms:
    • sine,
    • sawtooth,
    • soft sawtooth,
    • inverse sawtooth,
    • soft inverse sawtooth,
    • triangle,
    • soft triangle,
    • square,
    • soft square,
    • custom.
  • 2 filters for each oscillator, 7 filter types:
    • low-pass,
    • high-pass,
    • band-pass,
    • notch,
    • bell (peaking),
    • low-shelf,
    • high-shelf.
  • Sub-harmonic sine wave for oscillator 1, distortion for oscillator 2.
  • Adjustable oscillator pitch inaccuracy and instability, for analog-like liveliness and warmth.
    • Set the same inaccuracy or instability level for the two oscillators to synchronize their imperfections within a single polyphonic voice, so that the effect will only occur between multiple voices, but not between the oscillators within a single voice.
  • Microtuning support via the MTS-ESP tuning protocol by ODDSound.
  • Portamento.
  • Wavefolder.
  • Split keyboard.
  • Amplitude modulation.
  • Frequency modulation.
  • Phase modulation.
  • Built-in effects:
    • overdrive,
    • distortion,
    • 2 more filters,
    • chorus,
    • stereo echo (with side-chaining),
    • stereo reverb (with side-chaining),
    • volume controls at various points of the signal chain.
  • 6 envelopes.
  • 8 low-frequency oscillators (LFO).
  • Filter and envelope imperfection settings for analog-like feel.
  • MIDI controllers and macros.
  • Channel pressure (aftertouch).
  • MIDI learn.
  • Logarithmic or linear scale filter frequencies.
  • Tempo synchronization for LFOs and effects.
  • Use the peak level at various points of the signal chain to control parameters:
    • oscillator 1 output,
    • oscillator 2 output,
    • volume control 1 input,
    • volume control 2 input,
    • volume control 3 input.

Trademark Information

JS80P is VST compatible - VST® is a trademark of Steinberg Media Technologies GmbH, registered in Europe and other countries.

Frequently Asked Questions

Which distribution should I download?

If your plugin host application does not support VST 3, but does support VST 2.4, then you have to download and install the FST version of JS80P. Otherwise, you should go with the VST 3 bundle on both Windows and Linux.

If your CPU supports AVX instructions and you use a 64 bit plugin host application, then you should download a JS80P package that is optimized for AVX compatible processors. If you have an older computer, or if you experience crashes, then you should go with one of the SSE2 compatible JS80P packages.

If your plugin host application fails to recognize JS80P from the VST 3 bundle, then you have to download and install the VST 3 Single File version that matches the CPU architecture for which your plugin host application was built.

(For example, some 32 bit (i686) versions of Reaper are known to be unable to recognize VST 3 bundles when running on a 64 bit Linux system, so you would have to download the 32 bit VST 3 Single File JS80P package.)

The 32 bit versions are usually only needed by those who deliberately use a 32 bit plugin host application, e.g. because they want to keep using some really old plugins which are not available for 64 bit systems.

If you are in doubt, then try the VST 3 bundle, and if your plugin host application doesn't recognize it, then try the 64 bit VST 3 version, then the 64 bit FST version, then the 32 bit VST 3 version, and so on.

Note that all versions use the same high-precision sound synthesis engine internally, so the CPU architecture does not affect the sound quality.

Mac version?

Sorry, it's not likely to happen anytime soon, unless someone is willing to create and maintain a Mac fork of JS80P. For me to do it, it would require quite a large investment, both in terms of effort and financially. If MacOS would be available (at a reasonable price) for installing it in a virtual machine that could be used for testing, I'd consider that. But as long as it cannot be obtained (legally) without also buying a Mac, and I'm happy with my current computer, I'm not going to invest in a new one.

Parameters, Envelopes, and polyphony: how do they work?

By default, knobs and toggles act globally. This means that if you adjust a knob with your mouse, or if you assign a MIDI value (controller, note velocity, etc.), a Macro, or an LFO to it and adjust the parameter via that, or if you use automation in your plugin host application, then that parameter will change for all sounding notes.

But if you assign an Envelope as a controller to a parameter, then each polyphonic note will use its own timeline for that parameter, and the parameter's value will change over time for each note independently according to the envelope's settings. By default, these settings are only evaluated once for each note, at the very beginning of the note, so if the parameters of the envelope are changed, then it will only affect the notes that start after the adjustment.

To have polyphonic notes sample and hold a MIDI value or a Macro's momentary value for a parameter for the entire duration of the note, independently of other notes and subsequent changes of the value (e.g. to use lower filter cutoff frequency for low-velocity notes so that they sound softer), then you have to use an Envelope: turn up all the levels of the Envelope to 100%, assign the MIDI value or the Macro to the Amount parameter of the Envelope, and assign the Envelope to control the parameter.

If an Envelope is switched to Dynamic mode, then polyphonic notes will still track their own independent timelines for each parameter that has that Envelope assigned, but the parameter's value will converge to the value that it should have at each moment according to the momentary settings of the Envelope.

The knobs in the waveform harmonics section don't do anything, is this a bug?

To hear the effect of those knobs, you have to select the Custom waveworm using the WAV knob in the Waveform section of the oscillators.

(Note that these parameters are CPU-intensive to process, so they are not sample accurate, they are not smoothed, and they are processed only once for each rendering block. Due to this, if you change them while a note is playing, or assign a controller to them, then you might hear "steps" or even clicks.)

How can parameters be automated? What parameters does the plugin export?

The intended way of automating JS80P's parameters is to assign a MIDI Control Change (MIDI CC) message to a parameter (or use MIDI Learn), and turn the corresponding knob on your MIDI keyboard while playing, or edit the MIDI CC events in your host application's MIDI editor.

However, the VST 3 plugin format requires plugins to export a proxy parameter for each MIDI CC message that they want to receive, and as a side-effect, these parameters can also be automated using the host application's usual automation editor. For the sake of consistency, the FST plugin also exports automatable parameters for each supported MIDI CC message.

For example, in both plugin types, you might assign the MIDI CC 1 (Modulation Wheel) controller to the Phase Modulation (PM) parameter of the synthesizer, and then add automation in the host application to the MIDI CC 1 (Modulation Wheel) (VST 3) or ModWh (FST) parameter. JS80P will then interpret the changes of this parameter the same way as if you were turning the modulation wheel on a MIDI keyboard.

Aren't Phase Modulation and Frequency Modulation equivalent? Why have both?

The reason for JS80P having both kinds of modulation is that they are not always equivalent. They are only identical when the modulator signal is a sinusoid, but with each added harmonic, PM and FM start to differ more and more. A detailed mathematical explanation of this is shown in here.

Where does the name come from?

In 2022, I started developing a browser-based synthesizer using the Web Audio API, mostly being inspired by the Yamaha CS-80. I named that project JS-80. Then I started adding one little feature and customization option after the other, then it got out of hand, and I also started finding limitations of doing audio in the browser. So I decided to implement a cleaned up version of this synth in C++ as a DAW plugin (with a better waveshaper antialiasing method than what's available in the browser), and so JS80P was born.

FL Studio: How to assign a MIDI CC to a JS80P parameter?

Unlike decent audio software (like for example REAPER), FL Studio does not send all MIDI events that come out of your MIDI keyboard to plugins, and unfortunately, MIDI Control Change (MIDI CC) messages are among the kinds of MIDI data that it swallows. To make everything work, you have to assign the MIDI CC events to a plugin parameter.

JS80P does not directly export its parameters (in order to avoid conflict between the host's automations and JS80P's internal control assignments), but it exports proxy parameters which represent MIDI CC messages that it handles.

For example, let's say a physical knob on your MIDI keyboard is configured to send its values in MIDI CC 7 messages. To make this knob turn the Phase Modulation (PM) virtual knob in JS80P, you have to do the following steps:

  1. Click on the small triangle in the top left corner of the plugin window of JS80P, and select the "Browse parameters" menu item.

  2. Find the parameter named "Vol" (FST) or "MIDI CC 7 (Volume)" (VST 3) in the browser. Click on it with the right mouse button.

  3. Select the "Link to controller..." menu item.

  4. Turn the knob on your MIDI keyboard until FL Studio recognizes it.

  5. Now click on the area below the Phase Modulation (PM) virtual knob in JS80P's interface.

  6. Select either the "MIDI CC 7 (Volume)" option, or the "MIDI Learn" option, and turn the physical knob on your MIDI keyboard again.

FL Studio: How to assign Channel Pressure (Aftertouch) to a JS80P parameter?

Unlike decent audio software (like for example REAPER), FL Studio does not send all MIDI events that come out of your MIDI keyboard to plugins, and unfortunately, Channel Pressure (also known as Channel Aftertouch) messages are among the kinds MIDI data that it swallows.

Getting the Channel Pressure to work in FL Studio is a similar, but slightly more complicated procedure than setting up MIDI CC. For example, to make Channel Pressure control the Phase Modulation (PM) virtual knob in JS80P, you have to do the following steps:

  1. Click on the small triangle in the top left corner of the plugin window of JS80P, and select the "Browse parameters" menu item.

  2. Press a piano key on your MIDI keyboard, and hold it down without triggering aftertouch.

  3. While holding the piano key down, find the parameter named "Ch AT" (FST) or "Channel Aftertouch" (VST 3) in FL Studio's browser. Click on it with the right mouse button.

  4. Select the "Link to controller..." menu item (keep holding the piano key).

  5. Now push the piano key harder to trigger aftertouch.

  6. Click on the area below the Phase Modulation (PM) virtual knob in JS80P's interface.

  7. Select the "Channel Aftertouch" option.

FL Studio: How to use the Sustain Pedal?

Unlike decent audio software (like for example REAPER), FL Studio does not send all MIDI events that come out of your MIDI keyboard to plugins, and unfortunately, the MIDI Control Change (MIDI CC) message which contains information about the sustain pedal's state is among the kinds of MIDI data that it swallows.

To add insult to injury, it pretends that it notifies the plugin about the pedal's state, but in reality, it just defers sending NOTE OFF events until the pedal is released. This might give the desired effect in some cases, but it breaks patches that assign additional functionality to the pedal besides sustaining notes.

To make everything work, you have to assign the sustain pedal's MIDI CC events to the plugin parameter where JS80P expects them, and you have to turn off FL Studio's default behavior of handling the pedal on behalf of plugins.

  1. Open "Options / MIDI settings" from the main menu.

  2. Turn off the "Foot pedal controls note off" option.

  3. Close the Settings dialog window.

  4. Click on the small triangle in the top left corner of the plugin window of JS80P, and select the "Browse parameters" menu item.

  5. Find the parameter named "Sustn" (FST) or "MIDI CC 64 (Sustain Pedal)" (VST 3) in the browser. Click on it with the right mouse button.

  6. Select the "Link to controller..." menu item.

  7. Press the pedal.

This website does not use any cookies.
Copyright © 2023 Attila M. Magyar