Monosynth

link code
07/2014
Haxe | Synthesis | Web Audio

This dual-oscillator synth was my first experiment using Web Audio and, as the name suggests, it is a monosynth; It plays one note at a time, and will slide from one held note to the next.

The modular nature of the Web Audio API meant that programming the audio was similar to working with systems like Max/MSP or Reaktor, but without a visual representation of the nodes and routing. I'm happy playing with that stuff, so had fun making this.

The user interface was built with Flambe using the HTML5 target. Play using your (qwerty) keyboard, or by clicking the on-screen keys. The UI knobs and sliders are labelled, so should be fairly self-explanatory, and there are some keyboard controls too.

While I was working on it, the Web Audio APIs were quite changeable, and though support is improving, there are still differences between browsers. As a result, you need to use Chrome for the audio to work. It did work in Firefox for a while, but I stopped maintaining compatibility fixes in order to concentrate on the functionality. I don't think there's a reason it can't work in Firefox - I'll probably pull out the parts I like and update them for use in future projects.

For me, working on little experiments is a great way of learning something new; I'd like to follow this up with more audio projects and make some modular components to help build other fun things.

You can play with it here, and the code is all available on GitHub.

Controls
  • Knob/Slider drag | Change value
  • Knob/Slider drag + Ctrl | Precision value change
  • Knob/Slider double-click | Reset to default
  • Up/Down Arrow | Select a preset (next/prev)
  • Left/Right Arrow | Keyboard octave shift (down/up)
  • F2 | Randomise all settings (careful - can get noisy)
  • F3 | Reset all settings to default
  • F | Fullscreen
Updates
  • 12/2015 | Web MIDI support added