Skip to content

Poly Modules

A Poly Module is a polyphonic version of a Module. You build a single voice once: oscillator, filter, envelope, whatever you want. MNodes then runs many copies of that voice in parallel so several notes can play at the same time.

Poly Module on the graph

Why a Poly Module?

A normal Module plays one note at a time. If you press a chord, only one note sounds. To play chords you need polyphony: several copies of the voice, each handling one note.

Poly Module solves that without you having to clone anything. You design one voice. MNodes does the rest.

Polyphony in plain words

Picture a synth with eight little machines lined up inside it. Each machine can play a single note. When you press C, the first free machine grabs C and plays. Press E on top, the next machine grabs E. Both notes sound together. Release C, that machine goes quiet. Release E, the second machine goes quiet too.

A Poly Module is exactly that. Each "machine" is a copy of the voice graph you built. You decide how many machines (voices) to keep ready.

Creating a Poly Module

  1. Open the Node Browser and find Poly Module under the Subgraph category.
  2. Drag it onto the graph (or double-click).
  3. The new Poly Module already has the basics wired up inside: a Sub In (MIDI) on the left and two Sub Out (Audio) on the right (one for L, one for R).
  4. Double-click the Poly Module to enter it and start building your voice.

Inside a fresh Poly Module

Building the voice

Inside a Poly Module you build one voice. Treat it like any other patch: drop an oscillator, a filter, an envelope, wire them up, route to the audio outputs.

The most common starting point:

  1. Sub In (MIDI)Midi to CV to convert incoming MIDI notes to pitch and gate signals.
  2. Midi to CV → oscillator frequency, plus envelope gate, plus a VCA.
  3. VCA out → Sub Out (Audio) L and R.

A simple voice

When you play a chord, every voice runs this same patch. The Midi to CV inside each voice receives only the note that voice is responsible for, so each voice plays a different pitch.

Voices: how many copies to run

The Voices parameter in the inspector sets how many copies of your voice run in parallel. Range: 1 to 16.

  • More voices = bigger chords without note stealing, but more CPU.
  • Fewer voices = lighter on CPU; if you press more notes than voices, the oldest voice gets stolen for the new note.
  • 1 voice = monophonic. Useful for bass, leads, and classic mono synths.

Voices selector in the inspector

Changing the Voices count rebuilds the audio engine for the Poly Module, so you'll hear a brief moment of silence when the new voice graph takes over.

Note Priority (1-voice mode only)

When Voices = 1, a second parameter appears in the inspector: Note Priority. It controls how the single voice behaves when you hold more than one note at the same time. With more than one voice this parameter is hidden because it has no effect.

Note Priority param

Last Only Retrigger (default)

Each new note silences the previous one. When you release the latest note, the voice goes silent even if older notes are still physically held.

Example:

  • Press C, you hear C.
  • Press E (still holding C), you hear E (envelope retriggers).
  • Release E (still holding C), silence.

This is the simplest mono synth feel.

Stack Retrigger

Held notes are kept on a stack. The latest press is always on top and is what you hear. Release the top note and the voice falls back to the previous note in the stack and retriggers.

Example:

  • Press C, you hear C.
  • Press E (still holding C), you hear E (retriggers).
  • Press G (still holding C and E), you hear G (retriggers).
  • Release G, you hear E again (retriggers).
  • Release E, you hear C again (retriggers).
  • Release C, silence.

This is the classic "play-all-the-keys-at-once" mono synth behaviour you find on vintage hardware. Great for fluid bass lines and lead phrasing where you want the previous note to come back when the new one is lifted.

Pseudo nodes for per-voice signals

Inside a Poly Module you'll find four special nodes under the PolyVoice category in the Node Browser. They give you access to per-voice signals without going through Sub In (MIDI) and Midi to CV.

PolyVoice nodes in the browserNeeds: screenshot of the Node Browser with the PolyVoice category open, showing the four nodes: Voice Pitch, Voice Gate, Voice Velocity, Voice Index.

NodeWhat it outputs
Voice PitchThe MIDI note number assigned to this voice (e.g. 60 for middle C)
Voice Gate1 while the voice is active, 0 once released
Voice VelocityThe note-on velocity, normalised 0 to 1
Voice IndexThe position of this voice in the pool (0, 1, 2…). Useful for detuning or subtle per-voice variations

These nodes are convenient when you want a quick voice without needing a full MIDI to CV chain. They reflect the same data the bridge uses internally to route notes.

CPU: voices that aren't playing don't cost anything

A voice that hasn't been triggered, or whose envelope has fully released, automatically goes to sleep. Sleeping voices consume zero CPU. As soon as a new note comes in, the voice wakes up and plays.

This means you can leave Voices set to 8 or even 16 without paying the cost when only two notes are sounding. Pay for what you play.

Glide / portamento

Poly Module has no glide parameter on purpose. If you want pitch glide between notes, drop a Smooth node inside the voice between your pitch source (Midi to CV's Note Hz, or Voice Pitch) and the oscillator's frequency input. You then control the slide time on the Smooth node directly, and you can even modulate it.

This approach is more flexible than a fixed Glide knob: you can pick the curve, sync it to tempo, automate it, or feed multiple smoothed pitches into different oscillators with different glide times.

What happens with more notes than voices

If you press more notes than the Voices parameter allows, the oldest currently-playing voice is stolen and reused for the new note. There is no warning, no glitch, just the oldest note giving way.

If you regularly run out of voices, raise the Voices count.

Saving your voice as a reusable Poly Module

Just like a regular Module, you can save the whole Poly Module to disk:

  1. Right-click the Poly Module on the graph.
  2. Select Save As Module….
  3. Fill in name, category, author, description, save.

The saved file (.mnmod) carries the inner voice graph, the Voices count and the Note Priority value. Drop it back onto another patch from the Node Browser to reuse the whole instrument.

Module Presets work the same as Modules

You can also save Module Presets (.mnmprst) for a placed Poly Module. The preset captures every parameter inside the voice (and the Poly-level Voices and Note Priority) without changing the graph topology. This lets you snapshot sounds and step through them. See the Modules guide for the full preset workflow.

Use cases

  • Polyphonic synths: build your own poly synth with custom oscillators, filters, envelopes, and effects per voice.
  • Mono synths and basses: set Voices to 1 and pick the Note Priority that fits the playing style.
  • Polyphonic effects: feed audio in, process it per voice with an envelope follower or pitch-tracker, useful for sample-based or granular treatments.
  • Layered sounds: combine multiple Poly Modules in parallel to layer timbres.
  • Performance instruments: expose a few key knobs on the Module front panel and play live.

Tips

  • The Poly Module's panel works exactly like a regular Module's. Add widgets to the Module Front Panel to expose only the controls you want for performance.
  • Voice Index is gold for detune and width: feed it through a tiny offset into oscillator pitch and you get instant unison-like spread for free.
  • Combine Voice Velocity with envelope amount or filter cutoff for natural keyboard dynamics.
  • Use Voices = 1 + Stack Retrigger for vintage mono lead feel; Voices = 1 + Last Only for percussive mono basses.
  • Long releases plus low Voices means voice stealing while tails are still ringing. Bump Voices if you hear cut-offs.

MNodes Documentation