Poly Subpatch Node

The Poly Subpatch Node enables creating polyphonic synthesizers using other Nodes.

This enables advanced sound synthesis techniques on polyphonic melodies, such as FM synthesis, where one Oscillator Node modulates the frequency of another. It’s also possible to create an effect change over time, but done independently for each note (such as an ADSR effect based on a Lowpass Filter Node). It’s also useful for synthesized drum sounds with a long release.


How to Use

The Poly Subpatch Node, by itself, doesn’t do anything. You need to create the synth patch within, using other Nodes.

Once you created the Poly Subpatch Node, open the node menu (right click, or tap), and choose Edit to enter the synth patch editor. This is the exact same editor as the Patcher in every way, except:

  • There is a fixed, undeletable melody input Node. This is where input notes come from to be synthesized into sound.
  • There is a fixed, undeletable audio output Node. This is where the audio output goes from your synth patch.
  • The set of available Nodes in the node browser is slightly different and more limited.

Everything else goes as usual. For example, use the Oscillator Node to synthesize notes, just as you would outside the synth patch. The Poly Subpatch Node does the rest, to ensure you only have 1 note in the input at a time (if you have enough voices — see below).


Inputs

The Poly Subpatch Node has 1 melody input, and optional control inputs, based on input nodes within the subpatch.

Notes sent to the melody input note are spread between voices automatically, so that each voice only has to process 1 note at a time.


Settings

Number of Voices

How many synth patch copies to create and spread notes between. See the Technical Details section below for a more detailed explanation.


Outputs

The Poly Subpatch Node has exactly 1 audio output.

This audio output is the audio output from all voices, together.


Technical Details

Polyphonic Synthesis & Voices

Under the hood, the Poly Subpatch Node creates multiple copies of the synth patch. Each copy is called a voice. The number of copies, or voices, is what the Number of Voices setting is for. The Poly Subpatch Node syncs these copies in real-time, so you don’t have to do anything.

The Poly Subpatch Node then spreads notes it receives, by assigning each subsequent note to the next voice. When the last copy is reached, the next note is assigned to the first copy, and the cycle repeats. For example, if there are 4 voices, and the Poly Subpatch Node receives 6 notes, they are assigned to voice 1, 2, 3, 4, then 1 again, and then finally 2, in this order.

Finally, the Poly Subpatch Node merges the audio output of each voice to complete the picture (or sound).

Voice Stealing

The fixed number of voices has an important implication. If there are too many notes in too short of a time frame, a phenomenon called voice stealing occurs. This is the act of one voice receiving a new note while it’s either still actively processing another one, or still produces audible output in the release phase (e.g. because of a long ADSR release).

Voice stealing becomes more common with a lower number of voices, or a longer release duration in the synth patch. When this happens, increase the Number of Voices setting.

Performance

Most Nodes in AudioNodes take up little to no processing power while inactive, although there are some exceptions.

Thus, unless your synth patch has Nodes producing a continuous active output (even without any input notes), increasing the Number of Voices setting should not necessarily translate to a performance issue.

Nesting

The Poly Subpatch Node supports unlimited nesting, and the rules apply recursively. This can be useful if the synth patch itself creates a polyphonic melody internally, which can then be sent to a nested Poly Subpatch Node for polyphonic processing.

Warning: nesting Poly Subpatch Nodes causes voices to be multiplied on each nested layer, potentially causing an explosion of voices and performance problems. For example, if your “main” Poly Subpatch Node has 64 voices, and the “inner” Poly Subpatch Node also has 64 voices, the result is 4096 “inner” voices total, which is a lot.