I’m not sure if the bug here is in Ardour or at the Pipewire-emulating-jack layer, but I figured I’d start at the top of the stack…
My setup consists of a MIDI sequencer over USB attached to a Pipewire 0.3.34 system + Ardour 6.9.0 and I’m having some difficulty getting MIDI ports on audio tracks to work. I have added a midi port manually by clicking on the input box in the channel strip and selecting “add midi port”. I then tried 2 configurations:
A second MIDI Track output feeding the MIDI port input. This appears to not work at all, MIDI events don’t appear on the input side of the track even in the monitor.
Directly connecting the HW MIDI output to the input of the track. This works better (MIDI events appear on the input side of the track according to the monitor) but still fails to route events to the plugins in the track (tested with ACE reasonable synth, among others). It’s also not a good long-term solution because audio tracks can’t filter which MIDI channels they listen for events on.
Are there known limitations with Pipewire + MIDI and I should find a way to tear down my PW setup for Ardour, or is there user error? If the former, I’m at least somewhat interested in making a pass at implementing native Pipewire support in Ardour. It’s probably only slightly more work than untangling the Linux Audio configuration mess again for Jack =P.
Pipewire is still in fairly early development so if your MIDI operations work in regular JACK it’s most likely a PW bug.
Also, your 0.3.34 version is a pretty old one; the latest is 0.3.49.
What’s the purpose of adding a MIDI port to an audio track?
We will absolutely not consider a native Pipewire support implementation. Pipewire implements the JACK API. That is the correct API to be using for inter-application audio, and ALSA is the correct API to be using for raw hardware access.
Try out what you’re doing with JACK (or even the ALSA backend with ALSA sequencer MIDI), and see how it works there.
To follow up on what Peder pointed out, Pipewire has been under very rapid development this year, so you have to check the bug tracker rather than relate the version difference or time between releases to a more mature project. Version 0.3.34 was released around 7 months ago, and with current rate of pipewire development anything older than about 1 month or 2 months should be considered obsolete.
Recently several JACK API bugs have been corrected, so perhaps development pace will slow this Spring or Summer as it becomes more complete and the bug list is shorter, but for now I think the recommendation is either stick with traditional jackd, or be prepared to update frequently so you stay on the latest pipewire release.
The advice that Ardour developers have been giving for the last few years still applies to Pipewire as well, if you do not need to route audio between applications, and if you can tolerate no audio from other applications while Ardour is running, the most reliable backend is the Ardour ALSA backend which will request exclusive access to the audio hardware while Ardour is running. That avoids any pipewire bugs and also avoids any complexity of jackd configuration.