Giter Site home page Giter Site logo

seyutor / js80p Goto Github PK

View Code? Open in Web Editor NEW

This project forked from attilammagyar/js80p

0.0 0.0 0.0 48.81 MB

A MIDI driven, performance oriented, versatile synthesizer plugin.

License: GNU General Public License v3.0

Shell 0.47% C++ 81.06% Python 0.54% C 4.21% Objective-C 1.06% R 0.10% Objective-C++ 8.09% Makefile 0.50% HTML 0.48% CMake 3.45% Batchfile 0.03%

js80p's Introduction

JS80P

A MIDI driven, performance oriented, versatile synthesizer VST plugin.

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

To download JS80P, visit its website at https://attilammagyar.github.io/js80p/.

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

Screenshot of JS80P

Table of Contents

System Requirements

  • Operating System: Windows 7 or newer, or Linux (e.g. Ubuntu 20.04 or newer)
  • CPU: 32 or 64 bit, SSE2 support
  • RAM: 50-200 MB, depending on buffer size

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

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

Tested with REAPER 6.78.

Installation

  1. Download a plugin archive for your platform.
  2. Extract the ZIP archive.
  3. Depending on which plugin type you downloaded, copy js80p.dll on Windows, js80p.so on Linux to the folder where you keep your VST 2.4 plugins, or copy js80p.vst3 (on both Windows and Linux) to your VST 3 folder.

The presets folder in the archive contains a few sounds that you can load by clicking the Import Patch icon near the top left corner of the main screen of the plugin.

Features

  • 16 notes polyphony
  • 2 oscillators with 10 waveforms:
    • sine
    • sawtooth
    • soft sawtooth
    • inverse sawtooth
    • soft inverse sawtooth
    • triangle
    • soft triangle
    • square
    • soft square
    • custom
  • 2 filters for each oscillator, 7 filter types:
    • low-pass
    • high-pass
    • band-pass
    • notch
    • bell (peaking)
    • low-shelf
    • high-shelf
  • portamento
  • wave folder
  • split keyboard
  • amplitude modulation
  • frequency modulation
  • phase modulation
  • built-in effects:
    • overdrive
    • distortion
    • 2 more filters
    • stereo echo
    • stereo reverb
  • 6 envelopes
  • 8 low-frequency oscillators (LFO)
  • configurable MIDI controllers

Signal Chain (Simplified)

                                                    (x16)
Oscillator --> Filter --> Wavefolder --> Filter ---------> Mixer --+
                                              |            ^       |
    (Frequency & Amplitude Modulation)        |            |       |
  +-------------------------------------------+            |       |
  |                                                        |       |
  v                                                 (x16)  |       |
  Oscillator --> Filter --> Wavefolder --> Filter ---------+       |
                                                                   |
+------------------------------------------------------------------+
|
v
Overdrive --> Distortion --> Filter --> Filter --> Echo --> Reverb --> Out

Future Plans

  • LV2 support
  • Aftertouch support

Bugs

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

Frequenctly Asked Questions

Which distribution should I download?

Due to how MIDI works in VST 3 plugins, the recommended distribution for most people is the 64-bit FST plugin which can be loaded into any 64-bit DAW which supports VST 2.4.

If your DAW does not support VST 2.4 however, then you will need the 64-bit VST 3 plugin.

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

If you are in doubt, then try the 64 bit FST version, and if your DAW doesn't recognize it, then try the 64 bit VST 3 version, then the 32 bit FST version, etc.

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

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

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

Where does the name come from?

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

Development

Tools

Linux

Windows

Dependencies

The lib/ directory contains code from the following projects:

Linux

To compile JS80P on e.g. Ubuntu Linux 20.04 for all supported platforms, the following packages need to be installed:

apt-get install \
    binutils \
    build-essential \
    g++ \
    gcc-multilib \
    g++-multilib \
    libcairo2-dev \
    libcairo2-dev:i386 \
    libx11-dev \
    libx11-dev:i386 \
    libxcb1-dev \
    libxcb1-dev:i386 \
    libxcb-render0-dev \
    libxcb-render0-dev:i386 \
    mingw-w64

Compiling

Windows

Assuming that you have installed MinGW-w64 to C:\mingw64, you can use the following commands to run tests and compile JS80P for Windows:

SET PATH=C:\mingw64\bin;%PATH%
SET TARGET_PLATFORM=x86_64-w64-mingw32
SET DEV_OS=windows

mingw32-make.exe check
mingw32-make.exe all

Linux

Run make check for running tests.

The following commands (on a 64 bit Linux environment) will compile JS80P for 64 bit Windows, 32 bit Windows, 64 bit Linux, and 32 bit Linux respectively:

TARGET_PLATFORM=x86_64-w64-mingw32 make all
TARGET_PLATFORM=i686-w64-mingw32 make all
TARGET_PLATFORM=x86_64-gpp make all
TARGET_PLATFORM=i686-gpp make all

Theory

js80p's People

Contributors

attilammagyar avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.