Modular Synthesis Step-by-Step Tutorial

This is a step-by-step tutorial to recreate the modular synth example patch https://www.audionodes.com/s/76GhJpmUE3 from the Getting Started with Modular Synthesis guide. Check it out for the basic concepts if you hadn’t already.

Modular Synthesis Example – https://www.audionodes.com/s/76GhJpmUE3

This tutorial will also explain some basic concepts behind each Node involved in this patch. It’s really simple, but the guide will go into a lot of detail for each step, and is thus a bit longer.


Basics Recap

This tutorial will assume you are familiar with some AudioNodes basics, namely:

  • Creating Nodes — right-click or touch-and-hold on empty editor area, then either use the search, or browse by Node category
    • Hint: Nodes in the Node browser will appear without the -Node suffix, so the Oscillator Node is simply shown as Oscillator, for example
  • Connecting Nodes — drag one Node’s output to another Node’s input (or click/tap an output, then click/tap an input)
  • Accessing Node properties and more options — right click on a Node, then choose properties (on touch screens, tap the Node to reveal its menu at the top)
    • Hint: double clicking is a useful shortcut here

You won’t need additional setup, everything used in this tutorial comes with AudioNodes.


Step 1/4 – MIDI Control Setup

To kick off, we start with a basic MIDI control setup. This can either use a dedicated MIDI keyboard (if you have it), your computer keyboard, or an on-screen keyboard, which comes with AudioNodes:

  • Create a MIDI Keyboard Node
    • This will act as a source of MIDI notes to control the patch
    • Open the Node’s properties to configure which device to use (including your computer keyboard), or to open an on-screen keyboard
  • Create an ADSR Node
    • This will process a simple ADSR sequence (attack, decay, sustain, release) for each note
    • The ADSR Node has a handy output to keep notes triggered until the release phase finishes, helping you avoid notes stopping abruptly
  • Connect your MIDI Keyboard Node to your ADSR Node, creating a green MIDI connection between them

At this stage, you can actually start playing notes and you should see the patch react, though it won’t produce any sound yet:



Step 2/4 – Oscillator Node & Frequency Control

The next step is to take MIDI notes, and actually generate a sound. This is commonly done using a MIDI-to-CV module in most modular synths, connected to a VCO (voltage-controlled oscillator). AudioNodes has equivalent Nodes for these modules, behaving similarly:

  • Create a Note to Pitch Node
    • This Node will output a frequency signal when it receives a note, e.g. 440 for an A4 note
    • This Node is basically an equivalent of a MIDI-to-CV module
  • Create an Oscillator Node
    • This is the heart of your patch: it generates a basic periodic waveform with a provided frequency, acting as the base sound source
    • The Oscillator Node turns on as soon as you place it, though you won’t hear its sound until it’s actually connected to an output, which we’ll do later
    • You can optionally set the wave type by clicking it on the Oscillator Node (or from its properties), the example uses a sawtooth wave, but square is also interesting
  • Connect the ADSR Node’s Melody Hold Output to the newly created Note to Pitch Node
  • Connect the Note to Pitch Node to the Frequency-Control Input on the Oscillator Node
    • The Frequency-Control Input on the Oscillator Node is initially hidden, but when you start connecting, it’ll show up
    • Once you connect to this input, the Oscillator Node will automatically switch to controlled mode, you can undo this from its properties

At this stage, we have an oscillator controlled by keys you press on your MIDI keyboard which is actually generating a sound (though you still won’t hear it at this stage):


Step 3/4 – Envelope & Output

The basic version of this patch now only needs 2 more things: gating the output, and connecting it to your system output:

  • Create a Gain Node
  • Connect your Oscillator Node to your new Gain Node (Audio Input)
  • Connect your ADSR Node’s ADSR Control Output to your Gain Node’s Gain-Control Input
  • Create an Audio Destination Node
    • This special Node will forward its input to your system output, enabling you to actually hear the generated sound
  • Connect your Gain Node to your Audio Destination Node
    • A word of caution here: this patch will produce a full volume waveform for each note, which is very loud, so you might want to lower your system audio before trying a note now

At this point, playing your keyboard will actually produce a (very loud) sound:


Step 4/4 – The Rest

At this point you probably have a really good idea about how to implement the rest of the patch from the full example. So here are a few tips:

  • The Lowpass Filter Node, like the Oscillator Node, can take an input signal to control its frequency, and is used to tune out some very high frequencies
    • It’s best to place the Lowpass Filter Node before the Gain Node, otherwise an ungated frequency change can cause audible glitches
    • Some multiplication is used to raise the Lowpass Filter Node’s frequency above the oscillator’s so called fundamental frequency, which sounds less muted and more exciting, but this is highly opinionated
  • The Convolver Node at the end adds a cool environmental effect, but is not technically required to get a sound
  • The ADSR Node by itself will not generate an envelope that reacts to note velocity (velocity is how hard you press a key on a MIDI keyboard), instead, the example uses a Note to Velocity Node, and then multiplies the ADSR Node’s control output signal to solve this

What to Try Next

AudioNodes has a cool feature that enables you to share patches with just a few clicks, and there are lots in the library already, with exciting new experiments popping up every day.

When you add Nodes (i.e. right click or touch-and-hold on empty Patcher area), the snippet and custom Node browser is also visible at the bottom of the Node browser panel. Check it out for inspiration, and join us on our Discord channel for more tips and questions!