Skip to content

MIDI: play your first synth

The first patch makes a continuous tone. This time, make it play different notes when you press a key, and fade out when you release it. You can use the on-screen keyboard; no MIDI hardware is required.

MIDI carries instructions such as “start note 69” and “release note 69”. It carries no audio. The oscillator makes the sound, and an envelope controls its level over time.

Play a noteChoose its pitchShape its levelHear it

Try the finished patch

Download: your first playable synth

  1. Save your current work, then open the downloaded .mnprt with File → Open.
  2. Start with your listening volume low. Find the Volume just before Audio Out (the lower of the two Volume nodes in the download). It is set to 0.10 Linear; set its Gain to 0 whenever you want to mute the patch.
  3. Find MIDI Keyboard on the graph. Leave Hold Off, then press and hold one of its piano keys with the mouse.
  4. Release the mouse button. The note should fade out in about 250 ms. Press a different key to change the pitch.

Silence before the first note is correct. If nothing happens when you play, use the checks below. Click any image to enlarge it.

1. Check that notes arrive

To build this yourself, start with an empty graph. Right-click the canvas, search the Node Palette, and add MIDI Keyboard, MIDI Monitor and MIDI In. Expand the nodes to see their controls.

Connect MIDI Keyboard Out → MIDI Monitor MIDI. The keyboard’s Out pin is its MIDI output. These pins and cables are red in the Default theme. Leave Hold Off on the keyboard, and Freeze Off / Channel All on the monitor.

Press a piano key, then release it. The monitor should show a Note On message followed by a Note Off. At this stage you will not hear anything: there is no sound generator yet.

Native MIDI Keyboard connected to MIDI Monitor, with the piano keys, Hold control and incoming Note On and Note Off messages indicated.
Check the messages before the sound. The keyboard generates notes from mouse clicks. The monitor is a viewing branch; it has no MIDI output to connect onward.

Standalone mode

To use a physical controller, select its MIDI input in Settings → Audio / MIDI, then connect the output of MIDI In to MIDI Keyboard In. See audio and MIDI setup.

The output pin on MIDI In is labelled In: it means MIDI coming into MNodes. The keyboard passes those messages through and adds any notes you play on screen.

Plugin mode

Load MNodes on an instrument track in your DAW. Send notes from a MIDI clip or your controller to that track; enable input monitoring or record-arm if your DAW requires it. Connect MIDI In → MIDI Keyboard as above.

If on-screen notes work but controller notes do not, keep the synth wiring as it is and check the DAW's input and track routing. You can also connect MIDI In directly to MIDI Monitor to inspect what the host sends.

2. Give the oscillator a pitch

Add MIDI To CV, Saw and Envelope. Draw a second cable from MIDI Keyboard Out to MIDI To CV In; keep the existing monitor branch.

MIDI To CV translates the messages into continuous control signals. For this patch, use two of its outputs:

ConnectWhy
MIDI To CV Note Hz → Saw FrequencySets the oscillator's pitch in hertz
MIDI To CV Gate → Envelope GateTells the envelope whether a note is being held
Native MIDI To CV with Note Hz wired to Saw Frequency and Gate wired to Envelope Gate. Numbered callouts identify both output and destination pins.
Two cables, two jobs. Note Hz chooses the pitch; Gate starts and releases the envelope. The MIDI source is outside this close-up.

Note Hz, Pitch and Note Number are different

For MIDI note 69, these outputs carry different values:

OutputValueMeaning
Note Hz440Frequency in Hz, use this for Saw Frequency
Note Number69The MIDI note's numeric identifier
Pitch (V/oct)0.75Octave-scaled pitch, with MIDI note 60 as zero

Use Note Hz for this Saw input. Connecting Pitch (V/oct) directly sends 0.75 instead of 440; the units do not match. Note names can use different octave numbering in different apps, so MIDI numbers are the clearest reference here.

Gate is held; a trigger is brief

Gate stays at 1 while at least one note is held, then returns to 0 when all notes are released. The Envelope follows that hold/release state. Trigger NoteOn is a short pulse at each new note; it does not describe how long you hold the key.

This example is monophonic: the most recently pressed note sets the pitch. If two notes overlap, releasing the newest returns to the older held note. Gate stays high across that overlap, so the envelope continues instead of restarting. Release every key between notes while learning the envelope.

3. Let the envelope control the sound

Add two Volume nodes and an Audio Out. Keep both nodes' original name, Volume. The first Volume, directly after Saw, follows the envelope. The second Volume, just before Audio Out, sets your listening level. In the download they are arranged one above the other: first on top, second below.

Set the values below before completing the output wiring. Click a node to edit its parameters in the Inspector, or use its expanded controls.

NodeSettings
SawEnable On; Frequency will come from Note Hz
First Volume, after SawUnit Linear · Gain 0 · Smooth 0 ms
Second Volume, before Audio OutUnit Linear · Gain 0.10 · Smooth 15 ms
Audio Out2 channels

Make these connections:

FromToCarries
Saw OutFirst Volume InAudio: the raw tone
Envelope CVFirst Volume GainCV: the changing level, from 0 to 1
First Volume OutSecond Volume InAudio: the shaped note
Second Volume OutAudio Out Out 1 and Out 2The same mono sound to both speakers
Native Saw Out connected by an audio cable to the first Volume In, and Envelope CV connected by a CV cable to its Gain, with both input pins marked.
Sound enters In; its level enters Gain. This close-up shows the first Volume. Connect its Out through the second Volume to Audio Out as listed above.

Use the Envelope's CV output for this connection. Its Out pin is an audio-format envelope signal, not the oscillator's sound. Linear units matter too: a CV level of 0 means silence and 1 means full amplitude before the second Volume. In dB units, 0 would mean unity gain.

The CV cable controls Gain on the first Volume while it is connected. Adjust Gain on the second Volume to change the overall level; editing the first Volume's stored Gain will not override the incoming envelope. This is the same hybrid-input behaviour used elsewhere in the graph.

4. Shape the start, hold and release

An ADSR envelope moves through Attack, Decay, Sustain and Release. Set these values on Envelope, leaving the three Curve values at 0:

ControlSet it toWhat you hear
Attack (ms)10A quick rise from silence to full level
Decay (ms)150The level falls from the peak toward Sustain
Sustain0.65The level stays at 65% while the key remains held
Release (ms)250After you release the key, the level fades to zero
The native Envelope controls with Attack, Decay, Sustain and Release marked, followed by a schematic showing Note On, the held note and Note Off along an ADSR contour.
Sustain is a level, not a duration. You choose how long to hold it by keeping the key pressed. The schematic below the controls stretches the short stages for clarity; it is not a recording or a time-scale measurement.

Hold a note long enough to hear the initial peak settle, then release it. Release starts from the current level, even if you let go during Attack or Decay.

Hear the difference

Both examples play the same 440 Hz note: press at 0.25 s, release at 1.50 s. Decay, Sustain and the second Volume's Gain remain unchanged.

Try those two changes in your patch. Attack softens the beginning; Release lets the sound continue after your finger lifts. Neither changes the note's pitch. Keep Hold Off on MIDI Keyboard for this exercise: Hold latches notes until triggered again, so simply releasing the mouse would no longer end the note.

If you hear nothing

Work along the path in order. The first missing result tells you where to look.

What you noticeCheck this
MIDI Monitor shows no notesConnect MIDI Keyboard Out to the monitor's MIDI input. Set Freeze Off, Channel All and Notes On, then try an on-screen piano key
On-screen keys work, the controller does notCheck the standalone MIDI device or DAW track input, then the cable from MIDI In to the keyboard
The monitor sees notes, but the pitch is wrongConnect Note Hz, not Pitch or Note Number, to Saw Frequency. MIDI note 69 should give 440 Hz
Notes arrive, but the synth stays silentCheck Gate → Envelope Gate, Envelope CV → Gain on the first Volume, Saw Enable On, and both Volume nodes' Unit Linear
It clicks briefly but will not holdUse Gate, not Trigger NoteOn, for Envelope Gate. Check that Sustain is above 0
It keeps sounding after releaseTurn Hold Off, release all held notes, and allow the Release time to finish. Check that Saw reaches Audio Out through the first Volume, without a direct bypass cable
Gain on the first Volume will not change the levelIncoming CV controls it. Use Gain on the second Volume for the overall level
The wiring looks right but there is no outputSet Gain on the second Volume to 0.10, connect its Out to both output channels, and check your audio device or DAW track mute/monitoring

Where to go next

The download is a single voice with a fixed playing level. Velocity and pitch bend are available from MIDI To CV, but are not wired into this patch. Receiving those messages alone does not make them affect the sound.

You want to…Next step
Play chords with independent envelopesFollow Poly Modules; one MIDI To CV and one oscillator still make a single voice
Restart the envelope on each overlapping noteAlso connect MIDI To CV Trigger NoteOn → Envelope Retrigger; keep the Gate connection
Change incoming notesPut MIDI Transpose, MIDI Scale or MIDI Arpeggiator before MIDI To CV
Control a parameter with a hardware knobExplore MIDI CC Extract and check the destination's expected range
Build a playable control surfaceAdd MIDI Keyboard and Envelope to the Front Panel

See the MIDI node reference for I/O, filters, processors and generators, and Envelopes for more envelope controls.

Other MIDI messages

Notes are only part of MIDI. Velocity describes a note's playing strength; CC messages carry controller movements; pitch bend and aftertouch carry expressive changes. Clock carries timing, while SysEx carries device-specific data. Each needs an appropriate receiving node or an explicit control path; a MIDI cable is not an automatic mapping to every synth parameter.

MNodes Documentation