Repository navigation
OpenXLR 0.6.0 introduces hardware mixing mode on the Wave XLR Pro, where the unit itself mixes what its jacks and USB Aux port play (experimental for now). It also makes the daemon much lighter when idle and fixes a good number of bugs.
Devices
- Hardware mixing on the Wave XLR Pro, experimental. Options, AUDIO, has a new choice, Mixes on the Pro's outputs. This unit hands the mixes Headphones 1, Headphones 2 and Line Out play to the unit. Each channel streams to it on a USB pair of its own and the unit mixes those pairs with its own inputs, so the microphones, Line In and Aux In reach the jacks with no delay and a fader moves a level inside the unit. Before anything changes, a window lists what the layout would lose and how far each jack is turned down first. This computer switches back and gives the unit what it held before. The SUBMIXER header shows On the unit while the mode runs. It needs firmware 1.0.14 or later. It was heard on one unit, with headphones on Headphones 1 and a second computer on the USB Aux port.
- In the mode, eight channels fit, hidden ones included. Ducking on a mix the unit builds runs on the unit for each chosen channel, with XLR 1 as the key. While the USB Aux port is on, the unit builds the Aux mix too, at the same balance as the jacks and without Aux In.
- A microphone with noise removal, the voice changer, a software EQ or plugins plays back to the unit on a free USB pair, so the unit's mixes hear it processed. Mic setup uses the same pair, and Soundboard auditions play on the next free one, on the jacks only. When no pair is left, the microphone reaches the unit's mixes as it comes in and auditions are refused, and the UI says why.
- Plugins on a mix the unit builds and latency compensation for it are off in the mode. The UI, the terminal mixer and the Deck grey those controls and give the reason. The terminal mixer's Options tab and the
setMixingcommand, with its dry run, offer the same choice as the UI. - A profile recalled while the unit mixes, on connect after a replug or a restart too, played the jacks 21 dB louder than the profile meant, and switching back raised them again. The daemon now converts the headphone levels both ways, so a profile sounds the same in either mode. XLR 2 no longer takes a USB pair right after a start.
- Ducking on the Pro now runs on the unit for the Aux mix on the USB Aux port. Until now that setup fell back to software ducking, because the port had not been checked.
- Each of the Pro's jacks can play a feed of its own; they no longer share one. Two jacks on two different feeds have not been heard on a unit yet, in either mode. On the jacks, the output volume now turns the microphone's direct path down along with the computer audio, where it used to lower everything but the voice.
- Wave:3 and Wave:1: when the card comes back after a replug, a USB reset or an audio service restart, WirePlumber writes the mute and volume it saved earlier, and the unit took them as its own setting. For five seconds after the card appears the daemon now writes back the mute and headphone level from before. These units also keep their last settings on disk, so the values survive a daemon restart.
Daemon
- An idle daemon did a lot of work for nothing. Steam's two PipeWire clients made the app label change on every sweep, so the full state, about 38 KB, went to every client each second. Each state snapshot listed /usr/lib, and the USB scan threw about 1,700 exceptions a second. All three are gone. Measured with a Wave XLR Pro, the UI and OpenDeck connected and Steam running, the daemon went from 5.1% to 2.8% of a core.
- The mixer reads sinks, volumes, ports and the sink a browser stream plays into from the PipeWire registry instead of starting
pactlandpw-link. The defaults are read again when they change, when a device comes or goes, and every 30 seconds. An idle daemon now runspactl infotwice a minute and no other helper. Part of this work is from @CarinaSchoppe. - The Wave:3 and Wave:1 follow ALSA control events instead of polling the card, and still read it every 30 seconds. Without the event subscription the daemon goes back to reading every 500 ms. This change is from @CarinaSchoppe.
- With a monitor output switched off, such as Bluetooth earbuds, the daemon started
pw-linkonce a second to confirm the output was missing. It now asks once per port change. This fix is from @onlykshitij.
Mixer
- Programs that play through ALSA showed as "PipeWire ALSA [program]". They now carry the program's name, on the capture side too, and an assignment saved under the old name still applies. KDE's service daemon, kded5 or kded6, reads KDE.
UI and plugin
- Appearance offers five text sizes, from 80% to 120%. Normal keeps the skin's typography, and open windows follow the choice at once. From @CarinaSchoppe.
- Compact Desk shares the spare width of a wide layout between its matrix columns and its application tiles. From @CarinaSchoppe.
- In Broadcast and the other matrix skins, a channel row without a readout shows its volume while its fader moves, and a mix column shows the mix's volume while its master moves.
- The Manage window shows each application's icon, the one its tile shows.
- At 125% display scaling, an input rack label could sit one pixel past its strip. It no longer does. From @CarinaSchoppe.
- Deck: a Toggle key's Monitor output list stayed empty until OpenDeck restarted when the inspector opened while the daemon was still starting. It now fills once the outputs arrive.
Project
The protocol notes record the probes of the Pro's mix sections, playback pairs, output selectors and ducking that hardware mixing is built on, and the roadmap says why no third noise removal engine is planned. The Nix package adds alsa-lib to the daemon's library path for the ALSA events. The companion bridge is unchanged at openxlr-yabridge 5.1.1.54 revision 3. The browser companion is openxlr-browser-0.6.0.tar.gz and the Flatpak bundle is openxlr-0.6.0-x86_64.flatpak.
Upgrade note
- Restart the daemon and reopen the UI after upgrading:
systemctl --user restart openxlr-daemon. - Restart OpenDeck so it loads the new plugin.
- Hardware mixing stays off until you choose This unit, so an existing setup on the Pro mixes on the computer as before.
Install
Packages exist for Arch Linux, CachyOS and Omarchy (AUR), Ubuntu (PPA), Fedora (COPR) and NixOS (flake); this release also carries a .deb and an .rpm for a manual install, with checksum files and a build provenance attestation.
Arch Linux, CachyOS and Omarchy, from the AUR:
yay -S openxlr # or: paru -S openxlr
systemctl --user enable --now openxlr-daemon
openxlr # the mixer UI, also in your application menuOn Omarchy, a package built there also carries the bar plugin. Run openxlr-omarchy-enable once to link and enable it.
Ubuntu 24.04 and 26.04, from the PPA:
sudo add-apt-repository ppa:sparvoli/openxlr
sudo apt install openxlr
systemctl --user enable --now openxlr-daemon
openxlrFedora 44 or newer, from the COPR repository:
sudo dnf copr enable emaspa/openxlr
sudo dnf install openxlr
systemctl --user enable --now openxlr-daemon
openxlrNixOS: the flake's package and module, described in the README.
Replug the interface once after installing so the udev rule applies. The Stream Deck plugin is the zip on this release, for OpenDeck's install-from-file, and the browser companion is the openxlr-browser tar.gz. Building from source is covered in docs/install-from-source.md.