Most conversations about MPE in the DAW world revolve around the big names: Ableton Live, Logic Pro, Bitwig Studio, Cubase. This week brought a different kind of milestone. Ethereal, a young open-source DAW written in Rust, merged a pull request on October 3 that adds comprehensive MPE support to its development branch.
It is a small project at an early stage, so this is not a "switch your DAW" story. It is, though, a useful look at what a modern host needs to do to take per-note expression seriously from day one.
What Ethereal is
Ethereal describes itself as an Ableton-style DAW released under the GPL-3.0-or-later license. The audio engine is written in Rust and compiles natively for macOS, Windows, and Linux, as well as to WebAssembly. The interface is built with React and TypeScript, wrapped in Tauri for the desktop and also runnable in a browser. Built-in devices include a synth, a sampler, a compressor, and a delay, and the project can host CLAP plugins.
The repository is candid about where things stand: the project is in a scaffold phase, with core contracts established and plenty of logic still being filled in. Treat it as something to watch and, if you write Rust or TypeScript, perhaps contribute to, rather than something to book a session in.
What the MPE pull request adds
According to the merged pull request, the new support covers a full per-note expression pipeline:
- Recording and playback of per-note pitch, pressure, and timbre on MIDI tracks
- Note-expression delivery to hosted plugins, in both CLAP and VST3 formats
- MPE MIDI output, so the DAW can drive external MPE-capable devices
- Piano roll controls, with inspector settings and visual lanes for the expression data
- Voice-level control in the built-in poly synth, including per-voice pitch modulation and timbral control
Two items were still listed as pending when the change landed: an Audio Unit MPE MIDI fallback, and testing with real hardware input. That second point matters. Anyone who has debugged MPE knows that a pipeline that passes unit tests can still behave strangely when a real controller floods it with continuous data from several fingers at once.
A small benchmark worth noting
The pull request also includes a tiny performance comparison: processing 16 voices took about 324 ms without per-note expressions and about 302 ms with them in the project's test. In other words, the expression layer showed negligible overhead in that scenario. It is a synthetic test and not a verdict on real-world sessions, but it supports a point MPE developers often make, which is that per-note data is lightweight compared with the audio it shapes.
Why this matters for the MPE ecosystem
There are three reasons to pay attention.
First, MPE is becoming a baseline expectation. A new DAW project, even one at scaffold stage, decided that per-note recording, editing lanes, and plugin delivery belong in the foundation rather than a later add-on. That is a notable shift from the era when MPE was a patch bolted onto a host.
Second, CLAP is proving its worth. The CLAP format has native support for per-note expressions, which makes it a natural fit for expressive hosts. If you want the background, our earlier piece on note expressions in CLAP covers how that differs from MPE channel tricks.
Third, open-source hosts widen who can experiment. Researchers, students, and instrument builders can read exactly how a host maps pitch bend, pressure, and slide onto voices. That transparency is valuable for anyone designing a new controller or teaching how MPE works.
What to watch next
If you want to follow along, the Ethereal repository is the place to start, and the MPE pull request is a readable walkthrough of the design choices. The things worth watching are hardware testing with controllers like the LinnStrument or Osmose, AU support on macOS, and whether the project's expression editing becomes polished enough for daily use.
For now, the takeaway is simple: per-note expression is moving from a feature to a foundation, and even brand-new hosts are being built that way.