{"id":47287919,"url":"https://github.com/attilammagyar/js80p","last_synced_at":"2026-03-16T06:22:46.975Z","repository":{"id":65710287,"uuid":"597908700","full_name":"attilammagyar/js80p","owner":"attilammagyar","description":"A MIDI driven, performance oriented, versatile synthesizer.","archived":false,"fork":false,"pushed_at":"2026-03-10T08:56:10.000Z","size":254944,"stargazers_count":120,"open_issues_count":4,"forks_count":7,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-03-10T16:09:34.384Z","etag":null,"topics":["audio","gpl","gplv3","midi","music","sound","synth","synthesis","synthesizer","vst","vst3","vst3-plugin"],"latest_commit_sha":null,"homepage":"https://attilammagyar.github.io/js80p/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/attilammagyar.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.txt","contributing":"CONTRIBUTING.txt","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-06T00:55:43.000Z","updated_at":"2026-03-09T08:32:26.000Z","dependencies_parsed_at":"2025-12-26T01:09:39.609Z","dependency_job_id":"f75dff60-fbcf-4e81-97ea-0921e2f9568b","html_url":"https://github.com/attilammagyar/js80p","commit_stats":null,"previous_names":[],"tags_count":57,"template":false,"template_full_name":null,"purl":"pkg:github/attilammagyar/js80p","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attilammagyar%2Fjs80p","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attilammagyar%2Fjs80p/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attilammagyar%2Fjs80p/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attilammagyar%2Fjs80p/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attilammagyar","download_url":"https://codeload.github.com/attilammagyar/js80p/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attilammagyar%2Fjs80p/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30570639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-16T06:02:37.763Z","status":"ssl_error","status_checked_at":"2026-03-16T06:02:14.913Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","gpl","gplv3","midi","music","sound","synth","synthesis","synthesizer","vst","vst3","vst3-plugin"],"created_at":"2026-03-16T06:22:43.442Z","updated_at":"2026-03-16T06:22:46.955Z","avatar_url":"https://github.com/attilammagyar.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"JS80P\n=====\n\nJS80P is a MIDI driven, performance oriented, versatile, free and open source\n[synthesizer VST® plugin][plugin] for Linux and Windows.\n\n  [plugin]: https://en.wikipedia.org/wiki/Virtual_Studio_Technology\n\n\u003cimg src=\"https://raw.githubusercontent.com/attilammagyar/js80p/main/js80p.png\" alt=\"Screenshot of JS80P\" /\u003e\n\nJS80P has two oscillators (and a sub-harmonic sine), and a lot of filters,\neffects, envelopes, LFOs, and powerful macros to shape your sound with\nsubtractive, additive, FM, PM, and AM synthesis, complete with polyphonic,\nmonophonic, and split keyboard modes, MPE support, MTS-ESP tuning support, and\nanalog imperfection emulation.\n\nTo download JS80P, visit its website at\n[https://attilammagyar.github.io/js80p](https://attilammagyar.github.io/js80p),\nor look for the \"[Releases](https://github.com/attilammagyar/js80p/releases)\"\nsection at its GitHub page at\n[https://github.com/attilammagyar/js80p](https://github.com/attilammagyar/js80p).\n(The source code is also available on GitHub under the terms of the GNU General\nPublic License Version 3.)\n\nSee the \"[Before Installing: Choosing a Distribution](#install-dist)\" section\nbelow to find out which package you need.\n\n\u003e VST is a registered trademark of Steinberg Media Technologies GmbH.\n\n\u003ca id=\"toc\"\u003e\u003c/a\u003e\n\nTable of Contents\n-----------------\n\n * [Table of Contents](#toc)\n * [Features](#features)\n * [Installation](#install)\n    * [Before Installing: Choosing a Distribution](#install-dist)\n    * [System Requirements](#system-reqs)\n       * [Dependencies on Windows](#windows-deps)\n       * [Dependencies on Linux](#linux-deps)\n    * [VST 3 Bundle on Windows](#vst3-bundle-windows)\n    * [VST 3 Bundle on Linux](#vst3-bundle-linux)\n    * [VST 3 Single File on Windows](#vst3-single-windows)\n    * [VST 3 Single File on Linux](#vst3-single-linux)\n    * [FST (VST 2.4) on Windows](#fst-windows)\n    * [FST (VST 2.4) on Linux](#fst-linux)\n    * [Setting up MTS-ESP Tuning Providers](#install-tuning)\n       * [Windows](#mts-esp-windows)\n       * [Linux](#mts-esp-linux)\n * [Usage](#usage)\n    * [Signal Chain (Simplified)](#usage-signal)\n    * [Knobs](#usage-knobs)\n       * [Polyphony](#usage-polyphony)\n    * [Controllers](#usage-controllers)\n    * [Synthesizer (Synth)](#usage-synth)\n       * [Main Panel](#usage-synth-main)\n       * [Common Oscillator Settings](#usage-synth-common)\n       * [Oscillator 1 (Modulator)](#usage-synth-modulator)\n       * [Oscillator 2 (Carrier)](#usage-synth-carrier)\n       * [MIDI Polyphonic Expression (MPE)](#usage-synth-mpe)\n    * [Effects](#usage-effects)\n       * [Volume Controls](#usage-effects-volume)\n       * [Distortions](#usage-effects-distortions)\n       * [Filters](#usage-effects-filters)\n       * [Tape](#usage-effects-tape)\n       * [Chorus](#usage-effects-chorus)\n       * [Echo](#usage-effects-echo)\n       * [Reverb](#usage-effects-reverb)\n    * [Macros (MC)](#usage-macros)\n    * [Envelope Generators (ENV)](#usage-envelopes)\n    * [Low-Frequency Oscillators (LFOs)](#usage-lfos)\n    * [Voice Management, Garbage Collector](#usage-gc)\n * [Presets](#presets)\n    * [Blank](#preset-blank)\n    * [Bright Organ](#preset-bright-organ)\n    * [Chariots-Aftertouch](#preset-chariots-aftertouch)\n    * [Chariots](#preset-chariots)\n    * [Demo 1](#preset-demo-1)\n    * [Demo 2](#preset-demo-2)\n    * [Kalimba](#preset-kalimba)\n    * [Rock Organ](#preset-rock-organ)\n    * [Sandstorm](#preset-sandstorm)\n    * [Stereo Saw](#preset-stereo-saw)\n    * [Acid Lead 1](#preset-acid-lead-1)\n    * [Acid Lead 2](#preset-acid-lead-2)\n    * [Acid Lead 3](#preset-acid-lead-3)\n    * [Bells 1](#preset-bells-1)\n    * [Bells 2](#preset-bells-2)\n    * [Flute](#preset-flute)\n    * [FM Womp 1](#preset-fm-womp-1)\n    * [FM Womp 2](#preset-fm-womp-2)\n    * [FM Womp 3](#preset-fm-womp-3)\n    * [Tech Noir Lead 1](#preset-tech-noir-lead-1)\n    * [Tech Noir Lead 2](#preset-tech-noir-lead-2)\n    * [Tech Noir Lead 3](#preset-tech-noir-lead-3)\n    * [Derezzed](#preset-derezzed)\n    * [Ambient Pad 1](#preset-ambient-pad-1)\n    * [Ambient Pad 2](#preset-ambient-pad-2)\n    * [Ambient Pad 3](#preset-ambient-pad-3)\n    * [Saw Piano](#preset-saw-piano)\n    * [Saw Piano Reversed](#preset-saw-piano-reversed)\n    * [Nightmare Lead](#preset-nightmare-lead)\n    * [Tremolo Lead](#preset-tremolo-lead)\n    * [Monophonic Saw](#preset-monophonic-saw)\n    * [Dystopian Cathedral](#preset-dystopian-cathedral)\n    * [Gloomy Brass](#preset-gloomy-brass)\n    * [Gloomy Brass Raindrops](#preset-gloomy-brass-raindrops)\n    * [Sawyer](#preset-sawyer)\n    * [Analog Brass AT](#preset-analog-brass-at)\n    * [Analog Brass mod](#preset-analog-brass-mod)\n    * [Bouncy](#preset-bouncy)\n    * [Lo-fi Keys](#preset-lo-fi-keys)\n    * [Analog Brass AT last](#preset-analog-brass-at-last)\n    * [Analog Brass mod last](#preset-analog-brass-mod-last)\n    * [Dystopiano](#preset-dystopiano)\n    * [Expressive Saw](#preset-expressive-saw)\n    * [Flute Mono](#preset-flute-mono)\n    * [FX Master Enhancer](#preset-fx-master-enhancer)\n    * [Creepy Wind](#preset-creepy-wind)\n    * [Stalacpipe Organ](#preset-stalacpipe-organ)\n    * [Crystal Bowl](#preset-crystal-bowl)\n    * [Metal Bowl](#preset-metal-bowl)\n    * [Metal Bowl Bright](#preset-metal-bowl-bright)\n    * [Analog Brass AT MPE](#preset-analog-brass-at-mpe)\n    * [Analog Brass mod MPE](#preset-analog-brass-mod-mpe)\n    * [Expressive Saw MPE](#preset-expressive-saw-mpe)\n * [Bugs](#bugs)\n * [Frequently Asked Questions](#faq)\n    * [Mac version?](#faq-mac)\n    * [Why do you say FST instead of VST 2?](#faq-fst)\n    * [Parameters, Envelopes, LFOs, and polyphony: how do they work?](#faq-params-polyphony)\n    * [The knobs in the waveform harmonics section don't do anything, is this a bug?](#faq-custom-wave)\n    * [How can parameters be automated? What parameters does the plugin export?](#faq-automation)\n    * [Aren't Phase Modulation and Frequency Modulation equivalent? Why have both?](#faq-pm-fm)\n    * [Where does the name come from?](#faq-name)\n    * [FL Studio: How to assign a MIDI CC to a JS80P knob?](#faq-flstudio-midicc)\n    * [FL Studio: How to assign Channel Pressure (Aftertouch) to a JS80P knob?](#faq-flstudio-aftertouch)\n    * [FL Studio: How to set up the Sustain Pedal?](#faq-flstudio-sustain)\n * [Development](#dev)\n    * [Tools](#dev-tools)\n    * [Dependencies](#dev-dep)\n    * [Compiling](#dev-compile)\n    * [Theory](#dev-theory)\n\n\u003ca id=\"features\"\u003e\u003c/a\u003e\n\nFeatures\n--------\n\n * 64 notes polyphony.\n    * MIDI Polyphonic Expression (MPE).\n * Last-note priority monophonic mode.\n    * Legato playing will either retrigger or smoothly glide to the next note,\n      depending on the portamento length setting.\n * Polyphonic and monophonic hold modes to keep notes ringing without a sustain\n   pedal.\n * 2 oscillators with 10 waveforms and an additional noise generator:\n    * sine,\n    * sawtooth,\n    * soft sawtooth,\n    * inverse sawtooth,\n    * soft inverse sawtooth,\n    * triangle,\n    * soft triangle,\n    * square,\n    * soft square,\n    * custom.\n * 2 filters for each oscillator, 7 filter types:\n    * low-pass,\n    * high-pass,\n    * band-pass,\n    * notch,\n    * bell (peaking),\n    * low-shelf,\n    * high-shelf.\n * Sub-harmonic sine wave for oscillator 1, distortion for oscillator 2.\n * Adjustable oscillator pitch inaccuracy and instability, for analog-like\n   liveliness and warmth.\n    * Optional synchronization of inaccuracy and instability between the\n      oscillators within each polyphonic voice.\n * Microtuning support via the MTS-ESP tuning protocol by\n   [ODDSound](https://oddsound.com/).\n * Portamento.\n    * Glide from the last note or a set amount.\n * Wavefolder.\n * Split keyboard.\n * Amplitude modulation.\n * Frequency modulation.\n * Phase modulation.\n * Built-in effects:\n    * various distortions,\n    * 2 more filters,\n    * basic tape simulation (saturation, tone coloring, noise, wow and flutter,\n      slow-down stop, fast-forward),\n    * chorus,\n    * stereo echo (with distortion, side-chain compression or gate, and\n      reversible delay lines),\n    * stereo reverb (with distortion and side-chain compression or gate),\n    * volume controls at various points of the signal chain.\n * 12 DAHDSR envelopes with customizable shapes, freely assignable to most of\n   the oscillator, filter, and modulation parameters.\n * 8 low-frequency oscillators (LFO) with optional amplitude envelope and\n   polyphony.\n * Filter and envelope imperfection settings for analog-like feel.\n * Freely assignable MIDI controllers and powerful macros.\n    * Ability to override the primary function of the sustain pedal, and use it\n      as a toggle switch for various parameters and macros.\n * Channel pressure (aftertouch).\n    * Optionally with semi-polyphonic aftertouch emulation (even with MIDI\n      keyboards that don't have polyphonic aftertouch):\n       * last pressed key,\n       * oldest pressed key,\n       * lowest pressed key,\n       * or highest pressed key.\n * MIDI learn.\n * Logarithmic or linear scale filter cutoff frequencies.\n * Tempo synchronization for envelopes, LFOs, and effects.\n * Use the peak level at various points of the signal chain to control\n   parameters:\n    * oscillator 1 output,\n    * oscillator 2 output,\n    * volume control 1 input,\n    * volume control 2 input,\n    * volume control 3 input.\n * Route external audio into the effects chain of JS80P (in host applications\n   which support it).\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"install\"\u003e\u003c/a\u003e\n\nInstallation\n------------\n\n\u003ca id=\"install-dist\"\u003e\u003c/a\u003e\n\n### Before Installing: Choosing a Distribution\n\nIf your plugin host application does not support VST 3, but does support\nVST 2.4, then you have to download and install the FST version of JS80P.\nOtherwise, you should go with a VST 3 bundle on both Windows and Linux.\n\nThe source code distribution can be compiled for various CPU architectures.\nReady-to-use binary distributions are available for \"`x86_64`\" and \"`x86`\"\ncompatible systems, like most desktop PCs and laptops.\n\nIf your CPU supports [AVX instructions](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions)\nand you use a 64 bit plugin host application (also known as \"`x86_64`\"), then\nyou should download a JS80P package that is optimized for AVX compatible\nprocessors. If you have an older computer, or if you get error messages\ncomplaining about \"illegal instructions\" or experience crashes, then\nyou should go with one of the [SSE2](https://en.wikipedia.org/wiki/SSE2)\ncompatible JS80P packages.\n\nIf you are using an older VST 3 host, or if you are running a 32 bit (also\nknown as \"`i686`\" or \"`x86`\") VST 3 host on a 64 bit Linux system, then it might\nnot be able to load the VST 3 bundle, so you will have to go with a VST 3\nsingle file JS80P package that matches the architecture of your host\napplication.\n\nThe 32 bit versions are usually only needed by those who deliberately use a 32\nbit plugin host application, e.g. because they want to keep using some really\nold plugins which are not available for 64 bit systems.\n\nIf you are in doubt, then try the VST 3 bundle, and if your plugin host\napplication doesn't recognize it, then try the 64 bit VST 3 single file\nedition, then the 64 bit FST version, then the 32 bit VST 3 single file\nedition, and so on.\n\n**Note**: all versions use the same high-precision sound synthesis engine\ninternally, so the CPU architecture does not affect the sound quality.\n\n#### Packages\n\nThese are the file names that you will find on GitHub on the\n\"[Releases](https://github.com/attilammagyar/js80p/releases)\" page:\n\n * VST 3 bundles for both Windows and Linux:\n\n    * `js80p-X_Y_Z-avx-vst3_bundle.zip`: for modern (AVX), 64 bit CPUs. This is\n      what most people need.\n\n    * `js80p-X_Y_Z-sse2-vst3_bundle.zip`: for older (SSE2), 64 or 32\n      bit CPUs.\n\n * VST 3 single file editions for Windows:\n\n    * `js80p-X_Y_Z-windows-x86_64-avx-vst3_single_file.zip`: for modern\n      (AVX), 64 bit CPUs.\n\n    * `js80p-X_Y_Z-windows-x86_64-sse2-vst3_single_file.zip`: for older\n      (SSE2), 64 bit CPUs.\n\n    * `js80p-X_Y_Z-windows-x86-sse2-vst3_single_file.zip`: for older (SSE2),\n      32 bit CPUs.\n\n * VST 3 single file editions for Linux:\n\n    * `js80p-X_Y_Z-linux-x86_64-avx-vst3_single_file.zip`: for modern (AVX),\n      64 bit CPUs.\n\n    * `js80p-X_Y_Z-linux-x86_64-sse2-vst3_single_file.zip`: for older\n      (SSE2), 64 bit CPUs.\n\n    * `js80p-X_Y_Z-linux-x86-sse2-vst3_single_file.zip`: for older (SSE2),\n      32 bit CPUs.\n\n * FST editions for Windows:\n\n    * `js80p-X_Y_Z-windows-x86_64-avx-fst.zip`: for modern (AVX), 64 bit\n      CPUs.\n\n    * `js80p-X_Y_Z-windows-x86_64-sse2-fst.zip`: for older (SSE2), 64 bit\n      CPUs.\n\n    * `js80p-X_Y_Z-windows-x86-sse2-fst.zip`: for older (SSE2), 32 bit CPUs.\n\n * FST editions for Linux:\n\n    * `js80p-X_Y_Z-linux-x86_64-avx-fst.zip`: for modern (AVX), 64 bit CPUs.\n\n    * `js80p-X_Y_Z-linux-x86_64-sse2-fst.zip`: for older (SSE2), 64 bit\n      CPUs.\n\n    * `js80p-X_Y_Z-linux-x86-sse2-fst.zip`: for older (SSE2), 32 bit CPUs.\n\n * Source:\n\n    * `js80p-X_Y_Z-src.zip`: the source code of the plugin which you can\n      compile for any CPU architecture. (See the \"[Development](#dev)\" section\n      for the details.)\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"system-reqs\"\u003e\u003c/a\u003e\n\n### System Requirements\n\n * **Operating System**: Windows 7 or newer, or Linux (e.g. Ubuntu 22.04).\n * **CPU**: SSE2 support, 32 bit (i686) or 64 bit (x86-64).\n    * Separate packages are available for AVX capable 64 bit processors for\n      better performance and CPU utilization.\n * **RAM**: 200-300 MB per instance, depending on buffer sizes, sample rate,\n   etc.\n\nTested with [REAPER](https://www.reaper.fm/) 7.14.\n\nA buffer size of around 6 ms (256 samples at 44.1 kHz sample rate) usually\ngives good performance and low latency.\n\n**Note**: the source code can be compiled for various other platforms as well,\nthanks to the following contributors:\n\n * [RISC-V 64](https://github.com/aimixsaka/js80p/) by\n   [@aimixsaka](https://github.com/aimixsaka/)\n * [LoongArch ](https://github.com/YHStar/js80p) by\n   [@YHStar](https://github.com/YHStar)\n\n\u003ca id=\"windows-deps\"\u003e\u003c/a\u003e\n\n#### Dependencies on Windows\n\nTypical Windows systems usually have the MSVC library already installed, but in\ncase you need it, you can download it from\n[Microsoft's website](https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist).\n\n(Most people need the `X64` version of this library. To use the 32 bit version\nof the plugin, you will need the `X86` version of the library. See the\n[Before Installing: Choosing a Distribution](#install-dist) section for more\ninformation.)\n\n\u003ca id=\"linux-deps\"\u003e\u003c/a\u003e\n\n#### Dependencies on Linux\n\nOn Linux, the `libxcb`, `libxcb-render`, and `libcairo` libraries, and either\nthe `kdialog` or the `zenity` application are required to run JS80P. To install\nthem on Debian based distributions (e.g. Ubuntu), you can use the following\ncommand:\n\n    sudo apt-get install libxcb1 libxcb-render0 libcairo2 zenity kdialog\n\n**Note**: if you want to run the 32 bit version of JS80P on a 64 bit system,\nthen you will have to install the 32 bit version of the libraries, for example:\n\n    sudo apt-get install libxcb1:i386 libxcb-render0:i386 libcairo2:i386 zenity kdialog\n\n\u003ca id=\"vst3-bundle-windows\"\u003e\u003c/a\u003e\n\n### VST 3 Bundle on Windows\n\n1. [Download JS80P](https://attilammagyar.github.io/js80p/index.html#download).\n2. Extract the ZIP archive.\n3. Copy the entire `js80p.vst3` folder to your VST 3 folder which is\n   usually `C:\\Users\\YourUserName\\AppData\\Local\\Programs\\Common\\VST3`.\n\n\u003ca id=\"vst3-bundle-linux\"\u003e\u003c/a\u003e\n\n### VST 3 Bundle on Linux\n\n1. [Download JS80P](https://attilammagyar.github.io/js80p/index.html#download).\n2. Extract the ZIP archive.\n3. Copy the entire `js80p.vst3` directory to your VST 3 directory which is\n   usually `~/.vst3`.\n\n\u003ca id=\"vst3-single-windows\"\u003e\u003c/a\u003e\n\n### VST 3 Single File on Windows\n\n1. [Download JS80P](https://attilammagyar.github.io/js80p/index.html#download).\n2. Extract the ZIP archive.\n3. Copy the `js80p.vst3` file to your VST 3 folder which is usually\n   `C:\\Users\\YourUserName\\AppData\\Local\\Programs\\Common\\VST3`.\n\n\u003ca id=\"vst3-single-linux\"\u003e\u003c/a\u003e\n\n### VST 3 Single File on Linux\n\n1. [Download JS80P](https://attilammagyar.github.io/js80p/index.html#download).\n2. Extract the ZIP archive.\n3. Copy the `js80p.vst3` file to your VST 3 directory which is usually\n   `~/.vst3`.\n\n\u003ca id=\"fst-windows\"\u003e\u003c/a\u003e\n\n### FST (VST 2.4) on Windows\n\n1. [Download JS80P](https://attilammagyar.github.io/js80p/index.html#download).\n2. Extract the ZIP archive.\n3. Copy the `js80p.dll` file to the folder where you keep your VST 2.4 plugins.\n4. Optionally, if your host application can load `.vstxml` files, it is\n   recommended to copy the `js80p.vstxml` file as well to the folder where\n   you keep your VST 2.4 plugins.\n\n**Note**: VST 2.4 plugins are usually put in the `C:\\Program Files\\VstPlugins`\nfolder.\n\n\u003ca id=\"fst-linux\"\u003e\u003c/a\u003e\n\n### FST (VST 2.4) on Linux\n\n1. [Download JS80P](https://attilammagyar.github.io/js80p/index.html#download).\n2. Extract the ZIP archive.\n3. Copy the `js80p.so` file to the directory where you keep your VST 2.4\n   plugins.\n4. Optionally, if your host application can load `.vstxml` files, it is\n   recommended to copy the `js80p.vstxml` file as well to the directory where\n   you keep your VST 2.4 plugins.\n\n**Note**: VST 2.4 plugins are usually put in the `~/.vst` directory.\n\n\u003ca id=\"install-tuning\"\u003e\u003c/a\u003e\n\n### Setting up MTS-ESP Tuning Providers\n\n\u003ca id=\"mts-esp-windows\"\u003e\u003c/a\u003e\n\n#### Windows\n\nDownload and install either the free [MTS-ESP Mini](https://oddsound.com/mtsespmini.php)\nplugin or the paid [MTS-ESP Suite](https://oddsound.com/mtsespsuite.php) plugin\nby [ODDSound](https://oddsound.com/). Follow the instructions on the website,\nwhere you can also find the User Guide documentation for each product.\n\n**Note**: it is possible to use a different tuning provider without installing\nany of the above plugins, but you may have to manually download the\n`LIBMTS.dll` library from the [ODDSound/MTS-ESP GitHub repository](https://github.com/ODDSound/MTS-ESP/tree/main/libMTS/Win),\nand put it in a folder where Windows can find it:\n\n * On 64 bit Windows:\n    * put the 64 bit DLL into the `Program Files\\Common Files\\MTS-ESP` folder,\n    * put the 32 bit DLL into the `Program Files (x86)\\Common Files\\MTS-ESP`\n      folder.\n * On 32 bit Windows, put the 32 bit version of `LIBMTS.dll` into the\n   `Program Files\\Common Files\\MTS-ESP` folder.\n\n\u003ca id=\"mts-esp-linux\"\u003e\u003c/a\u003e\n\n#### Linux\n\nAs of November, 2023, there is no official distribution of the MTS-ESP tuning\nprovider plugins by [ODDSound](https://oddsound.com/) for Linux, however, there\nare plugins which can act as a tuning provider, for example,\n[Surge XT](https://surge-synthesizer.github.io/).\n\nTo use MTS-ESP, you may have to download the `libMTS.so` library from the\n[ODDSound/MTS-ESP GitHub repository](https://github.com/ODDSound/MTS-ESP/tree/main/libMTS/Linux),\nand put it in the `/usr/local/lib` directory, if it is not already installed on\nyour system.  As of November, 2023, `libMTS.so` is only available for `x86_64`\nLinux systems.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage\"\u003e\u003c/a\u003e\n\nUsage\n-----\n\n\u003ca id=\"usage-signal\"\u003e\u003c/a\u003e\n\n### Signal Chain (Simplified)\n\n                                                               (x64)\n    Oscillator --\u003e Filter --\u003e Wavefolder --\u003e Filter --\u003e Volume ---------\u003e Mixer\n                     ^                                       |            ^ ^ |\n                     |                                       |            | | |\n    Sub-oscillator --+                                       |   Aux      | | |\n                                                             |   Input ---+ | |\n     (Frequency, Phase, and Amplitude Modulation)            |              | |\n     +-------------------------------------------------------+              | |\n     |                                                                      | |\n     v                                                                      | |\n     Oscillator                                                             | |\n     |                                                                      | |\n     v                                                          (x64)       | |\n     Filter --\u003e Wavefolder --\u003e Distortion --\u003e Filter --\u003e Volume ------------+ |\n                                                                              |\n            +-----------------------------------------------------------------+\n            |\n            v\n            Volume --\u003e Overdrive --\u003e Distortion --\u003e Filter --\u003e Filter --+\n                                                                        |\n            +-----------------------------------------------------------+\n            |\n            v\n            Volume --\u003e Tape (1) --\u003e Chorus --\u003e Echo --\u003e Reverb --\u003e Tape (2) --+\n                                                                              |\n            +-----------------------------------------------------------------+\n            |\n            v\n            Volume --\u003e Out\n\nNote: the tape effect can be placed either before the chorus or after the\nreverb in the chain.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-knobs\"\u003e\u003c/a\u003e\n\n### Knobs\n\nMost of the parameters that control various aspects of the sound that are\nproduced by JS80P can be adjusted via virtual knobs on the screen:\n\n * Move the mouse cursor over a knob or a small screw icon, and use the mouse\n   wheel or move the mouse while holding down the left mouse button for\n   adjusting the value.\n\n * Hold down the Control key on the keyboard while adjusting a knob for fine\n   grained adjustments.\n\n * Double click on a knob to reset it to its default value.\n\n * Click on the area below a knob to assign a [controller](#usage-controllers)\n   to it, or to remove a previously assigned one. When a knob has a controller\n   assigned to it, its value can no longer be changed manually, it's set and\n   continuously adjusted by the selected controller.\n\n   **Note**: if you accidentally open the controller selector screen, and you\n   want to close it without changing anything, then just click on the \"none\"\n   option or the controller that is already selected.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-polyphony\"\u003e\u003c/a\u003e\n\n#### Polyphony\n\nBy default, JS80P parameters are paraphonic, which means that when there are\nmultiple voices playing different musical notes, all of them share the same\nvalue for each parameter. Many of the parameters on the\n[Synthesizer (Synth)](#usage-synth) tab can be changed to be polyphonic or\nto emulate semi-polyphonic behaviour by associating them with\n[envelope generators](#usage-envelopes) or\n[low-frequency oscillators](#usage-lfos) that have envelope generators\nassociated with them.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-controllers\"\u003e\u003c/a\u003e\n\n### Controllers\n\nControllers are various events and automations that can be used for setting the\nmomentary value (on a relative scale between 0% and 100%) of a\n[JS80P parameter knob](#usage-knobs):\n\n * **MIDI CC**: [MIDI Control Change](https://midi.org/midi-1-0-control-change-messages)\n   messages are usually sent when various faders, knobs, and wheels are\n   adjusted on a MIDI device. For example, the modulation wheel on a keyboard\n   usually sends a CC 1 message, the expression pedal is usually associated\n   with CC 11 messages, the sustain pedal is CC 64, etc.\n\n   **Note**: some host applications don't send MIDI CC messages to plugins by\n   default, but can be configured to do so. For example, the steps for getting\n   MIDI CC to work in FL Studio are described in the following F. A. Q.\n   entries:\n\n    * [FL Studio: How to assign a MIDI CC to a JS80P knob?](#faq-flstudio-midicc)\n    * [FL Studio: How to use the Sustain Pedal?](#faq-flstudio-sustain)\n\n * **MIDI Learn**: this is a wild card MIDI CC controller: when it is assigned\n   to a parameter, JS80P will replace the assignment with the first MIDI CC\n   event type that it receives. This is useful when you don't know the MIDI CC\n   number of a knob or fader on your MIDI device.\n\n   **Note**: JS80P does not process certain MIDI CC event types that are\n   reserved in the [MIDI specification](https://midi.org/midi-1-0-control-change-messages)\n   for special uses. If your device sends such messages as if they were general\n   purpose messages, then it is recommended to change its configuration in\n   order to avoid compatibility problems.)\n\n * **Triggered Note**: a value which is associated with note pitch and which is\n   updated every time a new note starts to play, e.g. when a key is pressed on\n   a MIDI keyboard. Using this in [macros](#usage-macros) is an extremely\n   flexible way to set up key tracking for any parameter of the sound.\n\n * **Triggered Velocity**: the speed with which a key on a MIDI keyboard is\n   pressed, or more generally, a measure of how strongly a note is to be played\n   (where 50% of the nominal range would be mezzo-forte). JS80P automatically\n   uses this value to adjust the amplitude of oscillator signals (depending on\n   the [VEL S](#usage-synth-common-vels) parameter), but it can also be used\n   for controlling other parameters as well. For example, by assigning this\n   controller to [filter cutoff frequency](#usage-synth-common-freq) parameters\n   (especially with using [macros](#usage-macros)), you can brighten up forte\n   notes while keeping softer notes warmer, darker.\n\n * **Released Note**:  a value which is associated with note pitch and which is\n   updated every time a note stops, e.g. when a key is released on a MIDI\n   keyboard.\n\n * **Released Velocity**: the speed with which a key on a MIDI keyboard is\n   released, or more generally, a measure of how softly a note is to be\n   stopped. Unfortunately, most MIDI devices don't provide this data.\n\n * **Pitch Wheel**: this represents the controller that can be used on MIDI\n   instruments to do pitch bends. (On a typical MIDI keyboard, this is a wheel\n   that automatically returns to the center position when released.)\n\n * **Osc 1 Out Peak**, **Osc 2 Out Peak**, **Vol 1 In Peak**,\n   **Vol 2 In Peak**, **Vol 3 In Peak**: JS80P continuously measures the peak\n   amplitude of the signal at various points of the signal chain. These\n   controllers make it possible to use this information for adjusting the\n   parameters of the sound.\n\n * **Channel Aftertouch**: some keyboards can measure how the pressure on\n   pressed keys change over time, making it possible to add dynamic expression\n   to notes over time while they are playing.\n\n   **Note**: some host applications don't provide aftertouch information to\n   plugins by default, but can be configured to do so. For example, the steps\n   for getting it to work in FL Studio are described in the following F. A. Q.\n   entry:\n\n    * [FL Studio: How to assign Channel Pressure (Aftertouch) to a JS80P knob?](#faq-flstudio-aftertouch)\n\n * **Macros**: MIDI-based controller values go from 0% to 100% on a linear\n   scale, which is often quite limiting. [Macros](#usage-macros) are JS80P's\n   way of customizing how a MIDI event affects a certain parameter.\n\n * **LFOs**: see [low-frequency oscillators](#usage-lfos).\n\n * **Envelopes**: see [envelope generators](#usage-envelopes).\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-synth\"\u003e\u003c/a\u003e\n\n### Synthesizer (Synth)\n\nThis tab contains the foundational settings of the sound.\n\n\u003ca id=\"usage-synth-main\"\u003e\u003c/a\u003e\n\n#### Main Panel\n\n##### Import Patch, Export Patch\n\nThe two icons at the top left corner allow saving and loading synth settings\n(often called \"patches\" or \"presets\") as ordinary files, e.g. for transferring\nsounds across projects, different host applications, computers, etc.\n\n\u003ca id=\"usage-synth-main-nh\"\u003e\u003c/a\u003e\n\n##### Note Handling\n\nClick on the black bar below the Import Patch and Export Patch icons, or use\nthe mouse wheel while holding the mouse cursor over it to change how JS80P\nhandles note events. The available options are:\n\n * **MONO**: monophonic mode, only a single note can be played at a time.\n\n    * When a new Note Start event is received while a previous note is still\n      playing (e.g. legato), then the new note takes priority: the old note is\n      stopped, and the new note is started.\n\n    * If the new note is released, and the previous note is still held, then\n      the previous note is restarted.\n\n    * If the [PRT](#usage-synth-common-prt) setting of an oscillator is set\n      to a value above 0, then that oscillator will smoothly glide its\n      frequency and volume to match the new note's pitch and velocity.\n\n * **M HOLD**: same as **MONO**, but Note Stop events are ignored until a\n   different note handling setting is selected, or until a Sustain Pedal Off\n   event is received.\n\n * **M IS**: same as **MONO**, but sustain pedal events are ignored while\n   the corresponding [MIDI CC](#usage-controllers) controller is still\n   maintained, allowing the pedal to be used as a 0% / 100% switch without\n   sustaining notes.\n\n * **M H IS**: same as **M HOLD**, but sustain pedal events are ignored while\n   the corresponding [MIDI CC](#usage-controllers) controller is still\n   maintained, allowing the pedal to be used as a 0% / 100% switch without\n   releasing the sustained note.\n\n   **Note**: there's no way in this mode to stop a note except having it\n   released by the [garbage collector](#usage-gc). One way to achieve that is\n   to assign an [envelope generator](#usage-envelopes) to either the amplitude\n   or the volume parameters, and set it up so that it decays into silence\n   before reaching the sustain stage.\n\n * **POLY**: polyphonic mode, 64 notes can be played simultaneously.\n\n * **P HOLD**: same as **POLY**, but Note Stop events are ignored until a\n   different note handling setting is selected, or until a Sustain Pedal Off\n   event is received.\n\n * **P IS**: same as **POLY**, but sustain pedal events are ignored while\n   the corresponding [MIDI CC](#usage-controllers) controller is still\n   maintained, allowing the pedal to be used as a 0% / 100% switch without\n   sustaining notes.\n\n * **P H IS**: same as **P HOLD**, but sustain pedal events are ignored while\n   the corresponding [MIDI CC](#usage-controllers) controller is still\n   maintained, allowing the pedal to be used as a 0% / 100% switch without\n   releasing the sustained notes.\n\n   **Note**: there's no way in this mode to stop a note except having it\n   released by the [garbage collector](#usage-gc). One way to achieve that is\n   to assign an [envelope generator](#usage-envelopes) to either the amplitude\n   or the volume parameters, and set it up so that it decays into silence\n   before reaching the sustain stage.\n\n * **P RET**: same as **POLY**, but when a Note Start event is received for a\n   note that is already being held by the sustain pedal, then instead of\n   triggering the same note on a different voice, the synth will retrigger the\n   already sounding voice.\n\n * **P H RET**: same as **P HOLD**, but Note Stop events are ignored until a\n   different note handling setting is selected, or until a Sustain Pedal Off\n   event is received.\n\n * **P H R IS**: same as **P H RET**, but sustain pedal events are ignored\n   while the corresponding [MIDI CC](#usage-controllers) controller is still\n   maintained, allowing the pedal to be used as a 0% / 100% switch without\n   releasing the sustained notes.\n\n   **Note**: there's no way in this mode to stop a note except having it\n   released by the [garbage collector](#usage-gc). One way to achieve that is\n   to assign an [envelope generator](#usage-envelopes) to either the amplitude\n   or the volume parameters, and set it up so that it decays into silence\n   before reaching the sustain stage.\n\n\u003ca id=\"usage-synth-main-mode\"\u003e\u003c/a\u003e\n\n##### Operating Mode (MODE)\n\nChoose whether to mix the sound of the two oscillators or route low notes to\none oscillator, and higher notes to the other. The available options are:\n\n * **Mix\u0026Mod**: the sound of the two oscillators can be mixed into the output,\n   and the sound of the second oscillator (carrier) can be modulated in various\n   ways by the first oscillator (modulator).\n\n * **Split C3**, **Split Db3**, etc.: notes below the selected split point are\n   played only on the first oscillator, notes above the split point (inclusive)\n   are played only on the second oscillator.\n\n##### Modulator Additive Volume (MIX)\n\nThis is an additional volume control for the first oscillator that is applied\nafter its signal is sent into the second oscillator as a modulator. The main\npurpose of this knob is to be able to control the oscillator's volume without\naffecting the modulation when the [MODE](#usage-synth-main-mode) knob is in the\nMix\u0026Mod position. Turn it down to 0% for making the first oscillator contribute\nto the final sound only via modulation.\n\n##### Phase Modulation (PM)\n\nTurn it up to have the first oscillator modulate the phase of the second\noscillator when the [MODE](#usage-synth-main-mode) knob is in the Mix\u0026Mod\nposition.\n\n##### Frequency Modulation (FM)\n\nTurn it up to have the first oscillator modulate the frequency of the second\noscillator when the [MODE](#usage-synth-main-mode) knob is in the Mix\u0026Mod\nposition.\n\n##### Amplitude Modulation (AM)\n\nTurn it up to have the first oscillator modulate the amplitude of the second\noscillator when the [MODE](#usage-synth-main-mode) knob is in the Mix\u0026Mod\nposition.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-synth-common\"\u003e\u003c/a\u003e\n\n#### Common Oscillator Settings\n\n\u003ca id=\"usage-synth-common-tuning\"\u003e\u003c/a\u003e\n\n##### Tuning\n\nClick on the black bar next to the oscillator's name, or use the mouse wheel\nwhile holding the mouse cursor over it to change the tuning. The available\noptions are:\n\n * **C MTS-ESP**: use an [external tuning provider](#install-tuning) for\n   determining the frequency of each note. Frequencies of notes which haven't\n   reached the release stage of their envelopes are updated continuously. The\n   connection to the tuning provider is indicated by \"on\" or \"off\" appearing in\n   the tuning selector box. If the connection to the tuning provider is broken,\n   then 440 Hz based\n   [12 tone equal temperament](https://en.wikipedia.org/wiki/Equal_temperament)\n   is used.\n\n * **N MTS-ESP**: use an [external tuning provider](#install-tuning) for\n   determining the frequency of each note. Note frequencies are updated only\n   when a new note is started. The connection to the tuning provider is\n   indicated by the \"on\" or \"off\" sign. If the connection to the tuning\n   provider is broken, then 440 Hz based 12 tone equal temperament is used.\n\n * **440 12TET**: the usual 12 tone equal temperament with the A4 note being\n   tuned to 440 Hz.\n\n * **432 12TET**: 12 tone equal temperament with the A4 note being tuned to\n   432 Hz.\n\n##### Oscillator Inaccuracy\n\nThe first screw icon next to the [tuning selector](#usage-synth-common-tuning)\nadds a level of randomization to the oscillator's frequency, mimicking the\nimperfectness of analog synthesizers. The more the screw is turned, the more\noff each note will be from the correct pitch.\n\nWhen the inaccuracy of the two oscillators is set to the same value, and the\n[MODE](#usage-synth-main-mode) knob is in the Mix\u0026Mod position, then the\noscillators will synchronize their randomness: each note will be off from the\ncorrect pitch by a random amount, but within a single voice, the two\noscillators will be off by the same amount.\n\n##### Oscillator Instability\n\nThe second screw icon next to the [tuning selector](#usage-synth-common-tuning)\nadds a level of randomization to the oscillator's frequency over time,\nmimicking the imperfectness of analog synthesizers. The more the screw is\nturned, the more the oscillator will diverge from the correct pitch, hovering\nsometimes above, and sometimes below.\n\nWhen the instability of the two oscillators is set to the same value, and the\n[MODE](#usage-synth-main-mode) knob is in the Mix\u0026Mod position, then the\noscillators will synchronize their random divergence: each note will be off\nfrom the correct pitch by a random amount, but within a single voice, the two\noscillators will always be off by the same amount, and will always diverge by\nthe same amount in the same direction.\n\n##### Noise Level\n\nThe third screw icon next to the [tuning selector](#usage-synth-common-tuning)\nmixes white noise into the output of the oscillator, independently from the\noscillator's amplitude.\n\n##### Fine Detune x4 (FIN x4)\n\nThe [Fine Detune (FIN)](#usage-synth-common-fin) parameter goes from -1200\ncents to +1200 cents (-1 octave to +1 octave), but if you want to go extreme\nwith pitch bends, this toggle switch can increase the range to -4800 cents to\n+4800 cents (-4 octaves to +4 octaves).\n\n\u003ca id=\"usage-synth-common-prt\"\u003e\u003c/a\u003e\n\n##### Portamento Length (PRT)\n\nThe time it takes for the oscillator's frequency to reach the current note's\npitch starting from the pitch of the previous note, or from the value that is\nspecified with the [Portamento Depth](#usage-synth-common-prd) parameter.\n\nWhen the synthesizer is in [MONO](#usage-synth-main-nh) mode, and\nnotes are played in a legato fashion (notes are started before the previous\nones would have ended), then it also controls how long the oscillator's\namplitude will take to match the velocity of the latest note.\n\n\u003ca id=\"usage-synth-common-prd\"\u003e\u003c/a\u003e\n\n##### Portamento Depth (PRD)\n\nWhen set to a non-zero value (specified in cents), the oscillator's frequency\nwill glide to the current note's pitch from a fixed level of detuning in\naccordance with the [PRT](#usage-synth-common-prt) setting.\n\nWhen its value is 0 s, then the starting frequency of the glide will be the\npitch of the previous note.\n\n##### Detune (DTN)\n\nCoarse detune, specifying how many semitones higher or lower the oscillator\nshould play above or below the note's actual pitch.\n\n\u003ca id=\"usage-synth-common-fin\"\u003e\u003c/a\u003e\n\n##### Fine Detune (FIN)\n\nFine detune, specifying how many cents higher or lower the oscillator should\nplay above or below the note's actual pitch.\n\n##### Amplitude (AMP)\n\nSets the volume of the oscillator before any filtering and shaping.\n\n\u003ca id=\"usage-synth-common-filter\"\u003e\u003c/a\u003e\n\n##### Filter Logarithmic Frequency (LG F)\n\nThe toggle switch above the [FREQ](#usage-synth-common-freq) knob can switch\nbetween using a linear or a logarithmic scale for the knob.\n\n\u003ca id=\"usage-synth-common-lgq\"\u003e\u003c/a\u003e\n\n##### Filter Logarithmic Q Factor (LG Q)\n\nThe toggle switch above the [Q](#usage-synth-common-q) knob can switch\nbetween using a linear or a logarithmic scale for the knob.\n\n##### Filter Cutoff Frequency Inaccuracy\n\nThe first little screw next to the [LG Q](#usage-synth-common-lgq) switch adds\na level of randomization to the filter's frequency to mimic imperfections of\nanalog synthesizers.\n\nBe careful with this, because with certain filter settings, too much\nrandomization can produce loud noises and sound artifacts or make the filter\ncompletely silent.\n\n##### Filter Q Inaccuracy\n\nThe second little screw next to the [LG Q](#usage-synth-common-lgq) switch adds\na level of randomization to the filter's Q factor to mimic imperfections of\nanalog synthesizers.\n\nBe careful with this, because with certain filter settings, too much\nrandomization can produce loud noises and sound artifacts or make the filter\ncompletely silent.\n\n\u003ca id=\"usage-synth-common-type\"\u003e\u003c/a\u003e\n\n##### Filter Type (TYPE)\n\nThe following filter types are available:\n\n * **LP**: low-pass filter, the frequencies above the\n   [cutoff frequency](#usage-synth-common-freq) are attenuated. The\n   [Q factor](#usage-synth-common-q) controls the resonance.\n\n * **HP**: high-pass filter, the frequencies below the\n   [cutoff frequency](#usage-synth-common-freq) are attenuated. The\n   [Q factor](#usage-synth-common-q) controls the resonance.\n\n * **BP**: band-pass filter, the frequencies outside a band around the\n   [cutoff frequency](#usage-synth-common-freq) are filtered out. The\n   [Q factor](#usage-synth-common-q) controls the width of the band. (Low Q\n   value makes the band wide, high Q value makes the band narrow.)\n\n * **Notch**: band-stop filter, the frequencies inside a band around the\n   [cutoff frequency](#usage-synth-common-freq) are filtered out. The\n   [Q factor](#usage-synth-common-q) controls the width of the band. (Low Q\n   value makes the band wide, high Q value makes the band narrow.)\n\n * **Bell**: boosts or attenuates a band of frequencies around the\n   [cutoff frequency](#usage-synth-common-freq). The\n   [Q factor](#usage-synth-common-q) controls the width of the band. (Low Q\n   value makes the band wide, high Q value makes the band narrow.)\n\n * **LS**: low-shelf filter, boosts or attenuates frequencies below the\n   [cutoff frequency](#usage-synth-common-freq).\n\n * **HS**: high-shelf filter, boosts or attenuates frequencies above the\n   [cutoff frequency](#usage-synth-common-freq).\n\n\u003ca id=\"usage-synth-common-freq\"\u003e\u003c/a\u003e\n\n##### Filter Cutoff Frequency (FREQ)\n\nThe cutoff frequency of the filter.\n\nBe careful with this, because depending on other settings of the filter, a too\nlow or too high cutoff frequency can produce loud noises and sound artifacts or\nit can make the filter completely silent.\n\n\u003ca id=\"usage-synth-common-q\"\u003e\u003c/a\u003e\n\n##### Filter Q Factor (Q)\n\nThe quality factor of the filter. Its precise meaning depends on the position\nof the [TYPE](#usage-synth-common-type) knob. This knob has no effect for\nthe low-shelf and high-shelf filters.\n\nBe careful with this, because depending on other settings of the filter, a too\nlow or too high Q factor can produce loud noises and sound artifacts or it can\nmake the filter completely silent.\n\n##### Filter Gain (GAIN)\n\nControls the boosting or attenuation when the [TYPE](#usage-synth-common-type)\nknob is in the Bell, LS (low-shelf), or HS (high-shelf) positions. It has no\neffect on other filter types.\n\nBe careful with this, because too much boosting can make the signal too loud.\n\n##### Wave Folding (FOLD)\n\nA wave folder is a similar wave shaping effect to a clipping distortion, but\nthe portion of the signal that is above the maximum level is not clipped, but\nreflected back on itself. Then if it reaches the maximum amplitude again in the\nopposite direction, then it is reflected again and again. This process adds a\nlot of complexity to the sound, making it sound metallic.\n\n\u003ca id=\"usage-synth-common-vels\"\u003e\u003c/a\u003e\n\n##### Velocity Sensitivity (VEL S)\n\nControls how the oscillator's volume reacts to note velocity. When it's set to\n0%, then the oscillator will use a fixed volume for each note. Between 0% and\n100%, the oscillator's volume will react to velocity linearly. Above 100%, the\noscillator's volume will react to note velocity more and more logarithmically.\n\n##### Volume (VOL)\n\nThe last chance to control the oscillator's volume after wave shaping and\nfiltering.\n\n##### Width (WID)\n\nWhen set to 0%, the oscillator will play all notes exactly in the middle of the\nstereo field. When set to a positive value, higher notes will lean towards the\nright side of the stereo field, and bass notes will lean towards the left. When\nset to a negative value, high notes will lean towards the left side, and bass\nnotes will lean towards the right.\n\n##### Panning (PAN)\n\nChanges the position of the oscillator in the stereo field. Positive values\nmove the oscillator towards the right side, negative values move it towards the\nleft side.\n\n\u003ca id=\"usage-synth-common-wav\"\u003e\u003c/a\u003e\n\n##### Waveform (WAV)\n\nSelects the waveform of the oscillator. The available options are:\n\n * **Sine**: simple sine wave without any harmonics above the fundamental.\n\n * **Saw**: sawtooth wave, ramps slowly, drops quickly. Contains both even and\n   odd harmonics.\n\n * **Soft Sw**: a softer, warmer version of the sawtooth wave. Less prone to\n   aliasing when various modulations and wave folding are engaged.\n\n * **Inv Saw**: inverse sawtooth wave, rises quickly, drops slowly. Contains\n   both even and odd harmonics.\n\n * **Soft I S**: a softer, warmer version of the inverse sawtooth wave. Less\n   prone to aliasing when various modulations and wave folding are engaged.\n\n * **Triangle**: rises slowly, drops slowly. Contains only odd harmonics.\n\n * **Soft Tri**: a softer, warmer version of the triangle wave. Less prone to\n    aliasing when various modulations and wave folding are engaged.\n\n * **Square**: rises quickly, stays up for half a period, then drops quickly\n   and stays down for half a period. Contains only odd harmonics.\n\n * **Soft Sqr**: a softer, warmer version of the square wave. Less prone to\n    aliasing when various modulations and wave folding are engaged.\n\n * **Custom**: the amplitudes of the waveform's harmonics can be set using the\n   10 knobs in the _Waveform \u0026 harmonics for the Custom waveform_ section.\n   Useful for emulating tonewheel organ sounds.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-synth-modulator\"\u003e\u003c/a\u003e\n\n#### Oscillator 1 (Modulator)\n\n##### Subharmonic Amplitude (SUB)\n\nSets how loud the subharmonic oscillator should be. The subharmonic oscillator\nplays a sine wave exactly one octave below the oscillator's main frequency.\n\n\u003ca id=\"usage-synth-carrier\"\u003e\u003c/a\u003e\n\n#### Oscillator 2 (Carrier)\n\n##### Distortion (DIST)\n\nSame as the [distortions](#usage-effects-distortions) on the\n[Effects](#usage-effects) tab, but with polyphonic controller capabilities.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-synth-mpe\"\u003e\u003c/a\u003e\n\n#### MIDI Polyphonic Expression (MPE)\n\n[MPE](https://en.wikipedia.org/wiki/MIDI#MIDI_Polyphonic_Expression) is an\nextension of the [MIDI standard](https://en.wikipedia.org/wiki/MIDI) which\nallows various expressions like pitch bend, channel pressure, timbre control\n(CC 74), etc. to be applied differently to individual polyphonic notes by\nassigning separate MIDI channels for each note.\n\nTo use MPE, you need an MPE-capable MIDI input device, or alternatively, you\ncan use the [MPE Emulator](https://github.com/attilammagyar/mpe-emulator)\nplugin to enhance the functionality of a non-MPE device.\n\nThe MPE protocol dedicates one of the 16 MIDI channels to global messages which\naffect all sounding notes (manager channel), so the remaining up to 15\nchannels can be used for the individual notes (member channels). The manager\nchannel can be either the 1st channel (lower zone) or the 16th channel (upper\nzone). This flexibility allows sharing a single MIDI connection between two MPE\ninput devices and two synthesizers.\n\nThe MPE configuration of JS80P can be set by clicking on or using the mouse\nwheel over the black box next to the MPE label in the header section of\n[Oscillator 1](#usage-synth-modulator). The available options are:\n\n * **OFF**: MPE is not used, all [macros](#usage-macros), expressions,\n   controllers, and MIDI CC are [paraphonic](#usage-polyphony) except when\n   used in [envelope generator](#usage-envelopes) settings.\n\n * **Lo 15** - **Lo 1**: turn on MPE, use channel 1 as the manager channel,\n   and allocate the respective number of lower channels for polyphonic notes.\n   Ignore all messages from the rest of the channels. Voice parameters which\n   accept [envelope generators](#usage-envelopes) (including the settings of\n   the envelope generators themselves), as well as the settings of\n   [low-frequency oscillators](#usage-lfos) which have an amplitude envelope\n   assigned to them, will not be affected by [controller](#usage-controllers)\n   events that originate from any other member channel than their respective\n   one. (Only their own member channel and the manager channel will affect\n   them.)\n\n * **Up 15** - **Up 1**: same as above, but the manager channel is the 16th\n   one, and the member channels are allocated from the upper region.\n\n**Notes**:\n\n * It is not recommended to send `Note On` MIDI messages to JS80P over\n   the MPE management channel, because JS80P copies control messages from the\n   member channels to the manager channel as well (without affecting the other\n   member channels) in order to keep the associated\n   [controllers](#usage-controllers) usable for paraphonic and global\n   parameters as well. (Though this may violate MPE specifications, in practice,\n   it makes it easier to utilize JS80P's capabilities.)\n\n * MPE Configuration Messages (MCM) are ignored, JS80P's MPE settings can only\n   be changed via the user interface.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-effects\"\u003e\u003c/a\u003e\n\n### Effects\n\n\u003ca id=\"usage-effects-volume\"\u003e\u003c/a\u003e\n\n#### Volume Controls\n\n##### Auxiliary Input Volume (Aux In VOL)\n\nTurn this up to mix external audio signal with that from the oscillators before\nentering the effects chain, when JS80P is used as an audio effect.\n\n**Note**: using synthesizer plugins as audio effects is known to be quirky in\nsome host applications, and the behaviour may vary between different plugin\ntypes as well. For example, some versions of REAPER will mix the dry signal\nwith the processed output for VST 2 plugins by default, and some versions of FL\nStudio don't allow sending both MIDI and audio input into the same plugin\ninstance, etc. If JS80P's input processing does not work in your environment\nthe way you want it, you may have to experiment with the tracks and bus layout,\nthe signal routing, and the plugin settings of your host application.\n\n##### Vol 1, Vol 2, Vol3\n\nThere are three volume controls placed at strategic points of the effects\nchain. Their purpose is twofold: they control the loudness of the signal, and\nthey also measure the incoming peaks for the signal loudness based\n[controllers](#usage-controllers).\n\n**Note**: the first volume controller goes up to 200% so that you can boost the\nsignal which is going into the\n[distortion effects](#usage-effects-distortions).\n\n\u003ca id=\"usage-effects-distortions\"\u003e\u003c/a\u003e\n\n#### Distortions\n\n##### Distortion Type\n\nClick on the black box in the header section of the distortion effects, or use\nthe mouse wheel while holding the cursor above it to select the type of\ndistortion:\n\n * **tanh 3x**: gentle saturation or soft clipping.\n\n * **tanh 5x**: more prominent soft clipping.\n\n * **tanh 10x**: heavy distortion.\n\n * **1+3**: harmonic distortion, adding the 3rd harmonic at lower signal\n   levels; soft clipping at higher signal levels.\n\n * **1+5**: harmonic distortion, adding the 5th harmonic at lower signal\n   levels; soft clipping at higher signal levels.\n\n * **1+3+5**: harmonic distortion, adding the 3rd and 5th harmonics at lower\n   signal levels; soft clipping at higher signal levels.\n\n * **square**: harmonic distortion, adding the 3rd and 5th harmonics at lower\n   signal levels, with proportions known from the square wave; soft clipping at\n   higher signal levels.\n\n * **triangle**: harmonic distortion, adding the 3rd and 5th harmonics at lower\n   signal levels, with proportions known from the triangle wave; soft clipping\n   at higher signal levels.\n\n * **bit 1**: band-limited bit crusher-like effect with 2 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 2**: band-limited bit crusher-like effect with 4 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 3**: band-limited bit crusher-like effect with 8 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 4**: band-limited bit crusher-like effect with 16 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 4.6**: band-limited bit crusher-like effect with 24 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 5**: band-limited bit crusher-like effect with 32 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 5.6**: band-limited bit crusher-like effect with 48 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 6**: band-limited bit crusher-like effect with 64 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 6.6**: band-limited bit crusher-like effect with 96 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 7**: band-limited bit crusher-like effect with 128 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 7.6**: band-limited bit crusher-like effect with 192 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 8**: band-limited bit crusher-like effect with 256 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 8.6**: band-limited bit crusher-like effect with 384 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **bit 9**: band-limited bit crusher-like effect with 512 stages at lower\n   signal levels, soft clipping at higher signal levels.\n\n * **reduce**: soft clipping distortion that also slightly reduces the volume\n   of the input signal. (This is what the [Echo](#usage-effects-echo) and the\n   [Reverb](#usage-effects-reverb) effects use internally on the feedback line\n   to make sure that the signal will decay eventually, even with high\n   distortion levels.)\n\n##### Distortion Level (DIST)\n\nThe amount of distortion that is applied to the signal.\n\n\u003ca id=\"usage-effects-filters\"\u003e\u003c/a\u003e\n\n#### Filters\n\nSee [oscillator filters](#usage-synth-common-filter).\n\n\u003ca id=\"usage-effects-tape\"\u003e\u003c/a\u003e\n\n#### Tape\n\nThough this effect is not a proper physical simulation of a tape machine and a\nmagnetic tape with bias, hysteresis, and whatnot, it can help achieve certain\neffects that are usually associated with analog media, like lo-fi wow and\nflutter, slow-down and stop, and tone coloring and saturation.\n\n##### Stop / Start (STOP)\n\nThis parameter can trigger a slow-down and eventually a complete stop: a few\nmilliseconds after it is set to a non-zero value, the virtual tape will\ngradually slow down (thus, the pitch of the sound will drop more and more) and\neventually stop, exactly after the set amount of time which can range from a\nfew milliseconds up to 15 seconds. (Since this is quite a wide range, using\n[macros](#usage-macros) with an appropriate range and distortion curve can\nimprove the controllability and the customization of this parameter.)\n\nOnce the tape is stopped, it can be started again in two ways:\n\n * increasing the value of the Stop / Start parameter will immediately start\n   the virtual tape again which will immediately catch up with reality,\n\n * or setting the value of Stop / Start to zero and then setting it to a\n   non-zero value again will make the tape fast-forward, and eventually catch\n   up with reality after the set amount of time.\n\nOnce the tape has started slowing down, the stopping process can be canceled\nby decreasing the Stop / Start parameter, which will immediately result in a\nshort fast-forward. On the other hand, if the Stop / Start parameter is\nincreased while the tape is slowing down, it will trigger a completely new\nslow-down and stop process.\n\nChanging the Stop / Start parameter during fast-forwarding will trigger a new\nfast-forward process.\n\nAfter a stop-start sequence is completed, the tape will no longer react to\nchanges of the Stop / Start parameter until its value is set to zero.\n\nThe tape stop and start effect can also be [automated](#faq-automation): assign\na MIDI controller (CC) (optionally through a [macro](#usage-macros)) to the\nStop / Start parameter, and automate that in the host application.\n\n\u003ca id=\"usage-effects-tape-wnf\"\u003e\u003c/a\u003e\n\n##### Wow and Flutter Amplitude (W\u0026amp;F)\n\nEven the most precise analog tape machines have some amount of fluctuation in\ntheir tape speed due to various physical limitations. Slow variations are\ncalled wow, faster variations are called flutter, but they usually appear\ntogether. A small amount of this is usually not noticeable, but e.g. if the\nmachine is set up incorrectly or the tape is breaking down, then the variation\nof playback speed can produce audible pitch and tempo variations which have a\ncertain vibe to them that might be used artistically.\n\nThis parameter controls how much wow and flutter is simulated by JS80P.\n\n##### Wow and Flutter Speed\n\nThe first little screw in the header section of the Tape effect controls the\nspeed of the [wow and flutter](#usage-effects-tape-wnf).\n\n##### Stereo Wow and Flutter Speed\n\nThe second little screw in the header section of the Tape effect controls the\nvariation of the [wow and flutter](#usage-effects-tape-wnf) between the two\nstereo channels.\n\n##### Saturation Type\n\nThe black box in the header section of the Tape effect can be used for\nselecting the type of distortion applied by the tape simulation. See the\ndocumentation of the [distortion effect](#usage-effects-distortions) for the\ndetails.\n\n##### Saturation Level (SAT)\n\nThe amount of distortion that is applied to the signal.\n\n##### Color (CLR)\n\nPhysical tape machines rarely have a flat frequency response; the actual curve\ndepends on the type and speed of the tape, and several other factors. This\nparameter mimics some of the frequency response irregularities of tape: when\nset to values below 100%, the sound gets darker, while above 100%, it gets\nbrighter.\n\n##### Hiss Level\n\nThe second little screw in the header section of the Tape effect controls how\nmuch noise should be produced by the virtual tape.\n\n##### Position at End of Chain (END)\n\nWhen this toggle is turned off, then the tape simulation is placed between the\nsecond [volume control](#usage-effects-volume) and the\n[Chorus](#usage-effects-chorus) effect. This setup mimics the scenario of\nrecording an instrument to tape, and then adding various effects to it later\nduring the mixing process. This way, subsequent effects can react to tape stops\nas well.\n\nWhen this toggle is turned on, then the tape simulation is moved to the end of\nthe effects signal chain, right between the [Reverb](#usage-effects-reverb)\nand the last [volume control](#usage-effects-volume). With this setup, a tape\nstop will also include the echo and reverb tails.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-effects-chorus\"\u003e\u003c/a\u003e\n\n#### Chorus\n\nThe chorus effect mixes a signal with slightly delayed copies of itself, and\nmodulates the delay times with low-frequency oscillators so that the cloned\nsignals have a subtle variation in their phase and pitch relative to the\noriginal signal and to each other. This creates the illusion of having many\ndifferent instances of the signal, making it sound bigger and fatter.\n\n##### Logarithmic High-pass Filter Q Factor (LG Q)\n\nThe first component in the Chorus effect is a high-pass filter, in order to\ncontrol the low end of the sound, and to avoid bass frequencies becoming muddy.\nThis toggle switch makes the resonance parameter of the high-pass filter use a\nlogarithmic scale instead of a linear scale.\n\n##### Logarithmic LFO Frequency (LG LFO FREQ)\n\nSwitch between a linear and a logarithmic scale for the\n[LFO frequency (FREQ)](#usage-effects-chorus-freq) parameter.\n\n##### Logarithmic Filter Cutoff Frequencies (LG FILTER FREQS)\n\nSwitch between a linear and a logarithmic scale for the high-pass\nfilter at the beginning of the Chorus effect's signal chain, and for the\nhigh-shelf filter near the end of it.\n\n##### Tempo Synchronization (BPM SYNC)\n\nTurn on tempo synchronization for the low-frequency oscillators and the delays\nin the effect, so that what they normally measure in terms of seconds will be\nmeasured in terms of beats instead. (This only works in hosts which provide\ntempo information to plugins.)\n\n**Note**: in order to prevent the memory that is allocated for delay buffers\nfrom growing arbitrarily large, JS80P will not go below 30 BPM for tempo\nsynchronization.\n\n##### High-pass Filter Cutoff Frequency (HP F)\n\nSet the cutoff frequency of the high-pass filter that is at the beginning of\nthe signal chain of the effect in order to keep it from making bass frequencies\ntoo muddy.\n\n##### High-pass Filter Cutoff Frequency (HP Q)\n\nSet the resonance of the high-pass filter that is at the beginning of\nthe signal chain of the effect.\n\n##### Type (TYPE)\n\nSelect the chorus type. Different chorus types feature a different number of\nvoices (ranging from 3 up to 7) which are arranged in various different\npositions in the stereo field (with regards to the\n[WIDTH](#usage-effects-chorus-wid) parameter as well), with various different\nloudness values, etc.\n\n##### Delay Time (DEL)\n\nThe maximum time by which the chorus voices are lagging behind the main voice.\n\n\u003ca id=\"usage-effects-chorus-freq\"\u003e\u003c/a\u003e\n\n##### LFO Frequency (FREQ)\n\nControl how quickly the lag of each chorus voice varies.\n\n##### Depth (DPT)\n\nControl how much the chorus voices vary their lag behind the main voice.\n\n##### Dampening Frequency (DF)\n\nChorus voices are sent into a high-shelf filter which can be used for\nattenuating higher frequencies, making the chorused sound warmer, darker.\nThis parameter sets the cutoff frequency of the filter.\n\n##### Dampening Gain (DG)\n\nControl how much the high-shelf filter attenuates high frequencies.\n\n##### Feedback (FB)\n\nTell how loud the output of the effect is to be mixed back into its input. Be\ncareful with this, because too much feedback can lead to a loud runaway signal\nfeedback loop.\n\n\u003ca id=\"usage-effects-chorus-wid\"\u003e\u003c/a\u003e\n\n##### Stereo Width (WID)\n\nSet the stereo spread of the chorus. When set to 0%, all the voices are placed\nin the middle of the stereo field.\n\n##### Wet Volume (WET)\n\nControl the loudness of the chorused signal.\n\n##### Dry Volume (DRY)\n\nControl the loudness of the original, unmodified input signal.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-effects-echo\"\u003e\u003c/a\u003e\n\n#### Echo\n\nThe Echo effect repeats the input signal with a delay, optionally reversed,\nwith various levels of filtering and distortion, and with side-chain\ncompression or expansion (gate).\n\nThe effect is built around two sequentially connected delay lines; the output\nof the second second one is fed back into the first one.\n\n##### Delay 1 Reversed\n\nReverse the first delay line. In reverse mode, a delay line collects a length\nof sound from its input corresponding to the\n[Delay Time](#usage-effects-echo-time) setting, then plays it backwards while\ncollecting the next chunk from the input. To avoid unpleasant artifacts, a\nshort attack and release envelope is applied to each segment. Changing the\ndelay time will not interrupt the currently played chunk, but will affect its\nplayback speed, and thus, its pitch.\n\n##### Delay 2 Reversed\n\nReverse the second delay line. Various combinations of reversed and normal\ndelay lines can result in interesting rhythmic effects.\n\n##### Logarithmic High-pass Filter Q Factor (LG Q)\n\nThe first component in the Echo effect is a high-pass filter, in order to\ncontrol the low end of the sound, and to avoid bass frequencies becoming muddy.\nThis toggle switch makes the resonance parameter of the high-pass filter use a\nlogarithmic scale instead of a linear scale.\n\n##### Logarithmic Filter Cutoff Frequencies (LG FILTER FREQS)\n\nSwitch between a linear and a logarithmic scale for the high-pass\nfilter at the beginning of the Echo effect's signal chain, and for the\nhigh-shelf filter near the end of it.\n\n##### Tempo Sync (BPM SYNC)\n\nTurn on tempo synchronization for the delay lines in the effect, so that time\nwill be measured in terms of beats instead of in terms of seconds. (This only\nworks in hosts which provide tempo information to plugins.)\n\n**Note**: in order to prevent the memory that is allocated for delay buffers\nfrom growing arbitrarily large, JS80P will not go below 30 BPM for tempo\nsynchronization.\n\n##### Input Volume (IN V)\n\nControl the input signal level for the effect. This parameter goes from 0% to\n200%, so that the signal can be boosted for the\n[distortion](#usage-effects-echo-dist) that is built into the effect.\n\n##### High-pass Filter Cutoff Frequency (HP F)\n\nSet the cutoff frequency of the high-pass filter that is at the beginning of\nthe signal chain of the effect in order to keep it from making bass frequencies\ntoo muddy.\n\n##### High-pass Filter Cutoff Frequency (HP Q)\n\nSet the resonance for the high-pass filter that is at the beginning of\nthe signal chain of the effect.\n\n\u003ca id=\"usage-effects-echo-time\"\u003e\u003c/a\u003e\n\n##### Delay Time (DEL)\n\nSet how long the echo signal will lag behind the original signal.\n\n**Note**: to simulate the feel of old tape delays, assign an [LFO](#usage-lfos)\nto the delay time parameter which is set to oscillate very slowly, with a\nreally low amplitude, and maybe with a tiny bit of randomization.\n\n\u003ca id=\"usage-effects-echo-dist\"\u003e\u003c/a\u003e\n\n##### Distortion (DIST)\n\nAdd some saturation or soft clipping distortion to the delayed signal. This can\nalso come handy for simulating slightly overdriven analog tape delay effect\nunits.\n\n##### Dampening Frequency (DF)\n\nThe delayed signal is sent into a high-shelf filter which can be used for\nattenuating higher frequencies, making the echo sound warmer, darker.\nThis parameter sets the cutoff frequency of the filter.\n\n##### Dampening Gain (DG)\n\nControl how much the high-shelf filter attenuates high frequencies.\n\n##### Feedback (FB)\n\nTell how loud the output of the effect is to be mixed back into its input. Be\ncareful with this, because too much feedback can lead to a loud runaway signal\nfeedback loop.\n\n##### Stereo Width (WID)\n\nSet the stereo spread of the echos. The further away this value is from 0%, the\nfurther from the center the echos will be, bouncing back and forth between the\nright and left speaker.\n\n\u003ca id=\"usage-effects-echo-cm\"\u003e\u003c/a\u003e\n\n##### Side-chain Compression Mode\n\nClick on the black box in the header section of the Echo effect above the\n[compression parameters](#usage-effects-echo-cth) or use the mouse wheel while\nholding the cursor above it to select the operating mode of the compressor:\n\n * **COMP**: compression, the volume of the echo is reduced while the dry\n   signal is above the [threshold](#usage-effects-echo-cth), so that the sound\n   can be crystal clear while also letting the echo tail be loud and long once\n   the dry signal stops.\n\n * **EXPD**: expansion, the volume of the echo is reduced when the dry signal\n   goes below the [threshold](#usage-effects-echo-cth), so the sound can be\n   very atmospheric while allowing precise control over the echo tail length\n   and drop-off.\n\n\u003ca id=\"usage-effects-echo-cth\"\u003e\u003c/a\u003e\n\n##### Side-chain Compression\n\nThe following information applies when the\n[side-chain compression mode](#usage-effects-echo-cm) is set to **COMP**.\n\n###### Side-chain Compression Threshold (CTH)\n\nThreshold for the side-chain compression: when the input signal goes above this\nlevel, the effect will reduce the volume of the echos in order to keep them\nfrom stealing the spotlight from the original signal in the mix.  Once the\ninput signal goes below the threshold, the echos will be brought up to their\nintended level.\n\n###### Side-chain Compression Attack Time (CATK)\n\nSet how fast or how slow the compression should kick in when the raw signal\ngoes above the threshold.\n\n###### Side-chain Compression Release Time (CREL)\n\nSet how fast or how slow the compression should bring back the echo signal to\nits normal level once the raw input signal goes below the threshold.\n\n###### Side-chain Compression Ratio (CR)\n\nControl the amount of compression that is applied to the echo signal based on\nthe loudness of the raw input signal.\n\nFor example, if the threshold is -11 dB, and the input signal is -5 dB, then\nthe input is 6 dB louder than the threshold, because `-11 + 6 = -5`. A\ncompression ratio of 3 will turn this 6 dB difference into `6 / 3 = 2` dB, so\nthe target gain will be `-11 + 2 = -9` dB, which means a -4 dB signal\nreduction. The trick with side-chaining is that the necessary loudness\nreduction is calculated for one signal, but applied to another; in this case,\nthe echo signal is the one which gets the -4 dB reduction, in order to let the\nraw sound shine.\n\nLater, if the input signal reaches -2 dB, then the difference from the -11 dB\nthreshold will be 9 dB. Since `9 / 3 = 3`, and `-11 + 3 = -8`, the -2 dB signal\nwill need a -6 dB reduction in order to hit the -8 dB signal level. Therefore,\na reduction of -6 dB will be applied to the echo signal.\n\nThen when the input signal goes below -11 dB, no more loudness reduction will\nbe applied to the echo signal.\n\n##### Side-chain Expansion (Gate)\n\nThe following information applies when the\n[side-chain compression mode](#usage-effects-echo-cm) is set to **EXPD**.\n\n###### Side-chain Expansion Threshold (CTH)\n\nThreshold for the side-chain expansion: when the input signal goes below this\nlevel, the effect will reduce the volume of the echos in order to control the\necho tail. Once the input signal goes above the threshold, the echos will be\nbrought up to their intended level together with it to make the sound more\natmospheric.\n\n###### Side-chain Expansion Attack Time (CATK)\n\nSet how fast or slow the echos reach their maximum volume when the raw signal\ngoes above the threshold. Longer attack values can help clean up the transients\nof the dry signal.\n\n\u003ca id=\"usage-effects-echo-erel\"\u003e\u003c/a\u003e\n\n###### Side-chain Expansion Release Time (CREL)\n\nSet how fast or slow the echo tail decays when the dry signal goes below the\nthreshold.\n\n###### Side-chain Expansion Ratio (CR)\n\nControl the amount of volume reduction that is applied to the echo signal based\non the loudness of the raw input signal.\n\nFor example, if the threshold is -11 dB, and the input signal is -16 dB, then\nthe input is 5 dB below the threshold, because `-11 - 5 = -16`. An expansion\nratio of 2 will turn this 5 dB difference into a `5 * 2 = 15` dB difference,\nso the target gain will be `-11 - 10 = -21` dB, which means a -7 dB signal\nreduction. The trick with side-chaining is that the necessary loudness\nreduction is calculated for one signal, but applied to another; in this case,\nthe echo signal is the one which gets the -7 dB reduction.\n\nWhen the dry signal goes completely silent, then its volume will be infinitely\nlower than the threshold, therefore the echo effect also goes silent. The speed\nof its decay will be determined by the [release](#usage-effects-echo-erel)\nparameter.\n\n##### Wet Volume (WET)\n\nControl the loudness of the echo signal.\n\n##### Dry Volume (DRY)\n\nControl the loudness of the original, unmodified input signal.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-effects-reverb\"\u003e\u003c/a\u003e\n\n#### Reverb\n\nThe Reverb effect combines multiple delay lines to simulate sound reflections\nthat can be heard in various rooms, optionally with various levels of filtering\nand distortion, and with side-chain compression or expansion (gate).\n\nThe signal chain is similar to the one in the\n[Echo effect](#usage-effects-echo), so many of the parameters work the same way\nas described there.\n\nOnly the parameters that are unique to the Reverb effect are listed below.\n\n##### Type (TYPE)\n\nSelect from various distributions and numbers of reflections, ranging from\nsmall rooms with just a handful of reflection points, to large cathedrals with\nmany spread out reflections.\n\n##### Room Size (SIZE)\n\nControl the size of the room, ie. how long it takes for reflections to be\naudible.\n\n##### Room Reflectivity (REFL)\n\nControl how reflective the room is, in other words, how loud are the sounds\nthat bounce off its walls. The higher this value, the longer it takes for the\nreverberation to decay into silence after the raw input signal goes quiet.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-macros\"\u003e\u003c/a\u003e\n\n### Macros (MC)\n\nMacros are [controllers](#usage-controllers) that can combine and transform\nother momentary value based controllers, like\n[MIDI CC](https://midi.org/midi-1-0-control-change-messages), pitch wheel\nposition, and even other macros. Basic controllers like the modulation wheel of\na MIDI keyboard go from 0% to 100% on a linear scale. Macros can (for example)\nmake it go from 80% down to 30% and use a non-linear curve in between.\n\nThe typical usage of a macro is to assign a controller to its\n[input (IN)](#usage-macros-in) parameter, set up the minimum, maximum,\ndistortion, etc.  parameters, and then assign the macro to an oscillator,\nfilter, effect, envelope, or LFO parameter. Assigning various other controllers\n(e.g. note value, velocity, other macros, etc.) to the parameters of a macros\ncan result in interesting and creative interactions between controllers.\n\n#### Midpoint\n\nMove the mouse cursor over the first function graph icon at the top right\ncorner of a macro, and start moving it while holding the left mouse button\ndown, or start using the mouse wheel to adjust the midpoint of the macro's\n[input](#usage-macros-in).\n\nThis is most useful when the input of the macro is associated with the pitch\nbend wheel of a MIDI keyboard, and you want precise control over the range that\nis covered by the lower and the upper half of the wheel's movement.\n\nExample: assign the pitch wheel to the [Input](#usage-macros-in) of Macro 1,\nand set its Midpoint to 75%. Now if you assign Macro 1 to a knob, then\nwhen the pitch wheel is at 50%, the knob's position will be at 75%. Moving the\npitch wheel from 50% to 0% will make the knob move from 75% to 0%, and the\npitch wheel's movement between 50% and 100% will move the knob from between 75%\nand 100%.\n\n#### Distortion Curve\n\nClick on the second function graph icon at the top right corner of a macro, or\nuse the mouse wheel while holding the mouse cursor over it to select the\nnon-linearity curve that the macro will use when its\n[distortion (DIST)](#usage-macros-dist) parameter is set to a value above 0%.\n\n\u003ca id=\"usage-macros-in\"\u003e\u003c/a\u003e\n\n#### Input (IN)\n\nAssign the controller that you want to transform via the macro to this\nparameter.\n\n\u003ca id=\"usage-macros-min\"\u003e\u003c/a\u003e\n\n#### Minimum Value (MIN)\n\nThe macro will output this value when either its [input](#usage-macros-in) or\nits [scale](#usage-macros-scl) parameter is at the 0% position.\n\n\u003ca id=\"usage-macros-max\"\u003e\u003c/a\u003e\n\n#### Maximum Value (MAX)\n\nThe macro will output this value when both its [input](#usage-macros-in) and\nits [scale](#usage-macros-scl) parameters are at the 100% position.\n\n\u003ca id=\"usage-macros-scl\"\u003e\u003c/a\u003e\n\n#### Scale (SCL)\n\nScale the [input](#usage-macros-in) by this amount.\n\n\u003ca id=\"usage-macros-dist\"\u003e\u003c/a\u003e\n\n#### Distortion (DIST)\n\nTell how far the macro should diverge from the linear path between its\n[minimum](#usage-macros-min) and [maximum](#usage-macros-max) values.\n\n#### Randomness (RAND)\n\nSet how much the macro's value should be randomized while still staying between\nthe [minimum](#usage-macros-min) and [maximum](#usage-macros-max) values.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-envelopes\"\u003e\u003c/a\u003e\n\n### Envelope Generators (ENV)\n\nAn envelope generator is a [controller](#usage-controllers) that shapes the\nsound over time by defining target values for parameters which will be reached\nin a given amount of time after a note is triggered.\n\nMany of the [synthesis parameters](#usage-synth) are polyphonic, which means\nthat each simultaneously playing voice can use different values and run\ntheir own individual timeline for those parameters, as long as an envelope is\nassigned to them.\n\nEnvelopes in JS80P use DAHDSR stages to reach four different values for their\nassigned parameters:\n\n * **Delay**: when a note is triggered, the parameter will stay on the initial\n   level for this amount of time.\n\n * **Attack**: the parameter will reach the peak level in this amount of time.\n\n * **Hold**: the parameter will stay on the peak level for this long.\n\n * **Decay**: the parameter will reach the sustain level in this amount of\n   time.\n\n * **Sustain**: once the D-A-H-D stages are complete, the parameter will stay\n   on the sustain level until the note is stopped. (If the sustain level is 0%,\n   then JS80P will automatically release the note when this stage is reached.)\n\n * **Release**: once the note is stopped, the parameter will take this long to\n   reach the final level.\n\n**Note**: when an envelope is assigned to an amplitude or volume parameter, it\nis recommended to have its initial and final level be set to 0%.\n\nThe transitions between values can take various different shapes:\n\n * **Linear**: follow a straight line towards the target value.\n\n * **Smooth-smooth**: start slowly, then pick up some speed, and then slow down\n   again before landing on the target value.\n\n * **Smooth-sharp**: start slowly, then as the time to reach the target value\n   starts to run out, pick up more and more speed, and reach it quickly.\n\n * **Sharp-smooth**: start quickly, then as the target value is getting closer,\n   slow down and land on it gently and smoothly.\n\n * **Sharp-sharp**: start quickly, then lose momentum near the midpoint, and\n   when the time to reach the target value starts to run out, pick up the speed\n   again and reach it quickly.\n\nEach non-linear shape has 3 different versions with various steepness.\n\n#### Attack Shape\n\nThe first icon in the header row of envelope settings selects the shape that\ndefines how the envelope will go from the initial level to the peak level.\nClick on it to select a different shape, or use the mouse wheel while holding\nthe cursor over it.\n\n#### Decay Shape\n\nThe second icon in the header row of envelope settings selects the shape that\ndefines how the envelope will go from the peak level to the sustain level.\nClick on it to select a different shape, or use the mouse wheel while holding\nthe cursor over it.\n\n#### Release Shape\n\nThe third icon in the header row of envelope settings selects the shape that\ndefines how the envelope will go from the sustain level to the final level.\nClick on it to select a different shape, or use the mouse wheel while holding\nthe cursor over it.\n\n\u003ca id=\"usage-envelopes-update\"\u003e\u003c/a\u003e\n\n#### Update Mode\n\nWhen a note is triggered and a voice starts to track its own envelope timeline\nfor a parameter, its default behaviour is to capture a snapshot of the envelope\nsettings at that moment, and run the envelope generator with those values.\nChanging the envelope settings after this moment has no effect at all on\nalready engaged voices while they are playing. This behaviour can be adjusted\nby selecting a different update strategy by clicking on the box next to the\ntransition shapes, or using the mouse wheel while holding the cursor over it.\nThe available options are:\n\n * **STA**: static envelope: the default behaviour where the envelope settings\n   are never updated by voices while they are playing a note.\n\n * **END**: the same as the static mode, except that the envelope settings\n   snapshot is updated once when the note is released.\n\n * **DYN**: dynamic envelope: the voice will continuously update the envelope\n   snapshot, and adjust the controlled parameter's value so that it converges\n   to the level where it should be according to the momentary state of the\n   envelope settings.\n\n * **LST**: same as **DYN**, but the envelope snapshot is updated only for the\n   voice which corresponds to the last pressed MIDI key that is still pressed\n   at a given moment.\n\n * **OLD**: same as **DYN**, but the envelope snapshot is updated only for the\n   voice which corresponds to the MIDI key that was pressed first among the\n   keys which are pressed at a given moment.\n\n * **LOW**: same as **DYN**, but the envelope snapshot is updated only for the\n   voice which corresponds to the lowest MIDI key among the keys which are\n   pressed at a given moment.\n\n * **HI**: same as **DYN**, but the envelope snapshot is updated only for the\n   voice which corresponds to the highest MIDI key among the keys which are\n   pressed at a given moment.\n\n##### Semi-polyphonic Aftertouch and Other Controllers\n\nThe **LST**, **OLD**, **LOW**, and **HI** envelope update modes make it\npossible to emulate semi-polyphonic aftertouch, even if the MIDI keyboard does\nnot have polyphonic aftertouch functionality:\n\n * Set all the levels of the envelope to 100%.\n\n * Assign the Channel Aftertouch controller to the\n   [scale](#usage-envelopes-scl) parameter of the envelope.\n\n * Select the desired update mode.\n\nAny sound parameter that is controlled by such an envelope generator will\nbecome semi-polyphonic. Of course, you can use other\n[controllers](#usage-controllers), MIDI CC, or [macros](#usage-macros) instead\nof aftertouch.\n\n**Notes**:\n\n * The semi-polyphonic envelope update modes above are based on the pressed\n   MIDI keys, not the currently sounding voices, which means that they don't\n   take into account notes that are only held by the sustain pedal or by the\n   [hold modes](#usage-synth-main-nh).\n\n * In some scenarios, the semi-polyphonic envelope update modes above don't\n   behave exactly as one would expect from real polyphonic aftertouch. For\n   example, if the status of a voice changes because of a newly pressed key,\n   then that voice may continue sounding with the envelope settings stuck the\n   way they were when the new key was pressed. This happens when the newly\n   pressed key changes the status of an active voice in a way which no longer\n   allows updating the envelope settings for that voice. (E.g. the voice that\n   used to belong to the last pressed key is no longer the last when a new note\n   is triggered.)\n\n#### Tempo Synchronization (BPM)\n\nThe time interval of each stage will be measured in terms of beats instead of\nin seconds if the host provides tempo information to the plugin.\n\n#### Time Inaccuracy\n\nThe first little screw in the top right corner of envelope settings adds\nrandomization to envelope stage lengths. Useful for simulating imperfectness of\nanalog hardware.\n\n#### Level Inaccuracy\n\nThe second little screw in the top right corner of envelope settings adds\nrandomization to envelope levels. Useful for simulating imperfectness of analog\nhardware.\n\n\u003ca id=\"usage-envelopes-scl\"\u003e\u003c/a\u003e\n\n#### Scale (SCL)\n\nScales all four levels of the envelope.\n\n#### Initial Level (INI)\n\nThe level where the envelope starts.\n\n#### Peak Level (PEAK)\n\nTarget level for the Attack stage.\n\n#### Sustain Level (SUS)\n\nTarget level for the Decay stage.\n\n#### Final Level (FIN)\n\nTarget level for the Release stage.\n\n#### Delay Time (DEL)\n\nHow long the envelope will stay on the initial level before the Attack stage\nbegins.\n\n#### Attack Time (ATK)\n\nHow long it will take to reach the peak level from the initial level.\n\n#### Hold Time (HOLD)\n\nHow long the envelope will stay on the peak level.\n\n#### Decay Time (DEC)\n\nHow long it will take to reach the sustain level from the peak level.\n\n#### Release Time (REL)\n\nHow long it will take to reach the final level from the value where the\nparameter is at when the Note Stop event is received.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-lfos\"\u003e\u003c/a\u003e\n\n### Low-Frequency Oscillators (LFOs)\n\nA low-frequency oscillator (LFO) is a controller which makes a parameter's\nvalue oscillate back and forth between two values.\n\n#### Logarithmic Frequency (LG FREQ)\n\nToggle the [frequency](#usage-lfos-freq) parameter of the LFO between a\nlogarithmic and a linear scale.\n\n\u003ca id=\"usage-lfos-center\"\u003e\u003c/a\u003e\n\n#### Center (CENTER)\n\nMake the LFO oscillate around the midpoint of the [minimum](#usage-lfos-min)\nand [maximum](#usage-lfos-max) values instead of between the two extremes.\nThis makes a difference when the [amplitude](#usage-lfos-amp) parameter of the\nLFO is set to a value below 100%: by default, the LFO will oscillate above the\nminimum value, and it won't reach the maximum, but when the LFO is centered, it\nwill not reach either extremes, it will stay within a radius of the midpoint\nwhich is half the value of the amplitude parameter. (This is similar to the\nunipolar/bipolar LFO modes in other synthesizers.)\n\n\u003ca id=\"usage-lfos-ampenv\"\u003e\u003c/a\u003e\n\n#### Amplitude Envelope (AMP ENV)\n\nClick on the black box next to the [centering](#usage-lfos-center) switch in\nthe header row of an LFO, or use the mouse wheel while holding the cursor above\nit to associate an [envelope generator](#usage-envelopes) with the LFO. When an\nLFO with an amplitude envelope is assigned to a\n[synthesis parameter](#usage-synth) that can accept control from envelope\ngenerators as well, then each voice will run their own envelope and LFO\ntimeline for that parameter when a new note is triggered.\n\nFurthermore, if a parameter of an LFO which has an amplitude envelope is\ncontrolled by another LFO which also has an amplitude envelope, then each new\nnote will have its own timeline for both of those LFOs and envelopes. (Up to 6\ntimelines can be maintained by each parameter for each voice. When that limit\nruns out, or when there's a dependency cycle between LFOs, then some of the\nLFOs will be run paraphonically, as if there was no envelope assigned to them.)\n\n**Note**: when the LFO is assigned to a parameter which doesn't accept control\nfrom envelope generators, then the amplitude envelope has no effect.\n\n\u003ca id=\"usage-lfos-bpm\"\u003e\u003c/a\u003e\n\n#### Tempo Synchronization (BPM SYNC)\n\nThe LFO's [frequency](#usage-lfos-freq) is normally measured in Hertz (Hz)\nwhich means \"cycles per second\". Click on the BPM SYNC switch to change that to\n\"cycles per beat\" instead. (This only works in hosts which provide tempo\ninformation to plugins.)\n\n#### Waveform (WAV)\n\nSame as the [waveform parameter](#usage-synth-common-wav) of the audio-range\noscillators, except that LFOs don't have the \"Custom\" option.\n\n\u003ca id=\"usage-lfos-freq\"\u003e\u003c/a\u003e\n\n#### Frequency (FREQ)\n\nSet how many oscillations to do per second (or per beat, when the\n[BPM SYNC](#usage-lfos-bpm) switch is turned on).\n\n#### Phase (PHS)\n\nShift the (initial) phase of the oscillator.\n\n\u003ca id=\"usage-lfos-min\"\u003e\u003c/a\u003e\n\n#### Minimum Value (MIN)\n\nSet the lowest value of the oscillation. When it is greater than the\n[maximum](#usage-lfos-max) value, then the waveform is flipped upside down.\n\n\u003ca id=\"usage-lfos-max\"\u003e\u003c/a\u003e\n\n#### Maximum Value (MAX)\n\nSet the highest value of the oscillation. When it is less than the\n[minimum](#usage-lfos-min) value, then the waveform is flipped upside down.\n\n\u003ca id=\"usage-lfos-amp\"\u003e\u003c/a\u003e\n\n#### Amplitude (AMP)\n\nSet the amplitude of the oscillation.\n\n#### Distortion (DIST)\n\nDistort the waveform with a soft clipping distortion.\n\n#### Randomness (RAND)\n\nRandomize the waveform.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"usage-gc\"\u003e\u003c/a\u003e\n\n### Voice Management, Garbage Collector\n\nWhen a new note is triggered on a synthesizer that is running out of available\npolyphonic voices, it can do one of two actions:\n\n * ignore the new note completely,\n\n * or \"steal\" a voice, which means that it picks one of the active voices and\n   makes it play the new note instead of the one that it was already playing.\n\nDue to the high number of available polyphonic voices, JS80P usually goes with\nthe first option, except in two cases:\n\n * a monophonic [note handling mode](#usage-synth-main-nh) is selected,\n\n * or both oscillators within a voice go silent and it is unlikely that their\n   sound would come back, which means:\n\n    * the oscillator is not even triggered according to the\n      [split keyboard](#usage-synth-main-mode) configuration,\n\n    * or its amplitude (and in case of [Oscillator 1](#usage-synth-modulator),\n      its subharmonic amplitude) or its volume has no\n      [controller](#usage-controllers) and is configured to be 0%.\n\n    * or its amplitude (and its subharmonic amplitude) or its volume is\n      controlled by an [envelope generator](#usage-envelopes), and it has\n      reached the sustain stage, and both the sustain level and the final level\n      of the envelope are 0%.\n\nIn computing, \"garbage collection\" is a mechanism which automatically releases\nresources (e.g. chunks of memory) that are no longer used by a program,\nallowing the operating system to make them available for other processes. JS80P\ndoes something similar with voices and oscillators which go silent: such\noscillators and voices are stopped and released so that they can be allocated\nfor newly triggered notes.\n\n\u003ca href=\"#toc\"\u003eTable of Contents\u003c/a\u003e\n\n\u003ca id=\"presets\"\u003e\u003c/a\u003e\n\nPresets\n-------\n\nJS80P has a few built-in presets, and in case you don't like your plugin host\napplication's preset browser, you can load and save them as ordinary files. For\neach plugin type, you can find these presets in the `presets` folder in the ZIP\narchive, and you can load them into JS80P by clicking on the _Import Patch_\nicon near the top left corner of the main screen of the plugin.\n\n\u003ca id=\"preset-blank\"\u003e\u003c/a\u003e\n\n### Blank\n\nThe default, empty patch, a blank canvas.\n\n\u003ca id=\"preset-bright-organ\"\u003e\u003c/a\u003e\n\n### Bright Organ\n\nA bright, clean, Hammond-like organ sound. Aftertouch and mod wheel increase\nthe vibrato. The softer you play, the slower the attack, the harder you play,\nthe harder the attack.\n\n\u003ca id=\"preset-chariots-aftertouch\"\u003e\u003c/a\u003e\n\n### Chariots-Aftertouch\n\nA Vangelis-inspired split keyboard patch. Notes below C3 are modulated with\nan inverse sawtooth LFO, notes above C3 get some wavefolding treatment if\nyou use aftertouch. The mod wheel controls the vibrato of notes above C3, and\nthe pitch wheel also affects only these notes.\n\n\u003ca id=\"preset-chariots\"\u003e\u003c/a\u003e\n\n### Chariots\n\nA Vangelis-inspired split keyboard patch. Notes below C3 are modulated with\nan inverse sawtooth LFO, notes above C3 get some wavefolding treatment,\ndepending on the velocity. The harder you play, the longer it takes for the\nwavefolder to kick in. The mod wheel controls the vibrato of notes above\nC3, and the pitch wheel also affects only these notes.\n\n\u003ca id=\"preset-demo-1\"\u003e\u003c/a\u003e\n\n### Demo 1\n\nThe patch from the first demo video of JS80P. The mod wheel makes the sound\nbrighter, the volume knob (CC 7) adjusts the inverse sawtooth LFO which\ncontrols the filter before the wavefolder.\n\n\u003ca id=\"preset-demo-2\"\u003e\u003c/a\u003e\n\n### Demo 2\n\nThe patch from the second demo video of JS80P. This split keyboard patch has\nslow tremolo bass notes below Gb3, with extremely long release (just press a\nkey, and you're good for about 2 measures with your left hand being free, even\nwithout a sustain pedal), and plucky lead notes, with the mod wheel and the\nvolume knob (CC 7) controlling the timbre. (However, it is not recommended\nwith this patch to adjust the mod wheel while a right hand note is playing.)\n\n\u003ca id=\"preset-kalimba\"\u003e\u003c/a\u003e\n\n### Kalimba\n\nA simple kalimba sound with percussive attack and short decay. The sustain\npedal adds more reverb and echo, and lengthens note decay.\n\n\u003ca id=\"preset-rock-organ\"\u003e\u003c/a\u003e\n\n### Rock Organ\n\nA little darker, overdriven Hammond-like organ sound. Aftertouch and mod wheel\nincrease the vibrato. The softer you play, the slower the attack, the harder\nyou play, the harder the attack.\n\n\u003ca id=\"preset-sandstorm\"\u003e\u003c/a\u003e\n\n### Sandstorm\n\nA dirty, harsh, detuned FM lead sound. Mod wheel and aftertouch make it even\ndirtier and harsher.\n\n\u003ca id=\"preset-stereo-saw\"\u003e\u003c/a\u003e\n\n### Stereo Saw\n\nA little bit metallic sounding sawtooth wave. Note velocity slightly affects\nthe timbre, mod wheel and aftertouch add wavefolding. The volume knob\nadjusts an LFO which controls filter resonance.\n\n\u003ca id=\"preset-acid-lead-1\"\u003e\u003c/a\u003e\n\n### Acid Lead 1\n\nSawtooth wave based acid lead sound. Aftertouch and mod wheel increase\nthe vibrato, the sustain pedal lengthens the decay.\n\n\u003ca id=\"preset-acid-lead-2\"\u003e\u003c/a\u003e\n\n### Acid Lead 2\n\nSquare wave based acid lead sound. Aftertouch and mod wheel increase\nthe vibrato, the sustain pedal lengthens the decay.\n\n\u003ca id=\"preset-acid-lead-3\"\u003e\u003c/a\u003e\n\n### Acid Lead 3\n\nAnother sawtooth wave based acid lead sound. Aftertouch and mod wheel increase\nthe vibrato, the sustain pedal lengthens the decay.\n\n\u003ca id=\"preset-bells-1\"\u003e\u003c/a\u003e\n\n### Bells 1\n\nA bright bell sound. Aftertouch and mod wheel increase the vibrato,\nthe sustain pedal lengthens the decay.\n\n\u003ca id=\"preset-bells-2\"\u003e\u003c/a\u003e\n\n### Bells 2\n\nA slightly darker bell sound. Aftertouch and mod wheel increase the vibrato,\nthe sustain pedal lengthens the decay.\n\n\u003ca id=\"preset-flute\"\u003e\u003c/a\u003e\n\n### Flute\n\nA synth flute sound with a couple of tricks: the pitch of the notes decreases\nslightly when they end, and the mod wheel adds a little embellishment to the\nbeginning of each note. Aftertouch adds more emphasis to the note.\n\n\u003ca id=\"preset-fm-womp-1\"\u003e\u003c/a\u003e\n\n### FM Womp 1\n\nA clean FM sound where the modulator and the carrier use different envelopes,\nso the notes start with a slight \"wah\" effect. Aftertouch and mod wheel\nincrease the vibrato. Aftertouch also adds more modulation.\n\n\u003ca id=\"preset-fm-womp-2\"\u003e\u003c/a\u003e\n\n### FM Womp 2\n\nA slightly distorted FM sound where the modulator and the carrier use\ndifferent envelopes, so the notes start with a slight \"wah\" effect. Aftertouch\nand mod wheel increase the vibrato. Aftertouch also adds more modulation,\nmaking the sound brighter and more distorted.\n\n\u003ca id=\"preset-fm-womp-3\"\u003e\u003c/a\u003e\n\n### FM Womp 3\n\nA more distorted FM sound where the modulator and the carrier use different\nenvelopes, so the notes start with a slight \"wah\" effect. Aftertouch and mod\nwheel increase the vibrato. Aftertouch also adds more modulation, making the\nsound brighter and more distorted.\n\n\u003ca id=\"preset-tech-noir-lead-1\"\u003e\u003c/a\u003e\n\n### Tech Noir Lead 1\n\nA brass sound for futuristic sci-fi dystopias with a slower filter sweep at\nthe beginning of notes, depending on note velocity. Mod wheel adds vibrato,\naftertouch adds emphasis and brightness.\n\n\u003ca id=\"preset-tech-noir-lead-2\"\u003e\u003c/a\u003e\n\n### Tech Noir Lead 2\n\nA brass sound for futuristic sci-fi dystopias with a harsher filter sweep at\nthe beginning of notes, depending on note velocity. Mod wheel adds vibrato,\naftertouch adds emphasis and brightness.\n\n\u003ca id=\"preset-tech-noir-lead-3\"\u003e\u003c/a\u003e\n\n### Tech Noir Lead 3\n\nA darker brass sound for futuristic sci-fi dystopias with a filter sweep at\nthe beginning of notes, depending on note velocity. Mod wheel adds vibrato,\naftertouch adds emphasis and brightness.\n\n\u003ca id=\"preset-derezzed\"\u003e\u003c/a\u003e\n\n### Derezzed\n\nThis Daft Punk inspired patch is built around sawtooth waves with lots of\ndistortions. Mod wheel makes upcoming notes brighter (without affecting\nthe currently sounding ones), and it increases the distortion. Aftertouch\nadds vibrato.\n\n\u003ca id=\"preset-ambient-pad-1\"\u003e\u003c/a\u003e\n\n### Ambient Pad 1\n\nSlowly evolving pad sound with sci-fi vibe. The mod wheel destabilizes\nthe tuning, the aftertouch increases that effect, and adds slight distortions.\n\n\u003ca id=\"preset-ambient-pad-2\"\u003e\u003c/a\u003e\n\n### Ambient Pad 2\n\nSlowly evolving pad sound with a dark sci-fi vibe. The mod wheel destabilizes\nthe tuning, the aftertouch increases that effect, and adds slight distortions.\n\n\u003ca id=\"preset-ambient-pad-3\"\u003e\u003c/a\u003e\n\n### Ambient Pad 3\n\nSlowly evolving pad sound with a dark sci-fi vibe. The mod wheel destabilizes\nthe tuning, the aftertouch increases that effect, and adds ghostly, distant\nscreams.\n\n\u003ca id=\"preset-saw-piano\"\u003e\u003c/a\u003e\n\n### Saw Piano\n\nA sawtooth wave based sound where high notes decay quickly, lower notes\ndecay slowly, but decay time is also affected by note velocity. The harder\nyou play, the brighter and richer the timbre, and the harder the note attack.\nMod wheel controls the vibrato, and aftertouch controls filtering. The\nsustain pedal lengthens note decay.\n\n\u003ca id=\"preset-saw-piano-reversed\"\u003e\u003c/a\u003e\n\n### Saw Piano Reversed\n\nA sawtooth wave based sound which sounds like as if you were playing\na recording backwards. The time it takes for notes to un-decay depends on\nnote pitch and velocity. The harder you play, the brighter and richer the\nsound gets. Mod wheel controls the vibrato, aftertouch adjusts the filtering.\n\n\u003ca id=\"preset-nightmare-lead\"\u003e\u003c/a\u003e\n\n### Nightmare Lead\n\nStarts out as a nice, filtered sawtooth wave, but as you begin to turn the mod\nwheel and add some aftertouch, it becomes more and more menacing and distorted,\nuntil it finally descends into madness.\n\n\u003ca id=\"preset-tremolo-lead\"\u003e\u003c/a\u003e\n\n### Tremolo Lead\n\nThick lead sound. Aftertouch adds vibrato and harmonics, mod wheel opens up\nthe filter and adds a tremolo effect. Filtering also responds to note velocity.\n\n\u003ca id=\"preset-monophonic-saw\"\u003e\u003c/a\u003e\n\n### Monophonic Saw\n\nA sawtooth wave based monophonic, sustained sound with smooth legato glides.\nThe harder you play, the brighter and richer the timbre, and the harder the\nnote attack. Mod wheel controls the vibrato, and aftertouch controls the\nfiltering and the wavefolder. The sustain pedal lengthens note decay.\n\n\u003ca id=\"preset-dystopian-cathedral\"\u003e\u003c/a\u003e\n\n### Dystopian Cathedral\n\nPlay softly and this futuristic organ-like patch will sound smooth as butter,\nbut when you start playing with more force, the sound will become angry, fat,\nand in-your-face. The mod wheel increases the level of madness.\n\n\u003ca id=\"preset-gloomy-brass\"\u003e\u003c/a\u003e\n\n### Gloomy Brass\n\nTurn the mod wheel down for a soft, warm, and fat sound, turn it up for\nbrassy swells, distortion, and reverb. Aftertouch adds some harshness and\nvibrato.\n\n\u003ca id=\"preset-gloomy-brass-raindrops\"\u003e\u003c/a\u003e\n\n### Gloomy Brass Raindrops\n\nA version of Gloomy Brass where each note is followed by a raindrop after a\nrandom amount of time.\n\n\u003ca id=\"preset-sawyer\"\u003e\u003c/a\u003e\n\n### Sawyer\n\nRecreation of the iconic bass and lead sound from Tom Sawyer by Rush. Notes\nbelow middle C will do the well-known resonance sweep and then turn into a\ndark growl (which you can spice up with the mod wheel and some aftertouch),\nand notes above middle C will be bright, but will lose much of their\nbrightness while doing a huge vibrato when you turn up the mod wheel or apply\naftertouch. (Note that this is not a split-keyboard patch, because both\noscillators are required to make this sound good in stereo - instead, the\neffect is achieved through trickery with the Triggered Note controller and\nthe Distortion knob of Macro 12 and 13.)\n\n\u003ca id=\"preset-analog-brass-at\"\u003e\u003c/a\u003e\n\n### Analog Brass AT\n\nPlay softly, pianissimo for a soft, smooth, warm, and fat analog brass sound.\nPlay fortissimo and use aftertouch for big bright swells. The mod wheel adds\nvibrato, and the pitch wheel goes from -3 octaves to +1 octave.\n\n\u003ca id=\"preset-analog-brass-mod\"\u003e\u003c/a\u003e\n\n### Analog Brass mod\n\nTurn the mod wheel down and play softly, pianissimo for a soft, smooth, warm,\nand fat analog brass sound. Turn it up and play fortissimo for big bright\nswells. Aftertouch adds vibrato, and the pitch wheel goes from -3 octaves to\n+1 octave.\n\n\u003ca id=\"preset-bouncy\"\u003e\u003c/a\u003e\n\n### Bouncy\n\nThe sound of a ping-pong ball dropping on a glockenspiel, showcasing a use of\nLFO amplitude envelopes.\n\n\u003ca id=\"preset-lo-fi-keys\"\u003e\u003c/a\u003e\n\n### Lo-fi Keys\n\nStarts out as an electric piano drenched in lots of echo and reverb, but the\nmore you turn up the mod wheel, the more unstable the pitch becomes, and the\nmore distortions and fluttering the tape delay produces. Turn up the pitch\nwheel to boost the mids and apply a high-pass filter, and turn it down to slow\ndown the tape delay and lower the pitch of the oscillators. Aftertouch adds a\nbrief flute-like triangle pad sound to the mix. High velocity notes will have\nquick attack, low velocity notes will start slowly.\n\n\u003ca id=\"preset-analog-brass-at-last\"\u003e\u003c/a\u003e\n\n### Analog Brass AT last\n\nA version of the Analog Brass AT preset, demonstrating last note\nsemi-polyphonic aftertouch (channel pressure).\n\n\u003ca id=\"preset-analog-brass-mod-last\"\u003e\u003c/a\u003e\n\n### Analog Brass mod last\n\nA version of the Analog Brass mod preset, demonstrating last note\nsemi-polyphonic aftertouch (channel pressure) being applied to a polyphonic\nLFO.\n\n\u003ca id=\"preset-dystopiano\"\u003e\u003c/a\u003e\n\n### Dystopiano\n\nA soft electric piano bathed in lo-fi reverb and tempo-synced echo, with one\nof the delay lines going backwards, creating weird and eerie sounds,\nespecially with slow tempos and short, staccato notes. The mod wheel increases\nthe width and the intensity of the echos, aftertouch boosts them even more.\nThe pitch wheel, rather than changing the pitch of the oscillators, tweaks the\ndelay time and the modulation of the effects, resulting in various chirps and\nsweeps.\n\n\u003ca id=\"preset-expressive-saw\"\u003e\u003c/a\u003e\n\n### Expressive Saw\n\nAn analog sawtooth lead sound where low velocity, pianissimo notes have slow\nattack and release, and high velocity, fortissimo notes have an extremely\nquick attack and a quick release. On top of that, note velocity also controls\nthe filter envelope, so the harder you play, the brighter the sound gets. The\nmod wheel first opens up a global filter, then starts brightening t","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fattilammagyar%2Fjs80p","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fattilammagyar%2Fjs80p","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fattilammagyar%2Fjs80p/lists"}