Jump to content
  • Alex Nisnevich SYNTHI-JS

       (0 reviews)


    SYNTHI-JS is a JavaScript emulation of the legendary EMS Synthi A analog synthesizer.

    SYNTHI-JS is a modular synthesizer that is made up of 11 components: oscillators, filters and so on. The patchboard at the center is used to connect component outputs (listed on the left of the patchboard) to component inputs (listed on the top).

    To hear the output of any component, connect it to one of the Output Ch pins (B and C). You can also visualize the output of any component by connecting it to the Scope pin (A).

    SYNTHI-JS adds a couple features that were not in the original Synthi A: a Memory Bank that can store up to 100 different patches/configurations and export them as text files, and an Input Sources panel that lets you use audio from anywhere on the Internet as an input.

    SYNTHI-JS was built over a period of many months in 2015 and 2016 by Alex Nisnevich, using the Flocking library.

    The Synthi A was a portable analog synthesizer made by EMS (Electronic Music Studios, London). in 1971. The Synthi A, along with the VCS 3 that it was based on, used a highly idiosyncratic design: unlike other analog synthesizers that relied on patch cables to connect components, it used pins in a patchboard matrix.

    As a result, modifying sounds on a Synthi A is a much simpler and more organic procedure than on conventional analog synthesizers. This feature, along with its portability and capacity for unusual noises, made it popular among both progressive rock bands and soundtrack composers.

    Among the most notable uses of the Synthi A are the synthesizer loop in Pink Floyd's "On the Run". The Synthi 100, a large-scale studio version of the VCS/Synthi A, was used heavily by the BBC to create sound effects for The Hitchhikers' Guide to the Galaxy, Doctor Who, and other radio and TV programs.

    SYNTHI-JS can look daunting at first, but creating patches with it is actually quite straightforward.

    This section of the manual covers general operation of SYNTHI-JS - see the next section for information and specifications of each individual synth component (oscillators, filters, etc).

    The Patchboard

    The patchboard connects the outputs of components to the inputs of other components.

    The Scope

    The scope (input B) can be used to observe any given output signal. The scope displays the amplitude of the given signal over time, with the top of the scope representing a control voltage of +6V and the bottom of the scope representing a control voltage of -6V. The frequency of a signal can be observed by watching its movement.

    The Joystick

    The joystick produces two user-controlled signals while the mouse is pressed down on it - one corresponding to the mouse's X-position from the center of the pad and one corresponding to the mouse's Y-position from the center of the pad. By default the signal produced ranges from -1V to +1V, but the Range knobs can be used to make the signal range up to -2V to +2V.

    The Memory Banks

    The memory banks can be used to store up to 100 patches. Clicking the Store button at a given memory location will store the current configuration of SYNTHI-JS (knobs and patchboard pins) into memory. Memory banks that have a patch stored under them are indicated by the letter S.

    The Input Source Selector

    The input source selector can be used to upload audio tracks for playback. Each track loaded this way will play in a loop on the given input channel (pins 8 and 9). You can adjust the playback speed and the start and end points of the track to loop between.

    Oscillator 1

    A sine and ramp (sawtooth) wave oscillator, with a frequency control going from 28 Hz to 7040 Hz. Outputs the sine and ramp waves on rows 1 and 2, respectively, and takes a frequency control input at column I.

    Oscillator 2

    A square and triangle wave oscillator, with a frequency control going from 28 Hz to 7040 Hz. Outputs the square and triangle waves on rows 3 and 4, respectively, and takes a frequency control input at column J.

    Oscillator 3

    A square and triangle wave oscillator, with a frequency control going from 0.025 (1/40) Hz to 512 Hz. Because it outputs such low frequency, it is primarily useful as a control input. Outputs the square and triangle waves on rows 5 and 6, respectively, and takes a frequency control input at column K.

    Noise Generator

    Produces white or grey noise on row 7.

    Ring Modulator

    Takes two inputs at columns E and F and multiplies them together, outputting the result in row 13.


    Removes selected frequencies from its input signal. Depending on the position of the Response control, it can function as a low-pass or band-pass filter or as a very pure sine-wave oscillator. Takes an input signal at column H and outputs a signal on row 10. The filter frequency can be modulated by a control signal at column N.

    Envelope Shaper

    A repeating 4-stage envelope (attack/on/decay/off) that controls the shape of a signal:Takes an input signal at column D and optionally a control signal at column L to modify the Decay time. Outputs the envelope-shaped signal on row 12 and the trapezoid wave itself (for use as a control signal) on row 11. The envelope is self-triggering, but can also be manually triggered with the manual trigger button near the joystick.


    Simulates a spring-driven reverberation unit to make a signal sound as though it's coming through a large room. Takes an input signal at column G and outputs a signal on row 14. The mix amount can be modulated by a control signal at column M.

    Input Amplifiers

    Loops the audio tracks specified in the Input Sources panel, if any, and outputs them in rows 8 and 9 for input channels 1 and 2 respectively.


    Alex Nisnevich
    Operating Systems
    Web: JavaScript
    JavaScript capable browser.
    Product Info
    [+] alexnisnevich.github.io
    [+] github.com
    Year Released

    Related Hardware

      Report App

    User Feedback

    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.


  • Create New...