REAPER MIDI on Zorin OS 18

GitHub SPA Preview Tool for Developers.
Forks Contributors Commit Activity

SPA Preview Tool for Developers.

The Fix isn't One-and-Done:

If you're on Zorin OS (or any Ubuntu-based distro running PipeWire) and REAPER won't receive MIDI from your USB controller — even though it shows up in Preferences — here's the fix:

  1. Install REAPER natively from reaper.fm (not Flatpak).
  2. Install pipewire-jack and a2jmidid.
  3. Create a launch script that starts a2jmidid -e before REAPER, and launches REAPER with pw-jack in JACK audio mode.
  4. Put that script in your .desktop file so the start menu does it automatically.

That's it. The rest of this article is the story of how we got there — because the "why" matters more than the "what" when the same problem comes back on your next install.


The Setup

I'm running Zorin OS 18.1 on an HP EliteDesk with a Ryzen 5 PRO, 32 GB RAM, PipeWire 1.0.5, and Wayland. My audio interface is a TI PCM2900C USB codec (M-Audio class — the kind that just works). My MIDI controller is an Akai MPK Mini Mk II. Nothing exotic. Nothing that should require a PhD in Linux audio routing to get working.

I had REAPER installed via Flatpak because that's the path of least resistance on Zorin — open the Software store, click install, done. The plugins scanned fine. The audio interface worked. The MPK showed up in REAPER's MIDI hardware preferences.

But no amount of pressing keys on the MPK triggered anything.


What Didn't Work (And Why)

The MPK transmitted MIDI correctly at the ALSA layer. The failure was downstream — in REAPER's MIDI input path.

This is the part that takes forever to diagnose, so let me save you the time.

The Flatpak REAPER

The Flatpak version of REAPER enumerated the MPK in its MIDI hardware list — the device was right there in reaper-midihw-linux.ini, labeled Midi-Bridge:AKAI MPK Mini Mk II at usb-0000:07:00-4-2- full speed:(capture_0) MPK Mini Mk II MIDI 1. It looked like it should work.

It didn't. The Midi-Bridge: prefix is the tell. That's PipeWire's built-in MIDI bridge, and on this host it advertises MIDI devices to REAPER but does not deliver events to track inputs. The device appears in the menu, you can select it, you can arm the track, you can press keys until your fingers bleed — nothing.

I verified the MPK was actually transmitting by running aseqdump -p 28:0 in a terminal. Note events poured out in real time. The hardware was fine. The ALSA layer was fine. The failure was between PipeWire's Midi-Bridge and REAPER's track input routing.

A pro-audio Linux specialist at Interfacing Linux put it bluntly:

"For the love of the Flying Spaghetti Monster, don't install Reaper from Flathub. It's not official, and the overwhelming number of issues people come to me with about their Reaper install have been solved with, 'Did you install Reaper using Flatpak?' Don't do that."

Meanwhile, a user on the Zorin Forum reported the identical symptom in November 2025 — on Zorin, with the same setup. That thread was auto-closed without a resolution.

The Native Install (ALSA Mode)

I uninstalled the Flatpak and installed REAPER natively from the reaper.fm tarball. Ran ./install-reaper.sh, pointed it at ~/REAPER. Clean install, no sandbox.

By default, REAPER's reaper.ini had linux_audio_mode=1 (ALSA mode) with alsa_indev=hw:CODEC and alsa_outdev=hw:CODEC. Audio worked. The PCM2900C was the default PipeWire sink and source. I could hear everything.

The MPK didn't even show up in REAPER's MIDI preferences consistently.

I tried switching the ALSA device from hw:CODEC to default (routing through pipewire-alsa instead of direct hardware access) — a fix I'd found on a blog post where someone got MIDI working in REAPER on Linux that way.

It didn't work here. The Midi-Bridge: prefix persisted in the MIDI cache no matter what audio backend I chose. REAPER-Linux always enumerates MIDI through PipeWire's bridge on this host.

Waveform Worked. That Was Both a Relief And A Clue.

Tracktion Waveform 13 (native deb install) saw the MPK immediately and routed MIDI correctly — no bridge, no wrapper, no fuss. Its log showed:

Found MIDI in: midiin_179269 ("MPK Mini Mk II MIDI 1") (enabled)

Waveform uses the ALSA sequencer directly and opens its own client port. It doesn't go through PipeWire's Midi-Bridge at all. That's why it works and REAPER doesn't.

I switched to Waveform as my primary DAW. It worked. But I'd already paid for REAPER, and I prefer its workflow — so I kept digging.


The Fix: a2jmidid + pw-jack + JACK Mode

PipeWire's built-in Midi-Bridge advertises devices but doesn't deliver events to REAPER's track inputs. a2jmidid creates proper JACK-MIDI ports from ALSA sequencer devices — and REAPER's JACK MIDI engine can receive from those.

The solution is three components working together:

1. a2jmidid with hardware export

a2jmidid is an ALSA-to-JACK-MIDI bridge daemon. It's different from PipeWire's built-in Midi-Bridge. The critical flag is -e (or --export-hw), which exports hardware ports as JACK-MIDI ports. Without it, only software ports get bridged.

sudo apt-get install -y a2jmidid

When launched with pw-jack a2jmidid -e, the log confirms the MPK is exported:

Hardware ports will be exported.
port created: MPK Mini Mk II [28] (capture): [0] MPK Mini Mk II MIDI 1
port created: MPK Mini Mk II [28] (playback): [0] MPK Mini Mk II MIDI 1

Those are real JACK-MIDI ports. Not PipeWire Midi-Bridge phantom entries.

2. REAPER in JACK audio mode

Change linux_audio_mode in ~/.config/REAPER/reaper.ini from 1 (ALSA) to 0 (JACK):

linux_audio_mode=0

REAPER needs to be in JACK mode for its MIDI engine to use JACK-MIDI ports — which is what a2jmidid creates.

3. pw-jack as the launch wrapper

pw-jack wraps REAPER so it connects to PipeWire's JACK compatibility server instead of looking for a real JACK daemon. You need pipewire-jack installed:

sudo apt-get install -y pipewire-jack

The launch script

a2jmidid must be running before REAPER starts. I put it all in a wrapper script at ~/REAPER/launch-reaper.sh:

#!/bin/bash
pw-jack a2jmidid -e &
sleep 2
pw-jack /home/zorin/REAPER/reaper

Make it executable:

chmod +x ~/REAPER/launch-reaper.sh

The .desktop file

So the start menu launches the wrapper instead of the bare binary. At ~/.local/share/applications/reaper.desktop:

[Desktop Entry]
Name=REAPER
Comment=Digital Audio Workstation
Exec=/home/zorin/REAPER/launch-reaper.sh
Icon=reaper
Terminal=false
Type=Application
Categories=AudioVideo;Audio;AudioVideoEditing;

Launch REAPER from the menu. The MPK appears as a JACK-MIDI port. Select it on your track's MIDI input. Arm the track. Play.

It works.


Answers to Questions No One Has Asked (Yet)

Why does Waveform work and REAPER doesn't?

Waveform opens its own ALSA sequencer client port and reads MIDI directly from the kernel. REAPER-Linux, on the other hand, enumerates MIDI through whatever JACK/MIDI bridge is available. On PipeWire, that's PipeWire's Midi-Bridge — which advertises devices but doesn't deliver events to REAPER's track inputs. a2jmidid replaces that broken path with a working one.

Why not just use Waveform and forget REAPER?

You can. Waveform works out of the box. But if you prefer REAPER — and plenty of us do — this fix gets you there. There's no reason to compromise on your DAW because of a MIDI routing quirk.

Do I need qpwgraph?

Not for this fix. qpwgraph is a graphical patchbay for PipeWire — useful for routing audio between JACK applications, but a2jmidid handles the MIDI bridge automatically. Install it if you want to visualize the graph, but it's not required.

What about the Flatpak version?

Uninstall it. The Flatpak sandbox adds an additional layer of isolation that compounds the Midi-Bridge problem. Even if you could get a2jmidid running inside the sandbox (you can't, easily), the sandbox's Midi-Bridge path is fundamentally broken for REAPER on PipeWire. Go native.

Will this break my desktop audio?

No. pw-jack connects REAPER to PipeWire's JACK server, which coexists with PulseAudio/PipeWire desktop audio. Your browser, system sounds, and other apps continue to work. You don't need to kill PipeWire or start a real JACK server.

Does the audio interface matter?

No. This fix is about MIDI routing, not audio. Your audio interface works through whatever backend REAPER is using (JACK via PipeWire in this case). The PCM2900C, a Focusrite Scarlett, a Behringer UMC — whatever you have, the audio side is unaffected.


Troubleshooting Quicklist


The Launch Script (Copy-Paste Ready)

If you just want the whole thing in one block:

# Install prerequisites
sudo apt-get install -y pipewire-jack a2jmidid

# Install REAPER natively (download from reaper.fm)
tar xJf reaper777_linux_x86_64.tar.xz
cd reaper_linux_x86_64
./install-reaper.sh --quiet --install ~/REAPER

# Flatten the double-nested install (optional but satisfying)
cd ~/REAPER && mv REAPER/* . && rmdir REAPER

# Switch to JACK mode
sed -i 's/linux_audio_mode=1/linux_audio_mode=0/' ~/.config/REAPER/reaper.ini

# Create the launch wrapper
cat > ~/REAPER/launch-reaper.sh << 'SCRIPT'
#!/bin/bash
pw-jack a2jmidid -e &
sleep 2
pw-jack ~/REAPER/reaper
SCRIPT
chmod +x ~/REAPER/launch-reaper.sh

# Create the .desktop entry
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/reaper.desktop << 'DESKTOP'
[Desktop Entry]
Name=REAPER
Comment=Digital Audio Workstation
Exec=/home/zorin/REAPER/launch-reaper.sh
Icon=reaper
Terminal=false
Type=Application
Categories=AudioVideo;Audio;AudioVideoEditing;
DESKTOP

update-desktop-database ~/.local/share/applications/

Launch from your start menu. Play your controller. It works.


Why This Article Exists

There's a Zorin Forum thread from November 2025 where someone reported this exact problem. It was auto-closed after 90 days with no resolution. There's an Interfacing Linux article that says "don't use the Flatpak" but doesn't provide the full fix for the native install. There are Cockos forum threads about PipeWire MIDI quirks that are fragmented across years and don't converge on a single answer.

This is that single answer. For Zorin OS, for PipeWire, for REAPER, for a USB MIDI controller that works perfectly at the ALSA level but somehow doesn't reach the DAW.

If you landed here from a search engine and it saved you three hours of aseqdump and aconnect and deleting MIDI cache files and relaunching REAPER in four different configurations — good. That was the point.

You got the UFO's too, Johnny Law? I reckon be some strange days, these.


Related

Posted in Not WebDev or AI on Jul 16, 2026.

Published by: Jeffrey Sabarese

Comments

Share your thoughts on this post. All comments are moderated before publication.

No comments yet. Be the first to add a response.

Leave a comment

All comments are moderated before publication.