MIDI node
MIDI Sender
Turns Grafit into a live MIDI instrument and controller: sends Notes, CC, Pitch Bend and Aftertouch to any MIDI destination — hardware synths, DAWs (via the IAC Driver), lighting consoles. Since v2.6 it speaks real polyphony: wire Pitch Detection's 88-note array straight in and whatever the microphone hears becomes playable MIDI.
Inputs
| Port | Type | Default |
|---|---|---|
| EnableStarts and stops sending. Turning it off first sends All Notes Off, so nothing is left ringing on the device. | bool | true |
| NotesA note-activation array for polyphonic playing, one value per bin. 88 bins map to the piano from A0, 128 bins are raw MIDI numbers, 12 bins fold to the octave at C4; any other length is read from A0. | float | — |
| VelocitiesOptional per-bin loudness for the note array — cable an onset or amplitude stream here. It is used only when it has exactly as many bins as Notes, otherwise the note value itself sets velocity. | float | — |
| Note ThreshHow high a bin must rise to count as a played note. Clamped to 0.01…1; low values catch quiet detections and their noise, high values keep only confident notes. | float | 0.5 |
| Poly ChannelMIDI channel for the note array. Clamped to 1…16; changing it mid-performance releases everything held on the old channel. | int | 1 |
| Mono NoteA single MIDI note number for melody following — cable a dominant-note output here. Only 0…127 sounds, and anything outside that, including the default -1, means silence. | int | -1 |
| Mono VelocityHow hard the mono note is struck, where 1 is full force. Values outside 0…1 land on the nearest usable velocity, so useful range is 0…1. | float | 0.8 |
| Mono ChannelMIDI channel for the mono melody note. Clamped to 1…16; keep it apart from the poly channel so the two paths do not collide. | int | 2 |
Outputs
| Port | Type |
|---|---|
| Connected | bool |
How It Works
The node has three independent sending paths that can all run at once:
1. The POLY path — connect a note-activation array to the Notes input. Array bins map to MIDI note numbers (88 bins = the piano, MIDI 21–108; 12 bins = chroma folded onto the C4 octave; 128 bins = raw MIDI numbering). Every UI frame the node compares the array against Note Thresh: a bin crossing above becomes a Note On (velocity from the bin's value, or from the optional Velocities array — wire Pitch Detection's Onsets there for attack-true velocity), a bin falling below becomes a Note Off. Only transitions are sent — chords hold silently, exactly like a keyboard player holding keys.
2. The MONO path — connect a MIDI note number to Mono Note (−1 = silence) and a 0–1 strength to Mono Velocity. When the number changes, the old note is released and the new one struck on Mono Channel. Wire Pitch Detection's Dominant Note and Velocity here for melody following on its own channel.
3. Address ports — the classic path: each dynamic input port is named as a MIDI address (/1/note/C4, /1/cc/74, /1/pitchbend) and its float value is sent on change. Use Listen in the Settings tab to learn addresses from incoming MIDI.
Safety is built in: note events bypass the rate limiter (a dropped Note Off would be a stuck note), changing a channel releases everything held on the old one, and disabling or deleting the node sends All Notes Off.
Parameters in Depth
| Parameter | Meaning |
|---|---|
Notes (array) | Polyphonic activation array. 0–1 per bin; bins above Note Thresh sound. |
Velocities (array) | Optional per-bin velocity source (same length as Notes). Falls back to the note value itself. |
Note Thresh (0–1, default 0.5) | The sounding/silent boundary for the poly path. Lower = more sensitive, denser chords. |
Poly Channel (1–16, default 1) | MIDI channel for the poly path. |
Mono Note (int, default −1) | MIDI number for the mono path; −1 releases. |
Mono Velocity (0–1, default 0.8) | Strike velocity for mono Note Ons. |
Mono Channel (1–16, default 2) | Separate channel so melody and chords never collide. |
Enable (bool) | Off = All Notes Off + disconnect. |
Device and send Rate live in the Settings tab; Rate limits only the CC/address path — note transitions always go through.
Use Cases
- Air-piano — Audio Input → Pitch Detection → Notes → MIDI Sender → IAC Driver → any DAW software instrument: sing or play into the mic, the synth plays along polyphonically.
- Melody follower — Dominant Note → Mono Note, Velocity → Mono Velocity: a monosynth lead that shadows the strongest pitch.
- Beat-synced lighting — Audio Beat Detection Kick → Do Once → a
/1/note/C1address port: every kick fires a MIDI note into a lighting console. - Visual → modulation — Level or any LFO →
/1/cc/1: Grafit animates your synth's mod wheel. - EEG instruments — brain-band power arrays → Notes with a low threshold: neurofeedback as harmony.
Tips
- On macOS enable the IAC Driver (Audio MIDI Setup → MIDI Studio) to route MIDI into DAWs on the same machine.
- Give the poly path a Fall-smoothed Notes input and notes will hold naturally; feed raw Onsets instead for staccato triggering.
Note Threshinteracts with Pitch Detection's own sensitivity — tune Pitch first until the Notes array looks right, then set the MIDI boundary.- The Connected output reports the destination state — wire it to a UI Text for on-stage confidence.
Open MIDI Sender in the interactive catalog →
MIDI Sender is one of 381 nodes in Grafit Pro.
Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.