A JavaScript emulator of the legendary EMS Synthi A synthesizer.
SYNTHI-JS is an emulator of the legendary EMS Synthi A modular synthesizer, built in JavaScript on top of the Flocking library.
First, open up SYNTHI-JS and take a look around.
SYNTHI-JS can look daunting at first, but creating patches with it is actually quite straightforward. The patchboard functions as a routing mechanism: device outputs on the left side of the patchboard get routed to device inputs on the top side of the patchboard.
Let's make our first patch! Click on the button at B1 at the patchboard to connect the sine-wave output of Oscillator 1 to Output Channel 1. You should hear a 440 Hz sine wave coming out of your left speaker – congratulations!
We can now try messing around with it a little. Try plugging the oscillator first into another component - perhaps the filter or the reverb module, and then try plugging that into an output channel (for example, G1 and B14). Try turning some knobs to alter the sound. Or perhaps try mixing two oscillator together into the ring modulator and outputting the result (E1, F3, B13). Try turning some knobs and see how it affects the output.
In addition to hooking up your final output to the Output Channels (columns B and C), you can also hook it up to the Scope (column A) to be able to observe the waveform. The scope is a great tool for debugging issues in your patch.
Now that you have a sense of how the patchboard works, try loading some presets to get a feel for what this thing can do. The presets are currently stored in memory banks
00-
04(and indicated with a
P). Note that preset
02only produces sound when you touch the joystick control.
Another neat way to get started is to upload your own audio tracks to use as input sources. Use the Input Sources panel to upload tracks and (optionally) specify which segments of them you want to work with. Now, you can use the Input Channel pins on the patchboard (rows 8 and 9) as an input source. Try running your tracks through different devices and see what happens.
To learn more, read the SYNTHI-JS manual by clicking the ? button near the patchboard.
SYNTHI-JS is completely client-side and requires no build process. Simply clone the repo, open
index.htmlin your browser (Chrome 45+ recommended), and get started!
I do admit that importing dozens of separate JavaScript files is not the best use of resources. Sometime soon I'd like make a simple build script to concatenate and minify them to speed up load times.
My goal is to make as faithful a reproduction of the Synthi A as possible, but there have been features of it that I have been unable to reproduce, whether because of conceptual difficulties or just lack of time. Here are the ones that I know of at the moment:
It would also be great to fix or reduce the audio buzz that happens while turning knobs or otherwise controlling the UI, but I haven't been able to do anything about it. Perhaps it's a browser limitation?
SYNTHI-JS was created by Alex Nisnevich.
I'd like to thank: * Colin Clark, without whose Flocking library this wouldn't be possible. * the Vintage Synth Museum in Oakland, for showing me my first Synthi A, and Sasha for taking me there. * Jacob Nisnevich, for helping me make the UI look nice. * My beta testers: Greg, Matt, Kyan, Joseph, Tyler, Dmitry, Michael, did I miss anyone?