Foreword by Shane Dunne: This article was submitted by my good friend David Hunter, and I wanted to share it here because his experience may be of interest to some Unify users. I edited David's original text a bit, and added several web links.
Please note PlugInGuru does not recommend or support this. If you want to try it, you're on your own.
Although there is no native Linux version of Unify, the Windows version can be run quite successfully on Linux using Wine, the compatibility software that allows Microsoft Windows programs to run on Unix-like operating systems.
In this article, I describe some of the steps and procedures to run Unify on Ubuntu Studio 20.04 and Ubuntu 18.04. Some details are omitted, such as installing Debian packages from the command line, but I do cover how to get around some stumbling blocks. All this is correct to the best of my understanding, and may be useful as a guide and starting point for your particular situation.
Unify runs essentially as usual under Wine; consult the Unify manual for general usage instructions.
I installed Unify on two relatively old PCs which I refer to here as “System 1” and “System 2”:
Important: Unless your software/hardware supports openGL GLSL versions >3.0 Unify will not work properly under Wine. To check your support level, at a shell prompt, enter:
$glxinfo | grep GLSL
If the result is less than 3.0, you must install newer graphics hardware. Initially the System 1 computer failed this test, so I replaced the on-board graphics controller with a low-cost PCI Express graphics card: MSI GeForce GT 710 DirectX (based on the NVIDIA GeForce GT 710 chip) that could support a GLSL version greater than 3.0. After installation of the graphics card I then reinstalled Ubuntu Studio 20.04, and when the installation was complete the supported GLSL level was reported as 3.20, sufficient for Unify.
After the Ubuntu Studio 20.04 reinstallation was complete, Wine version 5.0 was installed on the system. Under the Windows operating system Unify can manage Audio IO in 3 different ways:
For the Windows environment (which Wine emulates) the ASIO sound card protocol developed by Steinberg is the preferred route. For this to work under Wine on Linux the wineasio package must be installed. One place this package is available is from the KXStudio repositories at https://kx.studio/Repositories:Applications. Install both the 32 and 64 bit packages from the Linux command line, then you must register both packages by running:
wine64 regsvr32 wineasio.dll regsvr32 wineasio.dll
At the completion of each registration command the response should indicate a successful registration. If registration is not successful, you may not have installed all the necessary Wine components, and/or you may need to ensure that the user has audio group privileges. For instance in Ubuntu 18.04 the libfaudio package is not included; see https://forum.winehq.org/viewtopic.php?t=32192. The Arch Linux page https://aur.archlinux.org/packages/wineasio/ also has very useful instructions.
Both Linux and the JACK audio system must be configured properly to allow real-time use by the user; see here for the full story. The upshot is that the user must be registered in the audio group in order to have the privileges to use JACK and also other real-time activities such as occur with the wineasio components used by Unify. These privileges are automatically set up in Ubuntu Studio and some other distros, but if you are using a plain-vanilla Linux distro such as Ubuntu, you must add yourself to the audio group, by editing the file /etc/group and modify the audio group to include your username such as shown below
This was necessary for System 2, with the plain Ubuntu installation, but not necessary for System 1, that uses Ubuntu Studio.
You must also configure JACK to work with the proper sound card/chip. This is crucial. Even if there are no additional sound cards added to your system, the default configuration may prevent JACK from starting properly. I found this to be true for the System 2 system even with the native Intel sound implementation.
After experimentation I have found the best way to start Jack is from the command line. The first command is for System 1 (Soundblaster Live) and the second is for System 2 which has the native Intel sound device.
jackd -d alsa -d hw:Live & jackd -d alsa -d hw:PCH &
You can check for system sound devices using the command below.
For reasons which are beyond me (https://linuxmusicians.com/viewtopic.php?t=17176), I found it necessary always to invoke jackd for proper operation in most circumstances. After you have started jackd you can start QjackCtl to configure jack more exactly. There are various options in the setup menu. For instance one option includes running jack in real-time mode (check it) and so forth.
After these preambles have been completed, you can then download, install, and activate the Windows version of Unify more or less as you would on Windows; see Downloading and Installing Unify.
After downloading the Unify installer, run it from the Linux command line as follows:
You may be prompted to download and install additional packages required by Wine; confirm when requested. In the final stages of the installation, you may click on the option to create a desktop link, but note this may not work on all versions of Linux. When starting Unify for the first time, it's probably best to navigate to your Wine C drive location and start the program from a shell, to view the start up process:
cd ~/.wine/drive_c/Program Files/PlugInGuru/Unify wine Unify.exe
Do not be surprised if there are numerous Wine startup messages.
You will also need to activate your copy of Unify, just as you would on Windows. Online activation will work on some Linux systems, but not on others, because some systems (most notably Ubuntu Studio 20) do not grant the Wine software the privilege of making Internet connections. Use offline activation instead.
Before proceeding with the real time Jack connection method it might be best to start with the default Windows driver which uses pulseaudio. Be sure no instances of the JACK driver (jackd etc.) are present. Kill any JACK processes using the Linux kill command if necessary.
Start Unify, either from the command line or by double-clicking the desktop icon. Unify should work right away using the default Windows Audio driver.
Click on the circular MIDI plug icon at the lower left of the Unify window to open a virtual keyboard (Show MIDI view) at the bottom of the Unify window. Click on the keyboard and you should hear notes produced by the default sine wave generator. You can play around for a while before starting to use the real-time ASIO drivers.
To start using the ASIO drivers, first close the Unify program and then start JACK using the command-line method outlined above under “Starting JACK”. Jack should start normally and indicate it has started correctly. Then start the QjackCtl program through the desktop GUI interface (or command line). After QjackCtl has started open its “connect” GUI window. From the Unify main window, lower bottom right corner, click on the gear icon to get to the Unify Settings view, and click the “Audio/MIDI Settings” button. You should see something like this:
Select “ASIO” from the “Audio device type” menu, then select the “Wine ASIO Driver” from the “Device” menu; the result is shown below:
If you have installed all the necessary Wine components, and added your username to the audio group, the wineasio driver should load and run properly. Otherwise, you may get a message from Unify indicating it couldn't access the ASIO driver.
Thus far on System1 I have used Unify along with Rosegarden and Yoshimi. With two instances of Yoshimi running and Rosegarden active, the screenshot below shows the JACK and ALSA connections which make everything work together: the Yamaha piano, the QuNexus keyboard, Unify, and the two Yoshimi instances.
I created the “piano” device for the Yamaha piano by creating a device, and connected it to the UART port of the SoundBlaster card.
Similarly, you can make Unify a playback device for Rosegarden as follows: