Skip to content

Performance Tips

MNodes can build patches that range from a couple of nodes to hundreds. This page collects practical tips to keep your CPU happy.

Monitor CPU usage

Turn on the Performance overlay at any time:

  • Menu: View → Show Performance Stats
  • Shortcut: Ctrl/Cmd + Alt + T

It displays realtime CPU load, buffer health, sample rate, and a Latency line: the patch's input-to-output latency in samples and milliseconds, which is exactly what MNodes reports to your DAW for plugin delay compensation. If the numbers spike into the red, something in your patch is too heavy.

Performance Stats overlay

Buffer size

The audio buffer size is the single biggest lever for CPU and latency.

  • Small buffer (64, 128 samples): low latency, higher CPU cost.
  • Large buffer (512, 1024 samples): higher latency, cheaper CPU.

Set this in:

  • Your DAW's audio preferences (when MNodes runs as a plugin).
  • Settings → Audio (when MNodes runs standalone).

If you hear crackles or dropouts, try doubling the buffer size.

Heavy nodes

Some nodes are more expensive than others. Roughly, from lighter to heavier:

LighterMediumHeavy
Math, Logic, ValuesFilter, EQ, DelayReverb II, Granular, Vocoder
Envelopes, LFOChorus, UnisonAnalyzer, Oscilloscope (while visible)
Basic oscillatorsCompressor, LimiterFormant Synth, FM Voice (polyphonic)

Visualisation nodes (Analyzer, Oscilloscope, Meter, Mini Map) redraw continuously. Close the panels that contain them when you aren't watching.

Connection types matter

Not all connections cost the same:

  • Event-based connections (Data, MIDI events) only do work when something changes. Very cheap.
  • Continuous connections (Audio, CV streams) run every sample. More expensive, but necessary for smooth modulation and audio.

If a slow-moving control doesn't need audio-rate precision, a Data connection is often fine and much cheaper than a CV stream.

Polyphony & voices

Polyphonic instruments (Subtractive, FM Voice, etc.) and Poly Modules duplicate their processing per voice. Cut max voices if you don't need chords: 8 is usually plenty for typical synth patches. Be especially careful with heavy effects (reverb, delay) inside a Poly Module: they run once per voice, so a single shared reverb placed after the Poly Module is far cheaper than one reverb per voice.

Subgraphs & Modules

Grouping parts of your patch into Subgraphs or Modules keeps the top-level graph simpler and easier to edit, and lets you bypass or mute whole sections quickly when testing. Grouping by itself doesn't make a section cheaper to run.

One thing worth knowing: each Subgraph or Module runs its own little engine inside. An empty one costs almost nothing, but every level of nesting (a Module inside a Module inside a Module) adds a small fixed cost on top of whatever lives inside it. A few levels are no problem. Stacking many levels deep, all over a large patch, adds up.

A few habits keep this in check:

  • Don't nest deeper than you need. Group things to stay organised, not out of habit. If a section doesn't really need to be its own Module, leaving it in the parent graph is a little cheaper.
  • Share heavy effects instead of repeating them. One reverb or delay that several parts feed into is much cheaper than a separate reverb inside every Module (or inside every voice). Send your sources to a single shared effect at the end of the chain.
  • Bypass or mute sections you aren't using. A bypassed Module skips its work entirely.

UI tricks

  • Close the Explorer/Inspector panels (Ctrl/Cmd + Alt + E / I) when you don't need them: they use some CPU for their own updates.
  • Hide the Mini Map on very large graphs.
  • Turn off the Graph Grid if you don't need snapping while playing with a big patch.

When everything else fails

  • Save your patch as a preset, close MNodes, reopen. A fresh instance always starts with a clean slate.
  • Try freezing the track in your DAW (where supported) once you've dialled the sound in.

MNodes Documentation