This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Getting Started

Installing PMX-1 and the first audio output?

The following section explain how to install and set up PMX-1 as well as how to connect the first audio device. Afterwards you should be ready so use PMX-1 and move on to the Tutorials or the rest of the Documentation.

This section describes the installation and a short usage example. It shows how to do the following:

  • Install the dependencies
  • Install PMX-1 from source either with the AUR package or by cloning the repository
  • Set up the Open Stage Control GUI
  • Connect hydrogen to the mixer

Prerequisites

PMX-1 is a Linux application written in C++. It use systemd, pipewire and wireplumber, and depends on GRPC, Protobuf, and other libraries. For development and debugging tools, it also depends on fish.

It uses meson and g++ for compilation.

The mixer uses several LV2 plugins for signal processing.

Installing dependencies on Arch Linux

To install (nearly) all dependencies in one shot, use the following command:

sudo pacman -S systemd pipewire wireplumber boost grpc protobuf yaml-cpp \
    libsystemd dbus fish git meson pipewire-audio pipewire-jack calf jalv \
    dpf-plugins-lv2 tmux cmake

Afterwards, we need to install two dependencies from the AUR.

Installing replxx

PMX-1 also uses replxx, which only has an AUR package so far. To install that, either uses the AUR helper of your choice, or clone the repository and build the package as follows:

git clone https://aur.archlinux.org/replxx.git
cd replxx
makepkg
sudo pacman -U replxx-*.pkg.tar.zst

Installing open-stage-control

git clone https://aur.archlinux.org/open-stage-control-bin.git
cd open-stage-control-bin
makepkg
sudo pacman -U open-stage-control-bin-*.pkg.tar.zst

Installation

PMX-1 is implemented in multiple repositories, which ultimately culminate in three installations: the PMX-1 back-end services, the Admin UI to configure routing, and the Open Stage Control GUI.

Installing the back-end services

TODO: Move the package to the AUR

The back-end services are implemented as a collection of interconnected custom pipewire filters, filter chains, osc and grpc services and wireplumber scripts, all orchestrated and managed as systemd units and configured via pipewire metadata.

To install all of that using the AUR package, execute the following commands:

git clone https://github.com/performance-mixer/pmx-git-arch
cd pmx-git-arch
makepkg
sudo pacman -U pmx-*.pkg.tar.zst

Installing the Admin UI

The PMX-1 Admin UI is an ASP.net application. It uses the GRPC API to communicate with the mixer and can be run everywhere, in this section, we will show how to build and install the application, the setup will be described in the Setup section.

Running straight from the repository

The easiest way to run the Admin UI is to clone the repository and run it straight from the project directory.

git clone https://github.com/performance-mixer/pmx-grpc
git clone https://github.com/performance-mixer/pmx-admin-ui
cd pmx-admin-ui/Pmx.Admin.Ui/
dotnet run

This will start the application and print the URL it listens on. Open it in the browser and the Admin UI is ready.

Installing system-wide

TODO:

  • Systemd unit files for admin ui management
  • Build and install script
  • PKGBUILD and AUR package

Installing the GUI

The Open Stage Control GUI is distributes as and Open Stage Control Interface, which can be opened and edited in Open Stage Control exactly like any other interface. To get the latest delivered version, clone the git repository.

git clone https://github.com/performance-mixer/pmx-osc-ui

To start the GUI, open pmx_osc_ui.json in Open Stage Control.

Setup

Is there any initial setup users need to do after installation to try your project?

Try it out

Can your users test their installation, for example by running a command or deploying a Hello World example?

1 - Install

Installing PMX-1

This section shows how to install PMX-1 on different Linux distributions (well, in the future, for now its only Arch).

This section describes the installation on different Linux distributions. It shows how to do the following:

  • Install the dependencies
  • Install PMX-1 Back-end services
  • Install The Admin UI
  • Install the Open Stage Control GUI

1.1 - Arch Linux

Install on arch linux.

This section describes the installation on Arch Linux.

Prerequisites

PMX-1 is a Linux application written in C++. It use systemd, pipewire and wireplumber, and depends on GRPC, Protobuf, and other libraries. For development and debugging tools, it also depends on fish.

It uses meson and g++ for compilation.

The mixer uses several LV2 plugins for signal processing.

Installing dependencies on Arch Linux

To install (nearly) all dependencies in one shot, use the following command:

sudo pacman -S systemd pipewire wireplumber boost grpc protobuf yaml-cpp \
    libsystemd dbus fish git meson pipewire-audio pipewire-jack calf jalv \
    dpf-plugins-lv2 tmux cmake

Afterwards, we need to install two dependencies from the AUR.

Installing replxx

PMX-1 also uses replxx, which only has an AUR package so far. To install that, either uses the AUR helper of your choice, or clone the repository and build the package as follows:

git clone https://aur.archlinux.org/replxx.git
cd replxx
makepkg
sudo pacman -U replxx-*.pkg.tar.zst

Installing open-stage-control

git clone https://aur.archlinux.org/open-stage-control-bin.git
cd open-stage-control-bin
makepkg
sudo pacman -U open-stage-control-bin-*.pkg.tar.zst

Installation

PMX-1 is implemented in multiple repositories, which ultimately culminate in three installations: the PMX-1 back-end services, the Admin UI to configure routing, and the Open Stage Control GUI.

Installing the back-end services

TODO: Move the package to the AUR

The back-end services are implemented as a collection of interconnected custom pipewire filters, filter chains, osc and grpc services and wireplumber scripts, all orchestrated and managed as systemd units and configured via pipewire metadata.

To install all of that using the AUR package, execute the following commands:

git clone https://github.com/performance-mixer/pmx-git-arch
cd pmx-git-arch
makepkg
sudo pacman -U pmx-*.pkg.tar.zst

Installing the Admin UI

The PMX-1 Admin UI is an ASP.net application. It uses the GRPC API to communicate with the mixer and can be run everywhere, in this section, we will show how to build and install the application, the setup will be described in the Setup section.

Running straight from the repository

The easiest way to run the Admin UI is to clone the repository and run it straight from the project directory.

git clone https://github.com/performance-mixer/pmx-grpc
git clone https://github.com/performance-mixer/pmx-admin-ui
cd pmx-admin-ui/Pmx.Admin.Ui/
dotnet run

This will start the application and print the URL it listens on. Open it in the browser and the Admin UI is ready.

Installing system-wide

TODO:

  • Systemd unit files for admin ui management
  • Build and install script
  • PKGBUILD and AUR package

Installing the GUI

The Open Stage Control GUI is distributes as and Open Stage Control Interface, which can be opened and edited in Open Stage Control exactly like any other interface. To get the latest delivered version, clone the git repository.

git clone https://github.com/performance-mixer/pmx-osc-ui

To start the GUI, open pmx_osc_ui.json in Open Stage Control.

2 - Setup

How to set up PMX-1.

PMX-1 has several components that can be configured. Generally if there are no conflicts with ports on your system, the defaults should all work out of the box. Nevertheless, the following section will provide an overview of what can be configured and how.

The Audio Output

The outputs of the layer mixer are configured to be automatically connected to the default output set in the pipewire metadata. Use your favorite system tool to select the output you want to use.

OSC API

The OSC API is the main means of communication with PMX-1. It is used to control the various parameters of the filter chains that comprise the heart of the mixer.

Network Receiver

The port which network receiver listens on is currently hard-coded to 33334.

Network Sender

The address and port to which network sender sends to is currently hard-coded to 127.0.0.1:3300.

Open Stage Control

To configure Open Stage Control to send and receive osc messages set up the following:

  • Set send to 127.0.0.1:33334
  • Set osc-port to 3300

Control Surfaces

A mixer wants to be controlled by fader, knobs and buttons, PMX-1 is no exception and comes with robust controller support.

Faderfox PC-4

The Faderfox controller has to be connected to the Midi Router. Additionally, because it can be highly customized, if the default configuration has been changed, the config has to be changed to factory settings.

Behringer CMD MM-1

This one is plug and play, it only needs to be connected to the Midi Router, the wireplumber scripts should take care of everything.

Traktor Z1

The Traktor Z1 is actually not a midi controller, but registers as a HID device which Linux exposes as a file named /dev/hidrawX. The device to use is configured in ~/.config/traktor-z1.config. The configuration file recognizes exactly one entry DEVICE_NAME=<device_name> where <device_name> is the absolute path to the device file.

GRPC API

The port which the GRPC API listens on is currently hard-coded to 50051.

3 - Connect

Connect hydrogen and make some noise.

This section decribes how to connect hydrogen to one of the inputs of PMX-1.

Prerequisites

The only prerequisite after all the work we did for setup and installation is to install hydrogen.

Installing Hydrogen on Arch Linux

sudo pacman -S hydrogen

Setup

Hydrogen, at least on my Arch Linux, is set up to connect to the default JACK audio output. To disable that, open the settings menu Options -> Preferences and select the Audio System tab. Uncheck the Connect to default JACK output ports options. Restart hydrogen afterwards.

Hydrogen should now start without automatically connecting the audio outputs.

Fire up PMX-1

The various services for the PMX-1 back-end are implemented with systemd in mind and should be started as a user service. To manage the services and monitor the logs the systemd tools systemctl and journalctl can be used.

An easier way to control the mixers services is to use the provided PMX-1 console application pmx-console which provides easy access to the main mixer management tasks. The easiest way to to set up the console, start the parameter monitor and systemd log streaming in one go is to use the provided debug script pmx-debug-tmux.fish, which uses tmux to create a viewer like show in the following screenshot.

Debug setup with tmux

The script starts tmux with pmx-console in the first window, journalctl following the user logs in the top right window and pmx-params-monitor in the bottom left corner, displaying the parameter changes in real time.

First we will check if the services are already running. Select the top left window, the one running pmx-console and run the status command. The output should be something similar to the following:

pmx-console

pmx ~> status
pipewire.service active
wireplumber.service active
pmx-filter-chain-ctrl.service  enabled
pmx-grpc-api.service  enabled
pmx-metadata-manager.service  enabled
pmx-midi-router.service  enabled
pmx-osc-network-receiver.service  enabled
pmx-osc-network-sender.service  enabled
pmx-traktor-z1-router.service  enabled
pmx-filter-chains.service  enabled
couldn't find producer pmx-midi-router
couldn't find producer pmx-osc-network-receiver
couldn't find producer pmx-traktor-z1-router
couldn't find consumer pmx-filter-chain-ctrl
couldn't find consumer pmx-osc-network-sender
pmx ~>

In this case, pipewire and wireplumber are running, but the PMX-1 services are only enabled and not running, because no other service actively requested them. To start the services run the start command. This will spark a flurry of activity in the log and the params watcher window, but ignoring those for now, the output of the start command should be a new line, which indicated that no error occurred and systemd accepted the command. Beccause systemd starts the services asynchronously, this doesn’t mean the services were started successfully, so we should run the status command again and if the output is something like the following, we’re good to go.

pipewire.service active
wireplumber.service active
pmx-filter-chain-ctrl.service active
pmx-grpc-api.service active
pmx-metadata-manager.service active
pmx-midi-router.service active
pmx-osc-network-receiver.service active
pmx-osc-network-sender.service active
pmx-traktor-z1-router.service active
pmx-filter-chains.service active

Otherwise, unfortunately, the services weren’t started successfully and troubleshooting is the name of the game. If you’re stuck, head to the Community section and ask for help.

Connect Using the Admin UI

Start the admin UI based on the chosen installation method from Install. Open the browser and navigate to the admin UI, normally available at http://localhost:5078. Navigate to the Inputs tab. Here the Admin UI presents the configuration of the 16 stereo input ports of the mixer.

We will connect Hydrogen to channel 1 of PMX-1. First, set the channel up to be a stereo channel. Make sure the stereo checkbox for channel 1 is checked.

Channel 1 as stereo

Select the ports names and for the left and right source channels of channel 1 as shown in the following screenshot.

Hydrogen set up for channel 1

If you start the playback in hydrogen now, it should be audible.