Ableton's Export MIDI Clip command writes a single track with every event on channel 1, which is the exact opposite of what MPE needs to survive. That is not a bug. A standard MIDI file is a MIDI 1.0 container, and it stores a list of note events with timing. It was never designed to hold a performance in the sense you mean when you play a touch surface.
None of this matters while the data stays inside the session. It starts mattering the second you move it, and MIDI you captured without arming a track is exactly the kind of material you move, because you grabbed it to use somewhere else.
In a standard lower zone, channel 1 acts as master and channels 2 through 16 hold the notes. Every sounding note gets its own channel for the length of its note-on and note-off, which is why the practical polyphony is fifteen. The pitch bend on that channel belongs to that note and nothing else.
Collapse everything to channel 1, and the notes still play. Per-note pitch and pressure data stops being addressable, because fifteen independent bend streams now share one lane and the last one written wins. You get the right pitches at the right times with the performance sanded off.
Pitch bend range is the second casualty. Member channels are commonly set to 48 semitones either way, four octaves, configured by an RPN message at the start. Lose that message on export and every bend arrives at the receiving instrument scaled to its default of two semitones. A gentle slide becomes almost nothing, or a subtle vibrato becomes a siren, depending on which end got it wrong.
Cubase handles this by writing note expression out as ordinary controller data, which is honest about the limitation rather than pretending. Multiple notes bending at once still collapse into one pitch bend track.
A MIDI 1.0 continuous controller carries seven bits. That is 128 steps for brightness, for pressure, for anything you moved with your finger. Pitch bend gets fourteen bits and is the one comfortable parameter in the format.
MIDI 2.0 moved controllers to 32 bits and velocity to sixteen, which is roughly 4.2 billion steps against 128, and 65,000 velocity levels against the same 128. Per-note controllers became a first-class message rather than a channel trick.
None of that fits in a .mid. Universal MIDI Packets are not represented in the standard MIDI file format, so anything captured at high resolution is scaled down to 7 bits on the way out. The file opens everywhere. It just holds a coarser version of what you played.
Timing gets rounded too. Ableton writes exported events to a 96-tick-per-quarter grid and shifts them to fit, which is fine for quantized parts and audible on anything you played loosely.
It is deliberately narrow. The spec represents one track's worth of material, roughly an alternative to a single track in a standard MIDI file, so it is not a replacement for a multi-track arrangement. A container format for that is still pending.
Tools that capture high-resolution MIDI tend to solve this locally by writing two files. A .mid that anything can open, and a proprietary companion holding the full stream, sitting next to it with the same name.
The two files serve different jobs. A .mid goes to the collaborator on a different system, the arranger who needs notes and nothing more, and the archive that has to still open in fifteen years. The companion goes back into the same tool with everything you actually recorded, and it is worthless anywhere else.
None of this matters while the data stays inside the session. It starts mattering the second you move it, and MIDI you captured without arming a track is exactly the kind of material you move, because you grabbed it to use somewhere else.
MPE only works if the channels survive
MPE has no special message for expression. It borrows the channel system instead.In a standard lower zone, channel 1 acts as master and channels 2 through 16 hold the notes. Every sounding note gets its own channel for the length of its note-on and note-off, which is why the practical polyphony is fifteen. The pitch bend on that channel belongs to that note and nothing else.
Collapse everything to channel 1, and the notes still play. Per-note pitch and pressure data stops being addressable, because fifteen independent bend streams now share one lane and the last one written wins. You get the right pitches at the right times with the performance sanded off.
Pitch bend range is the second casualty. Member channels are commonly set to 48 semitones either way, four octaves, configured by an RPN message at the start. Lose that message on export and every bend arrives at the receiving instrument scaled to its default of two semitones. A gentle slide becomes almost nothing, or a subtle vibrato becomes a siren, depending on which end got it wrong.
Cubase handles this by writing note expression out as ordinary controller data, which is honest about the limitation rather than pretending. Multiple notes bending at once still collapse into one pitch bend track.
Seven bits is the ceiling on everything else
Controller resolution is where the losses get quieter and harder to spot.A MIDI 1.0 continuous controller carries seven bits. That is 128 steps for brightness, for pressure, for anything you moved with your finger. Pitch bend gets fourteen bits and is the one comfortable parameter in the format.
MIDI 2.0 moved controllers to 32 bits and velocity to sixteen, which is roughly 4.2 billion steps against 128, and 65,000 velocity levels against the same 128. Per-note controllers became a first-class message rather than a channel trick.
None of that fits in a .mid. Universal MIDI Packets are not represented in the standard MIDI file format, so anything captured at high resolution is scaled down to 7 bits on the way out. The file opens everywhere. It just holds a coarser version of what you played.
Timing gets rounded too. Ableton writes exported events to a 96-tick-per-quarter grid and shifts them to fit, which is fine for quantized parts and audible on anything you played loosely.
The companion file is the only lossless copy
The MIDI Association published a clip file specification in 2023 that stores UMP messages natively, 32-bit aligned, keeping per-note controllers and attribute data intact.It is deliberately narrow. The spec represents one track's worth of material, roughly an alternative to a single track in a standard MIDI file, so it is not a replacement for a multi-track arrangement. A container format for that is still pending.
Tools that capture high-resolution MIDI tend to solve this locally by writing two files. A .mid that anything can open, and a proprietary companion holding the full stream, sitting next to it with the same name.
The two files serve different jobs. A .mid goes to the collaborator on a different system, the arranger who needs notes and nothing more, and the archive that has to still open in fifteen years. The companion goes back into the same tool with everything you actually recorded, and it is worthless anywhere else.