JavaScript library that emulates the classic Roland Juno-60 synthesizer - using the Web Audio's AudioWorkletProcessor and Web MIDI.
You can change the sliders while you are playing:
- NexusUI-based UI - I have tested this on Chrome (PC and Android), Firefox and Edge. You may need to play a couple of notes before the JavaScript JIT gets going properly.
- Useful visualizations: DCO, LFO, Envelope, and Chorus.
Some of the patches have a the "sweet-spot" on the keyboard or are designed to be used with pitch-bend or the VCF sliders. Examples of the original can be found here.
- Emulation is built using a AudioWorklet. Allows very accurate low-level emulation.
- Oscillator uses PolyBLEP to minimize aliasing (sawtooth, pulse and sub waveforms).
- VCF is implemented using a Virtual Analog ladder filter.
This project is a work-in-progress:
- Ultimately I want to publish the AudioWorklet Node+Processor for easy reuse by other developers using an NPM package (maybe as a WebAudio Module or WebAudio Plug-In).
- Provide integration with a library that implements a sequencer.
- It should be simple to create additional synths (SH-101, Juno-106, JX-3P) based on the code. This would quickly increate the number and variety of pre-baked patches.
- Improve performance and documentation.
If anyone has ideas or feedback then I'm always happy to listen.
This project was originally started by Daniele Zannotti. We chose the Juno-60 because it is a very simple synth that (still) manages to sound really good - and I had previously analysed that synth.