Skip to content

Subgraphs & Modules

These nodes let you take a chunk of your patch and tuck it neatly inside a single node you can reuse. A Subgraph is a node that holds a whole graph inside it. A Module does the same but adds its own front panel of controls. A Poly Module goes further and plays the inside as a polyphonic voice, meaning it can sound several notes at once. The Sub In and Sub Out port nodes decide which connection points the container shows on the outside, and the Voice helper nodes let you read what is happening with each individual note inside a Poly Module.

Module

A Module is a Subgraph that also brings along its own front panel. Any controls (widgets) you place inside it appear right on the Module's face, and you can drop the whole Module onto your main Front Panel as a single, reusable set of controls. Use a plain Subgraph when you just want to tidy up your graph. Reach for a Module when you also want a self-contained panel you can reuse across different projects.

Module

ParameterRangeDefaultDescription
VisibleOn / OffOnShows or hides the Module on the front panel without removing it from the layout
Panel Alpha0.0 - 1.01.0Opacity of the Module's panel background
Stretch to FillOn / OffOnScales the inner panel to fill the Module's body

Inputs: an Appearance input pin (accepts a Visible property), plus any pins derived from the Sub In nodes placed inside. Outputs: any pins derived from the Sub Out nodes placed inside.


Poly Module

A Poly Module is a Module that can play several notes at the same time (polyphonic). Inside, you build just one voice (its oscillators, filters, envelopes and controls), and the container makes several copies of that voice and runs them side by side, mixing their sound together. Incoming notes are shared out among the copies by a built-in handler, and a voice stops using any CPU once it has gone quiet.

Poly Module

Needs: a Poly Module on the graph, ideally with the inspector open showing the Voices selector.

ParameterRangeDefaultDescription
Voices1 - 164How many copies of the voice play at the same time
Note PriorityLast Only Retrigger / Stack RetriggerLast Only RetriggerOnly shown when Voices = 1. Last Only Retrigger makes each new note retrigger and a release silence the voice. Stack Retrigger keeps held notes stacked, so releasing the top note falls back to the previous one
VisibleOn / OffOnShows or hides the Poly Module on the front panel without removing it from the layout
Panel Alpha0.0 - 1.01.0Opacity of the Poly Module's panel background
Stretch to FillOn / OffOnScales the inner panel to fill the Poly Module's body

Because it is a Module, a Poly Module also has all of Module's panel settings (Visible, Panel Alpha, Stretch to Fill), shown alongside the polyphony settings above.

A brand-new Poly Module already comes with one Sub In (MIDI) and two Sub Out (Audio) nodes (left and right) connected up, so you can start building the voice straight away. To read the details of each note inside, use the Voice Gate / Pitch / Velocity / Index nodes. To make notes glide smoothly from one pitch to the next, drop a Smooth node on the pitch path inside the voice.

Inputs: an Appearance input pin (accepts a Visible property), plus any pins derived from the Sub In nodes placed inside. Outputs: any pins derived from the Sub Out nodes placed inside.


Subgraph

This is a node with a whole graph living inside it. Drop a Subgraph onto your patch and double-click it to step inside and edit its internal graph. The connection points it shows on the outside come from the Sub In and Sub Out nodes you place inside, so a Subgraph is a clean way to nest part of a patch and keep your top level tidy.

Subgraph

ParameterRangeDefaultDescription
OversampleOff / 2x / 4x / 8xOffRuns the inner graph at a multiple of the host sample rate, with anti-aliasing on the audio crossing

Inputs: any pins derived from the Sub In nodes placed inside. Outputs: any pins derived from the Sub Out nodes placed inside.


Sub In (Data/CV)

Place this inside a subgraph to bring in a Data value from the patch outside. If something flowing (a live signal) is connected to the matching point on the outside, it switches into CV mode and works as a real-time signal input.

Sub In (Data/CV)

Inputs: none. Outputs: Out (the value arriving from the parent graph).


Sub Out (Data/CV)

Place this inside a subgraph to send a Data value back out to the patch outside. In CV mode it passes along a real-time signal.

Sub Out (Data/CV)

Inputs: In (the value to send back to the parent graph). Outputs: none.


Sub In (Audio)

Place this inside a subgraph to bring in one channel of audio from the patch outside. Add one for each channel (for example, two for a stereo input).

Sub In (Audio)

Inputs: none. Outputs: Out (audio coming from the parent graph).


Sub Out (Audio)

Place this inside a subgraph to send one channel of audio back out to the patch outside. Add one for each channel (for example, two for a stereo output).

Sub Out (Audio)

Inputs: In (audio sent back to the parent graph). Outputs: none.


Sub In (CV)

Like Sub In (Data/CV), but it always stays in CV (live signal) mode. Use it when you want to connect to CV nodes inside the subgraph even when nothing is wired up from outside.

Sub In (CV)

Inputs: none. Outputs: CV Out (the CV value arriving from the parent graph).


Sub Out (CV)

Like Sub Out (Data/CV), but it always stays in CV (live signal) mode. Use it when you want to receive from CV nodes inside the subgraph even when nothing is wired up outside.

Sub Out (CV)

Inputs: CV In (the CV value sent back to the parent graph). Outputs: none.


Sub In (MIDI)

Place this inside a subgraph to bring in MIDI (note and control messages) from the patch outside.

Sub In (MIDI)

Inputs: none. Outputs: MIDI (MIDI coming from the parent graph).


Sub Out (MIDI)

Place this inside a subgraph to send MIDI (note and control messages) back out to the patch outside.

Sub Out (MIDI)

Inputs: MIDI (MIDI sent back to the parent graph). Outputs: none.


Voice Gate

Sends out 1.0 while the note is being held and 0.0 once it is released. Use it as the gate (the on/off trigger) for an envelope inside a Poly Module. Outside a Poly Module the value just stays at 0.

Voice Gate

Needs: a Voice Gate node inside a Poly Module voice, wired into an envelope's gate input.

Inputs: none. Outputs: Gate (1.0 while held, 0.0 otherwise, as CV).


Voice Pitch

Sends out the MIDI note number of the note this voice is playing (60 = middle C). Pass it through a CV To Freq node to turn it into a frequency in Hz before feeding it to an oscillator.

Voice Pitch

Needs: a Voice Pitch node inside a Poly Module voice, feeding a CV To Freq node into an oscillator.

Inputs: none. Outputs: Note (the voice's MIDI note number, as CV).


Voice Velocity

Sends out how hard the most recent note was played for this voice, scaled from 0 to 1. It holds onto the last value after the note is released.

Voice Velocity

Needs: a Voice Velocity node inside a Poly Module voice, modulating a level or filter.

Inputs: none. Outputs: Vel (note-on velocity, 0 to 1, as CV).


Voice Index

Sends out the number of the current voice (0 up to N-1), which stays the same for that voice. Handy for giving each voice a slightly different tuning (multiply by a small amount into an oscillator's frequency offset) or a different stereo position.

Voice Index

Needs: a Voice Index node inside a Poly Module voice, driving a small detune or pan offset.

Inputs: none. Outputs: Idx (the voice index, 0 to N-1, as CV).


MNodes Documentation