Its name is Viktor, and it’s a synth you can play with for free in a browser – with a mouse, or finger, or keyboard, or even MIDI.

Not news, but – heck of a lot of fun to play with.

Now part of a growing number of Web Audio (and even Web MIDI) synths, the Viktor NV-1 is a surprisingly powerful diversion. You get three oscillators, two envelopes (one for amplitude, one for filter), a filter, LFO, reverb, delay, compressor, and loads of controls.

Because it lives in a browser, it’s also easy to save and share presets with others. So, for instance, here you go:

https://goo.gl/ugqbkT

The developer also has a lovely explanation of how this works:

It’s Built on-top of the Web Audio API (WAA). The WAA is very nicely organized and easy to use. Basically it provides a variety of NodeTypes (responsible for sound generation, editing or analysis) which you combine in your liking, creating a graph through which your sound is being shaped.

Also worth noting – how it was built:

Web Audio API, Web MIDI API, Local Storage (through npm module “store”). For the effects section I used Tuna.js.

AngularJS, webaudio-controls (I am regretting this decision, since these controls are full of bugs and had to fix several of them before releasing), Bootstrap, Font Awesome, Font Orbitron and Stylus is what I used for the UI.

Instead of using Angular alone, for dependency management, I use Browserify, which provides the nice CommonJS format/style of module creation and requiring.

Angular isn’t very Browserify-friendly so I had to do some stitching in my initial setup (browserify-shim, browserify-ng-html2js etc.) but once the setup was ready development really felt a breeze.

Grunt and multiple grunt-contrib-‘s are used for the build (and development rebuild).

I drew the images on Pixelmator.

Try it:

http://nicroto.github.io/viktor/

Or grab the code (fully open source):

https://github.com/nicroto/viktor

The browser synth is the work of Nikolay Tsenkov.

  • Nice find!
    Wonder how hard it’d be to integrate it in other things, for instance by piping the output elsewhere or simply recording some sounds with it.
    Using JSON to share patches is a neat idea. Wish it were possible to, somehow, share patches between synths. Sure, all synths are somewhat different. But it’s also remarkable how many features are shared across several of them, especially in this kind of “virtual analog” mode. One could imagine sharing some basic patch info between this Victor NV-1 synth and, say, Magellan or Sunrizer on iOS.
    My dream is to have a kind of catalog of all my iOS-based patches and presets. Apparently, BigTick’s Zen should do something like this for desktop plugins. But it’d probably make even more sense on iOS, especially with state-saving through AudioBus.
    At any rate, thanks as always for sharing!

  • When will we finally realize how backwards it is to mimic a hardware UI on a screen? Does anyone enjoy or find it easy to try and ‘turn’ a knob with a mouse or trackpad?

  • Thanks for the article Peter. My focus now is completely on my work in UNIVERSLESS (http://universless.com) and while I haven’t done too much on the NV-1 lately, this fall I expect to have our first professional audio product to be out. I can’t say exactly what it is, but I can definitely say I’ve put 4 times as much work, dedication and love into it and if producers and artists like it half as much as I do – it will be a blast! 🙂
    In case someone wants to follow with my work, you can do so on my twitter: https://twitter.com/NikolayTsenkov

    • Phoenix York

      Can’t wait for this.