CLAP hostDevelopment preview

MXM Player

One instrument, a 16-step sequencer, and a serial effect chain. Enough host to hear what a plugin can do.

MXM Player is built as a project tool and separate product. Release packaging and platform checks are still open.

CLAP host16 stepsParameter locksSerial FX chain
12345678910111213141516

What it does

MXM Player loads CLAP bundles at runtime. It was built because a synth cannot be judged from a compiler result, and a separate standalone wrapper would test a different product from the .clap file that ships.

You can play from the on-screen keyboard, the computer keyboard, or a connected MIDI controller. MIDI can pass back out to another device. The fixed keyboard strip also shows held notes, which makes a stuck note or missing input easy to spot.

The player can open a plugin’s own editor in a floating window. Its generic parameter panel remains available, so a plugin with no editor can still be tested and played.

The sequencer

The sequencer has 16 steps. A step can rest, play a note, or tie into the next one. Tied steps draw as one longer button because they make one longer note.

Select a step and move a plugin parameter. That step now stores the change. The control can come from the player panel, a mapped hardware controller, or the plugin’s editor. Double-click puts the step back on the patch value.

Up to 32 parameters can be locked at once. Locks stay with the instrument that created them, so loading another synth does not move the wrong controls or throw the work away. Standard MIDI files can store the notes, but not those plugin parameter changes. Export says what will be lost.

The effect chain

One source feeds one serial chain. Add an effect, move it earlier or later, open its editor, switch it off, or remove it. Off means the effect is not called, so bypass also stops its CPU use.

Each stage can run mono or stereo. The player converts channels at the boundary when needed, then opens the audio device for the widest output in the chain. A source can sleep while an effect tail keeps ringing. Once the tail ends, the graph sleeps too.

There are no sends, buses, or parallel routes. This is a quick way to hear an instrument through effects, not a small DAW.

Built for testing too

Three load figures separate plugin processing time from the full audio callback and missed deadlines. The gap helps show whether the plugin or host caused a problem.

A local command-line client can load plugins, set parameters, edit steps, control transport, manage effects, export, and dump the player state as JSON. Tests and development tools can drive the same application a person uses instead of calling a private test API.

Status

Current state
ProductSeparate from the plugins, with its own version and MIT licence
Target systemsWindows, macOS, Linux
Plugin formatCLAP
Plugin editorsFloating windows; embedded editors are not supported
Audio routingOne instrument into one serial effect chain
Device audio inputNot supported
ReleaseDevelopment preview

The player runs in process with its plugins. A native plugin crash can therefore stop the player, and a blocked plugin can block the thread it runs on. The host reports and limits the failures it can handle, but it is not a sandbox.