Use Raspberry PI to Route Spotify over USB to your Behringer XR18 or Mackie DL Series mixer

A common task when doing concerts is to have pause music during the gig breaks – and of course “YES” you can always have an extra iPhone or computer running with Spotify installed and use two analog inputs on your mixer. (Simple!) – But to raise the bar slightly and make something a little bit more advanced – I came up with the following solution as a spin-off when researching and developed the USB multi-track recorder Z-LiveRec for mixers like Behringer XR18 and Mackie DL16/32S and using a Raspberry PI as the heart. 🙂

Multi-tracks over USB 2 or 3 is a fantastic idea, which is used by most mixer vendors on the market. You can both send and receive up to 16 or 32 or even 64 tracks (dependent on your hardware) at the same time. So there is some scenarios which you can use here. One common is to utilize plug-in effects in a DAW tool like a cool echo or reverb…and address it as a effect on your DL32S, send it to a Mac over USB to the DAW/plug-in and immediately get the signal back over USB to your mixer again. See the video recording describing this on the following link.

For Raspberry PI there is a Spotify Connect Client called Raspotify available which can be used as extension adding an extra sound device on the network seen from any of your PC, Mac, Iphone running Spotify client etc. Simply – you are able to tell Spotify to send the music to your Raspberry device and then use the headphone output etc to hear the music. In this case your PC/iPhone/iPad etc controls the music…and the Raspberry just executes the task and playing the music stream. Benefit received: You could stand in the audience and trigger the music from your iPad running Master Fader and the Spotify client wirelessly!

But to use two analog inputs connected to your Raspberry PI on your mixer to play this digital stream feels in this case feels a bit annoying. (Especially for me which is using my DL32S to record and play 32 channels over USB using the Z-LiveRec App.)

However, I found the following scenario which enable me to use the Raspberry PI to also send the Raspotify music stream over USB to my mixer. So the Spotify music stream is now been sent to return channel 1&2 on my mixers (Behringer XR18 or DL16/32S or DL32R mixer)

To configure a Raspberry PI to handle this you need to do two steps:
a) Install the Raspotify Client,
b) Configure Raspberry to send the information further over USB to your mixer.

So lets get down to business – how to do it?

  1. After connecting your mixer via USB to the raspberry PI.
aplay -l

Run the command “aplay -l” in a terminal window on your Raspberry PI and look for the USB Card number for your mixer. (e.g. 1 or 2 – this could differ when running on a hdmi screen when doing the configuration – until running on a 3.5″ touch screen)

2. Execute the command in a terminal window on your Raspberry:

sudo nano /usr/share/alsa/alsa.conf

Look for the lines: (A couple of pages down)

"defaults.ctl.card 0"
"defaults.pcm.card 0"


Change these from 0 to your Card number from what is reported by "aplay"
"defaults.ctl.card 1"
"defaults.pcm.card 1"

Save the file by pressing CTRL X - press Yes...and then return to save. 

3. Install the Raspotify Client: (In a terminal window on your Raspberry PI)


curl -sL https://dtcooper.github.io/raspotify/install.sh | sh

4. Now, edit the Raspotify configuration file (Set in your parameters and uncomment some configuration in this file)

sudo nano /etc/default/raspotify

DEVICE_NAME="Mackie DL32S"
BITRATE="320"
OPTIONS="--username <your_spotify_name> --password <xxxxx>"
BACKEND_ARGS="--backend also"

Save the file by pressing CTRL X - press Yes...and then return to save. 

5. Now, patch the asound.conf file (This file may not exist – so nano editor will create it. Please note that you need change the CARD=X to your mixer environment reported by aplay on step #1.

sudo nano /etc/asound.conf

pcm.!default{
type asym
playback.pcm {
type plug
slave.pcm "dmix:CARD=1,RATE=48000"
}
}

Save the file by pressing CTRL X - press Yes...and then return to save. 

6. Last – do a reboot of your Raspberry!

The Raspberry needs to be on the same network as your mixer (Either over ethernet or via WI-FI) – The whole network needs to have access to internet to get the music stream and the Spotify Connect run.

But you will now be able to see your DL-32S in the Spotify application as a device from your PC/Mac/Iphone/iPad and if you hit play…the Rasberry will start to play music and send it over USB port 1&2 to your mixer…to be recieved on the Return channel 1&2 on your mixer.

Pretty neat? 🙂

Z-LiveRec 2.21 launched!

Z-LiveRec 2.21 is just launched and have been updated for both the trial/demo and the full version.

Changes

  • Z-LiveRec V2.21 launched 2021-10-14
  • Fixed a bug with Buffer-Overruns that was not reported in the log file – Z-LiveRec.log
  • More information added to the log file handling, Z-LiveRec version, date of recording etc.
  • License key handling – showing green/red license button before/after registration.
  • Auto start option stored in license settings GUI – this checkbox adds the Z-LiveRec.exe to run after the OS been booted. Please note: This requires Z-LiveRec.exe needs to be present on the internal storage for the OS.
  • GUI checkboxes and dropdowns added under the license button/dialog for the full version of Z-LiveRec where it is possible to:
    • Enable windows borderless mode – make the app to stay in focus – good when running on 3.5″ screens.
    • Add the log function and verbose level in the GUI.
    • Switch on/off the auto start function – reboot of the OS required.
    • Handle buffer settings for the recording process.
    • All these parameters are stored and can be edited in the Z-LiveRec.cfg file. (if using the Trial/Demo version – auto start will not be supported)
  • Fixed an error with rights issue the auto update function for previous versions of Z-LiveRec – when looking for newer versions – it will now enable cloud updates for future upcoming releases. Existing users of older versions (2.19 & 2.20) must manually download the latest version through www.z-liverec.com through their account or unpacking the downloaded z-liverec.zip file which can be found in the same directory as the current exe. But after 2.21 release, the auto update function will be present for future releases.
  • Existing and registered users of the full version can download the latest version for free!
  • Unregistered users of the full version will allow up recordings up to 500 MB storage (was 350 MB) – Unlimited for registered users – Files in W64/CAF format have successfully been recorded to 50GB+
  • The Trial/demo version is always free and will allow up to 200MB of recordings.

The new settings GUI found under the “License” for the full version of Z-LiveRec.

How to build a multitrack recorder!

To create your own smooth multitrack recorder hardware for mixer consoles like Mackie DL16S/32S/DL32R and Behringer X32/XR18 based on Raspberry Pi 4, the following information is needed:

Bill of material:

  • Raspberry PI 4, 2MB or more (Raspberry PI 3 will probably work fine also)
  • RP4/RP3 Case with 3.5″ touch display
  • 16GB SD Card with Raspbian OS (Latest version)
  • USB 3.1 memory stick / transfer rates above 130 mb/s or a SSD disk
  • Z-LiveRec application for RP4

I picked up a cheap 3.5″ screen kit on Ebay with case and heatsink for about $15.

To assembly the PI 4, screen in the case with heat sink is pretty straight forward. But how to enable the 3.5″ XP2046 type display via SPI in Raspbian with touch support also enabled? Not completely obvious – there is a lot of confusing information and links pointing to strange driver installations etc…and they all had in common are they never worked – however I found a post written by somebody that had made the journey for real.
The secret remains in the fact that the drivers are already built into the kernel using the latest version of Raspbian PI OS version 2021-05-07. Note: So you don’t need to install any other manufacturer drivers. The only driver needed is for the touch screen part.

Step 1.

Preparations: Download and install the Raspberry PI Imager app from Raspberrypi.org to your PC or MAC.

  • In the Imager app, select the Raspberry PI OS (32Bit)
  • Insert an empty 16GB MicroSD card in your PC.
  • Choose storage – select the 16 GB MicroSD card
  • Click “Write” to generate the OS MicroSD.
  • When ready – install the card into your Raspberry PI and boot it up against a HDMI monitor.
  • Follow the generic installation and setup scenario.

Step 2.

First of all enable SPI by using the terminal and the command:
raspi-config
Navigate to ‘Interfaces’ and then enable SPI function.

Reboot if needed through the command in the terminal:
sudo reboot

The touch screen should turn on and be white colored.

Step 3.

Give the following command to update and upgrade Raspbian to the latest:

sudo apt-get update
sudo apt-get upgrade
sudo reboot

To get all the lastest!

Step 4.

Now to modify the configuration file to configure the display:
sudo nano /boot/config.txt


then add this line to the bottom, In the PI4 section, add the following:

dtoverlay=piscreen,speed=16000000,rotate=90

(You can comment out the existing #dtoverlay=)


Press Ctrl+X, Y, and Enter. (To save the file)

Give the command:
sudo reboot

Important: Unplug your HDMI cable now!

You now see Raspbian booting up on the 3.5 inch screen.

Step 5.

At this point your mouse and touch screen will probably be moving backwards. In the newer versions of Raspbian (Raspberian Buster) they changed input control from evdev to libinput. You need therefore to install evdev or it will ignore your screen settings found in the conf file 99-calibration.conf configurations.

sudo apt-get install xserver-xorg-input-evdev

sudo reboot

You can now modify your 99-calibration.conf file

sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf

Copy and past below

Section “InputClass”
Identifier “calibration”
MatchProduct “ADS7846 Touchscreen”
# Don’t use libinput but evdev for the touch screen and the pen
Driver “evdev”
Option “Calibration” “3936 227 268 3880”
Option “InvertY” “false”
Option “InvertX” “false”
EndSection

Save the file by using the CTRL-X – Y + Enter command.

sudo reboot

Your Raspberry Pi 4 should come up now on the 3.5” Touchscreen and it should be working in the right direction.

Note: If you need to run the raspberry pi on the external hdmi monitor again…just plug-in the hdmi cable again – pretty smooth!

You can now install Z-LiveRec app according to the manual.

Z-LiveRec 2.20 launched!

Z-LiveRec 2.20 is just launched and have been updated for both the trial/demo and the full version.

Changes:

  • The file dialog when running in borderless windows mode and when opening a sound file – have been corrected to work.
  • More log data have been added to the Z-LiveRec.log file to make it more clear which file have been recorded, file size, date, time, buffer or other status errors which have been collected during the recording session.
  • The file extension when selecting files to play – do now follow the global selected file extension.
  • The auto update function (in the license page) is only enabled for registered users of Z-LiveRec. (Please note – un-activated versions of Z-LiveRec stops after recording 350 MB. And the trial version stops at 200MB of recording.)
  • Some minor changes in the code!
  • Performance tests have been done during recording with 32 Channels, 24 bits and 48kHz for 3.5 hours to a single CAF file – with successful results.

Registered users of Z-LiveRec (2.19 and later) can auto update their version online their Raspberry PI’s. (Requires internet access). (e.g. 2.19>2.20)

Z-LiveRec 2.19 launched

Z-LiveRec 2.19 (Both trial and full version) is launched and includes a couple of new features and bug fixes.

Some new features in 2.19:

  • Auto Update function for registrated users added from 2.19 – will allow Z-LiveRec to update from now the latest version. (Requires network access on your RPI – to be able to auto update – settings found under the license tab button)
  • Running Z-LiveRec in bordeless application window – perfect for smaller displays (Set in a variable in z-liverec.cfg – deco=1)
  • Configuration is saved in Z-LiveRec.cfg directly when anything is changed in the application. (Previous – this was done at recording)
  • Dynamic update of sound devices and storage disks…if anything has changed during session – like adding a new drive, USB Stick…or adding a new sound device over USB using plug and play.
  • Z-LiveRec Manual updated to reflect the changes above.
  • Minor fixes when running big recordings – going over 4GB using ExFat and W64 or CAF type of formats.
    (Please note: Wav files does not support going over 4GB or using USB Sticks with FAT32 format)

Have a look on the product page for more information!

Z-LiveRec launched!

Z-LiveRec is a multitrack USB recorder/player for Raspberry PI 4/PI 400 & Core Class Audio/ALSA Compliant devices and digital mixing consoles like Mackie DL-16S/DL-32S series and Behringer XR18 &X32 series. It handles 2 to 48 channels, 48Khz, 24 bits recordings over USB 2 and store them into a single multitrack wave, aiff, caf or W64 type of file.

These files can later be used directly in Apple Logic Pro X, Steinberg Cubase or Reaper for multitrack post production or can be replayed to your mixer console for virtual soundchecks.