PipeWire's JACK backend breaks recording pre-roll in Bitwig Studio
Version, Distribution, Desktop Environment:
PipeWire 0.3.35-4, built from commit 67be26aa.
Description of Problem:
Bitwig Studio has a pre-roll feature where you get a short count in with a metronome before the recording starts. This feature seems to break when using PipeWire's JACK backend with Bitwig. This may have something to do with JACK transport, but I don't know for sure.
Steps to Reproduce:
- Open Bitwig Studio 4.0.2 (or any previous version) with
pw-jack
. - Make sure the JACK backend is enabled in the audio settings.
- Create a new project.
- Click on the button in the top left toolbar that says 'Play', in between the File menu and the transport play button.
- Pick the 1 (bar) option for the pre-roll setting in the menu that appears.
- Make sure at least one track is armed for recording (the small recording button next to a track's solo button should be coloured red).
- Click on the record button in the toolbar at the top of the screen.
- Now finally click on the button with the play icon (or press Space).
I've also made a screencast for this:
simplescreenrecorder-2021-09-08_13.12.13
Actual Results:
Recording starts immediately, as shown in the screencast.
Expected Results:
There should be a 1/2/4 bar count in (with a metronome if that option is enabled) before recording starts.
Additional Info:
This is a small IRC log snippet from when I asked about this in #pipewire:
IRC log
2021-09-09 16:31:24 robbert-vdh Other than JACK transport being partially implemented, does PipeWire 0.3.34
not implement other JACK features that could be relevant for a DAW's recordi
ng pre-roll/count-in? The pre-roll feature in Bitwig Studio doesn't work wit
h PipeWire's JACK backend, and I'm wondering if it's somehow relying on JACK
transport or if it's something else.
2021-09-09 16:31:59 @wtay robbert-vdh, partially implemented?
2021-09-09 16:32:23 @wtay it should be feature complete
2021-09-09 16:32:35 robbert-vdh wtay: Is it not? I've never actually used it, but people keep repeating that
it doesn't fully work yet so I just took that for a fact :)
2021-09-09 16:33:36 artefact pipewire transports starts paused by default when a client connects as a tim
ebase master, jack doesn't
2021-09-09 16:34:38 @wtay ah
2021-09-09 16:35:16 artefact in my experience this is not a bug, but it means having to click play every
time
2021-09-09 16:38:22 @wtay I don't see where it would start the transport in the jack code...
2021-09-09 16:39:07 robbert-vdh Yeah I think that might be the issue here. The pre-roll does work when playb
ack/the transport is already running
2021-09-09 16:39:53 artefact https://github.com/Artefact2/xmpjack/blob/master/src/xmpjack.c here's a litt
le program that will autoplay with jack, put start paused with pipewire
2021-09-09 16:40:50 artefact jack also sends a latency callback right away, pipewire rarely does