MPE Drift User Guide
A plugin that sits between your keyboard and your synth and gives every note its own drifting pressure, pitch, timbre and pan. This guide covers every control in the window.
What MPE is
MIDI Polyphonic Expression gives every note its own MIDI channel, so pitch bend, pressure and timbre can move per finger instead of per keyboard.
What MPE Drift does
It re-voices every incoming note onto a member channel of its own and generates the expression that an ordinary keyboard cannot send, so a plain key press arrives at the synth as a living MPE voice.
With an MPE controller
Your own playing is kept. What you send is forwarded onto the re-allocated channel and the generated motion layers on top of it, so the plugin adds to your expression instead of replacing it.
The same engine as the app
DRIFT started as a module inside MPE Insight. The plugin runs the same engine, measured against the same test fixtures, so a part played in either one comes out the same.
Requirements & Formats
MPE Drift is a note effect: MIDI goes in, MIDI comes out, and no audio passes through it. It needs a host that can run a MIDI plugin and route its output into an instrument, and it needs something MPE capable at the other end, either a synth in MPE mode or a DAW track switched to MPE.
CLAP
MPE Drift.clap, the native build.
VST3
MPE Drift.vst3, built from the same CLAP through a wrapper, so both formats are one plugin and not two code paths.
Not built
AU and AAX are not part of this plugin.
Windows
The build runs on Windows. macOS is not part of the first release.
Installing
Both formats go into the standard shared folders, which is where every host looks by default:
| File | Folder |
|---|---|
MPE Drift.clap | C:\Program Files\Common Files\CLAP |
MPE Drift.vst3 | C:\Program Files\Common Files\VST3 |
Then rescan your plugins, or restart the host. Most hosts only read those folders at startup.
In your host
Put MPE Drift before the instrument that should hear it: on the same track ahead of an MPE synth, or on a MIDI track whose output is routed to one. What leaves the plugin is a complete MPE stream on member channels 2 to 16, so the receiver has to be expecting one.
The power switch comes back with the project. This is a deliberate difference from the module in MPE Insight, where the app always starts with DRIFT off so that it can never boot silently armed into a live rig. In a host that rule would be the wrong one: a project that sounds different from the one you saved is the fault, so power is an automatable parameter here and is restored with the rest of the state.
The window
One head row, the flow field below it across the full width, and one card of four tabs under that. The field sits above the controls on purpose, so that turning something and seeing what it did happen in one line of sight.
Head row
Left to right: the brand and, under it, an about sheet with version and addresses; the preset bar with the current name, a step back, a step forward and a favourite mark; the round power; Independent or Follow; a DRIFT MODE switch that sets every lane's mode at once; the Monitor, which decides what the field draws, either only what leaves the plugin or the incoming expression underneath it as well; and UI, a scale for the whole window.
On the right sit the master Intensity, the voice lamp counting the sounding voices out of fifteen, and four readings taken off the wire rather than estimated: MPE In lights while notes are actually going out, channels says how many the field is showing, notes / min is counted from the last five seconds, and out of range counts the voices whose pitch bend is stuck against its limit, which is the reading that tells you the bend range is set too narrow for the depth you dialled.
Independent keeps the randomization running at full set depth whatever you play. Follow scales it with your own expression, so it stays subtle when you play plainly and opens up when you dig in. On a plain keyboard there is no such expression to follow, so Follow sits near its minimum there and Independent is the mode to use.
Intensity is the one knob over everything: every depth, every humanize amount and every spread reads through it. A depth readout therefore prints two numbers, the setting the handle stands on and the reach that actually leaves the plugin.
The flow field
The field is the picture of the wire. Its own header carries the title on the left and, on the right, the view switch and the time axis; the lane rail runs down the left edge, and the channel filter sits underneath.
Four views
| View | What it shows |
|---|---|
| Flow | Every curve in one band: up to fifteen voices times five lanes, all on top of each other. The stacking is the point, because it is the only way to see what a Mode does. In Parallel a colour group falls together into one line, in Chaos it is a tangle, in Orbit a wave travels through it, in Split two halves run against each other. |
| Levels | One bar per lane and channel: a column for each member channel with a bar inside it for every lane. The reading is how much, not what shape. |
| Notes | Note names and drift nodes, one column per member channel. This is the picture the module in MPE Insight has always drawn. |
| Lanes | One band per lane, so a single modulator can be watched on its own without the other four crossing it. |
Two time axes
Hold is the running band: the right edge is now, the left edge is 1.55 seconds ago, and the picture scrolls. Scope triggers on the start of every note and is exactly one arp step wide, so the curve stands still and starts again from the left with each note. Scope needs a step to measure, so it is only available with the arpeggiator running.
The node carries three values
Each sounding voice gets a ring node, and it says three things in three radii instead of asking for a legend: the outer ring is how far the lane has pushed that voice right now, measured against how far it could; the core is the timbre value on CC74; the inner ring is pressure.
Channel filter and the steal lamp
The channel filter under the field is a view filter on the input side, the same one every module in MPE Insight has: it hides voices whose incoming channel is switched off, and it never changes a byte on the wire. Non MPE input arriving on the master channel is never filtered. When all fifteen member channels are busy and a new note takes one away from an older one, the field says so.
The four tabs
One card, four tabs, and only things that change bytes live in them. Everything about the picture itself stays with the field.
Lanes
The five modulators.
Notes
What every note gets: octaves, chords, scale, spread, bend quantize, humanize.
Arp
Held keys as a pattern.
Output
What leaves the plugin: bend range, MPE setup, seed.
Lanes
Five independent per voice modulators. Each lane carries its own target, shape, depth, rate and colour, and a target can sit on one lane only, so the colour stays a readable legend: a target another lane already holds is simply not offered in the list.
Out of the box the lanes are those four classic destinations with the fifth switched off. The target list itself is wider: Pitch, Pressure and every continuous controller from CC0 to CC119 under its own name. That last part matters more than it sounds, because on member channels an ordinary CC becomes a per note CC, and that does not exist without MPE.
Depth for a pitch lane is in cents, up to 200 of them, so two full semitones. Every other target is a percentage of its own range. Rate runs from 0.02 to 3 Hz while the lane is free, and becomes the division picker once it is synced.
Mode
Each lane says how its voices relate to one another, which is the difference between a chorus and a breath. The switch in the head row sets all five lanes at once; each lane can still be set on its own afterwards.
| Mode | What the voices do |
|---|---|
| Chaos | The default. Every voice draws its own phase and its own rate variation, so the fifteen member channels never move in lockstep and a single sustained chord already feels chorused. |
| Parallel | One clock, one phase, every voice together. The chord swells and falls as a block. |
| Orbit | The phase is spread evenly across the member channels, so the movement travels through the chord as a standing wave. |
| Split | Alternate channels run in counter phase, so two halves pull against each other. |
Static and S&H Random have no phase to spread, so Orbit and Split are greyed out on those lanes and the lane runs as Parallel. They are greyed rather than hidden, so the row still says what the engine is doing.
Sync
A lane runs free or on the host's grid. Synced, the same Rate control stops reading in hertz and becomes the division picker, stepping through 23 divisions from 4/4 down to 1/128 with the dotted and triplet values in between. Switching back and forth loses nothing: the hertz rate and the last division are both kept.
A synced lane also drops the per voice rate variation, Chaos included. A rate that scatters cannot sit on a grid, and a Sync that kept scattering would be a label without an effect. Where a voice sits inside the bar stays the Mode's business.
Note generators
On top of the modulation, MPE Drift can generate whole notes. Each generated note is a full MPE voice of its own with its own drift, and each one takes one of the fifteen member channels.
Octaves stack copies one and two octaves above and below every played note, with a settable relative velocity. Chord turns a single key into a full chord, the played note becoming the root and every interval getting its own voice. Scale locks everything generated into a key and scale, so the chord machine turns diatonic and spread and bend quantize follow the same scale. Note spread scatters the pitch per note, in semitones, snapped to the scale when the lock is on. Bend quant pulls continuous glides onto scale notes, where 100% is a hard snap and less keeps some of the slide, while plain held notes are left alone. Velocity and Timing are the humanizers: a little variation in strength and a few milliseconds of give, so no two notes are identical.
Arpeggiator
With the arp on, held keys become a step pattern instead of sounding directly, and every step still runs through the whole chain, drift and spread and even the chord machine included. Because each step builds new voices, every hit re rolls its own detune, phase, velocity and timing, so the same chord breathes differently on every beat.
Direction is Up, Down, Up & Down, Random, As Played or Chord, over one to four octaves. Chord is a distribution rather than a direction: it plays the whole held chord on every step, and there the octave range rotates the chord one octave per step instead of stacking it, which keeps the voice count flat.
Rate runs free or locked to the host's transport. Gate sets note length as a fraction of the step. Latch keeps the pattern playing after you let go, and the next key press starts a new chord. Shuffle makes every second step of the grid play late, from 50% dead straight through 66% triplet swing to 75% hard dotted; the grid itself never moves, so a pair of steps always adds up to the same span of time and the pattern stays locked to the bar however far you push it.
MPE output
Bend range has to match what the receiving synth uses on its member channels, or the pitch depth will be wrong in the same proportion. The MPE standard is 48 semitones, which is the default here.
Send MPE Setup transmits the MPE Configuration Message for the lower zone, fifteen member channels, plus the bend range on the member channels and the standard two semitones on the master. A receiver that honours the message then expects exactly the stream the plugin sends.
Seed makes a take repeatable. Left at zero the randomization is free and every take is new; any other number re seeds the generator at power on and at every transport start, so the same part played against the same transport comes out the same twice. That is what makes a randomizer usable in a session at all: you can keep the take you liked.
Automation
Thirteen parameters are exposed to the host, and they are deliberately few. What is automatable is what has a value; the switches that change a meaning, target, shape, mode and sync, live in the state instead. A depth lane keeps its sense that way even if you later change what the lane points at: "lane 3 deeper" stays "lane 3 deeper".
| Parameter | Range |
|---|---|
power | off / on |
intensity | 0 to 100% |
lane1_depth to lane5_depth | the lane's own unit, cents for a pitch lane, percent otherwise |
lane1_rate to lane5_rate | 0.02 to 3.00 Hz |
arp_gate | 10 to 95% |
A rate parameter stays continuous while its lane is synced, so an automation curve through it never jumps; only the display rounds to the division it lands on.
Presets & state
Seven factory presets ship with the plugin, the same seven the module in MPE Insight has: Analog Warmth, Tape Wobble, Ocean Swell, S&H Madness, Drunken Arp, Diatonic Comping and Ghost Octaves. The preset bar in the head row steps through them and marks favourites.
Everything else, every target, shape, mode, sync division, colour and note setting, is saved with the project as plugin state, so a reopened project is the one you left.
Targets & rest positions
Where a wave rests is knowledge in the target list rather than a control you have to find. A bipolar shape around the wrong rest would not be a matter of taste, it would be a mapping error, so the plugin carries the table instead of asking:
| Target | Rests on |
|---|---|
| Pitch | the bend centre, and swings both ways |
| Pressure | zero, and rises |
| CC8, CC10 Pan, CC74 Brightness | the centre, 64, and swings both ways |
| CC7 Volume, CC11 Expression | the top, 127, and dips |
| every other CC | zero, and rises |
Shapes
Eight per lane: Drift (organic), Sine, Triangle, Saw Up, Saw Down, Square, S&H Random and Static (one value per note). Static has no cycle at all, so its rate cannot move a byte and the control is greyed out on that lane.
Tempo divisions
The 23 divisions a synced lane steps through, slowest first. D is dotted, T is a triplet:
4/4 3/4 1/2D 1/1T 1/2 1/4D 1/2T 1/4 1/8D 1/4T 1/8 1/16D 1/8T 1/16 1/32D 1/16T 1/32 1/64D 1/32T 1/64 1/128D 1/64T 1/128
The arpeggiator has its own, shorter list, because a step pattern counts whole clock pulses: 1/32, 1/16T, 1/16, 1/8T, 1/8 and 1/4.
MPE Insight
DRIFT began as a module inside MPE Insight, and the plugin runs the same engine. If you own the app you already know most of this window, and the module's own chapter in the app documentation covers the same controls from the app's side, together with the eight visual modules that show you what the stream is doing.
The two are separate products and neither needs the other. The plugin takes DRIFT into your DAW; the app is where you watch MPE.