How to run Reaper in Wine on Linux

From CockosWiki

(Difference between revisions)
Jump to: navigation, search
m
(Reaper preferences)
 
(47 intermediate revisions not shown)
Line 1: Line 1:
==Introduction==
==Introduction==
-
 
+
There is no native linux port of Reaper so far, but luckily it can be made to run quite well in Wine on Linux, as can the vast majority of VST and VSTi plugins (excluding some copy protected ones).  The major drawbacks being higher cpu usage, higher latency, and a slightly sluggish gui.  The sad truth is that it runs much better in Windows, but on a modern multicore system it is more than usable for serious mixing work (especially at higher latencies), and for the occasional overdub at low latency while monitoring through FX. Recording high track counts at low latency, is however probably better done on Windows or OSX. This page attempts to explain what extra software is needed and how to tweak Reaper, Wine and Linux for best results.  This is intended as general information and does not cover distribution specific issues.  Use the forums or irc channels pertaining to your chosen distribution for such information.
-
There is no native linux port of Reaper so far, but luckily it can be made to run quite well under Wine in Linux, as can the vast majority of VST and VSTI plugins (excluding some with copy protection).  The major drawbacks being higher cpu usage, higher latency, and a slightly sluggish gui.  The sad truth is that it runs much better in windows, but on a modern multicore system it is more than workable on Linux. This page attempts to explain what extra software is needed and how to tweak Reaper, Wine and Linux for best results.  This is intended as general information and does not cover distribution specific issues.  Use the forums or irc channels pertaining to your chosen distribution for such information.
+
==Needed software==
==Needed software==
 +
* A '''bootable Linux''' installation with '''supported audio hardware'''.
 +
* '''JACK''', see: [http://jackaudio.org/ http://jackaudio.org/]
 +
* '''Wine''', see: [http://www.winehq.org/ http://www.winehq.org/]
 +
* The '''wine-rt patch''' (optional), see: [http://dl.dropbox.com/u/879835/wine-rt-101107.patch http://dl.dropbox.com/u/879835/wine-rt-101107.patch]
 +
* '''WineASIO''', see: [http://sourceforge.net/projects/wineasio/ http://sourceforge.net/projects/wineasio/]
-
* A bootable Linux installation with supported audio hardware.
+
== Soundcard support==
-
* JACK, see: [http://jackaudio.org/ http://jackaudio.org/]
+
* '''ALSA''' is the software layer that supplies support for most of the sound cards in Linux. See: [http://www.alsa-project.org/ http://www.alsa-project.org/] and for a list of supported hardware see: [http://www.alsa-project.org/main/index.php/Matrix:Main http://www.alsa-project.org/main/index.php/Matrix:Main].
-
* Wine, see: [http://www.winehq.org/ http://www.winehq.org/]
+
* '''FFADO''' is the software layer that provides support for firewire sound cards in Linux. See: [http://www.ffado.org/ http://www.ffado.org/] and for a list of supported hardware see: [http://www.ffado.org/?q=devicesupport/list http://www.ffado.org/?q=devicesupport/list].
-
* WineASIO, see: [http://sourceforge.net/projects/wineasio/ http://sourceforge.net/projects/wineasio/]
+
-
* The wine-rt patch, see: [http://dl.dropbox.com/u/879835/wine-rt-101107.patch http://dl.dropbox.com/u/879835/wine-rt-101107.patch]
+
==JACK==
==JACK==
 +
JACK is a keystone component for low latency audio on Linux.  From a windows perspective it can be viewed as a combination of ASIO and rewire, in as much as it allows the apps to connect to the sound card for low latency operation, and that it can connect different programs together and synchronize their transport.  It also has support for distributing audio processing over a network (lan/wan).  JACK exists in two implementations called JACK1 and JACK2, they are parallel implementations of the same API (programming interface) and are ABI (runtime) compatible.  JACK2 was intended to replace JACK1 thus the naming, but for various reasons this has not happened, and JACK1 is still the reference implementation.  Note that on a 64bit Linux you will also need to install 32bit client drivers for WineASIO to use. Be aware that JACK2 in it's default configuration (asynchronous mode) doubles the output latency. See: [http://jackaudio.org/ http://jackaudio.org/], [http://jackaudio.org/ JACK FAQ] and [http://linux.die.net/man/1/jackd jackd manpage] for more details.  Typically both JACK implementations are available in your distro as a binary packages and you would install either but not both of them simultaneously with your package manager.
-
JACK is a keystone component for low latency audio on linux.  From a windows perspective it can be viewed as a combination of ASIO and rewire, in as much as it allows the apps to connect to the sound card for low latency operation, and that it can connect different programs together and synchronize their transport.  It also has support for distributing audio processing over a network (lan/wan).  JACK exists in two implementations called JACK1 and JACK2, they are parallel implementations of the same API and are ABI compatible.  JACK2 was intended to replace JACK1 thus the naming, but for various reasons this has not happened, and JACK1 is still the reference implementation.  Be aware that JACK2 in it's default configuration (asynchronous mode) doubles the output latency. See: [http://jackaudio.org/ http://jackaudio.org/] and [http://jackaudio.org/ JACK faq/] for more detailsTypically this will be available in your distro as a binary package and you just need to install it with your package manager.
+
You might also want to install QJackCtl, a gui to control the JACK server.  It is somewhat analogous to the ASIO control panels in Windows, see: [http://qjackctl.sourceforge.net/ http://qjackctl.sourceforge.net/].  It is also typically installed through your package manager.
-
You might also want to install QJackCtl, a gui to control the JACK server.  Somewhat analogous to the windows ASIO control panel.  See: [http://qjackctl.sourceforge.net/ http://qjackctl.sourceforge.net/].  It is also typically installed through your package manager.
+
[[Installing and configuring JACK]]
==Wine==
==Wine==
 +
Wine lets you run Windows software on Linux (and other operating systems).  It's not an emulator in the sense of VirtualBox or VMWare, rather it's a collection of runtime libraries and other support software, setting up a Windows environment and mapping Windows functionality to the native equivalents on the host operating system.  It has the potential to be just as fast and in some cases even faster than native Windows.  Wine supports 32bit Windows executables on 32bit Linux and both 32/64bit executables on 64bit Linux. At the moment you are limited to 32bit Reaper on 64bit Linux due to WineASIO only supporting 32bit. See: [http://www.winehq.org/ http://www.winehq.org/] and [http://wiki.winehq.org/FAQ Wine FAQ] for more details.  It is also typically installed from the package manager of your distribution.
-
Wine let's you run Windows software on Linux (and other operating systems).  It's not really an emulator in the sense of VirtualBox or VMWare, rather it's a collection of runtime libraries and other support software, setting up a windows environment and mapping windows functionality to the native equivalents on the host operating systemIt has the potential to be just as fast and in some cases even faster than native windowsSee: [http://www.winehq.org/ http://www.winehq.org/] for more details.  It is also typically installed from the package manager of your distribution, but if you want to add the wine-rt functionality you might have to build it yourself.
+
The wine-rt patch allows programs that use Windows' concept of thread priority to gain similar functionality under Linux.  It maps Windows priority levels to Linux scheduling policies.  You will most likely need this if you want to run Reaper at low latency under Wine.  Unfortunately this has not been included in the standard Wine source code and it's unlikely that it will be included any time soon, thus this is one reason you might want to build Wine yourselfIf your distro has already patched it's Wine, then you can install it with the usual package managerDownload the patch from: [http://dl.dropbox.com/u/879835/wine-rt-101107.patch http://dl.dropbox.com/u/879835/wine-rt-101107.patch]
 +
 
 +
[[Installing and configuring Wine]]
==WineASIO==
==WineASIO==
 +
WineASIO is an ASIO driver for Wine that connects to the JACK server, effectively turning your ASIO aware Windows program into a JACK client.  So far it's only available for 32bit Wine, thus limiting you to running the 32bit version of Reaper in Wine.  Unfortunately you might end up having to build this yourself, as it needs a header file (asio.h) from Steinberg's ASIO SDK, which  Steinberg prohibits third parties from distributing.  This makes it impossible to distribute a complete source code archive and is the reason that many Linux distributions do not have a binary package of the driver. This is also the reason that there is no 64bit WineASIO yet, as the header needs to be rewritten due to differences in the meaning of data sizes between Windows and Linux on 64bit systems.  See: [http://sourceforge.net/projects/wineasio/ http://sourceforge.net/projects/wineasio/] and for the ASIO SDK: [http://www.steinberg.net/en/company/developer.html http://www.steinberg.net/en/company/developer.html], you will have to create an account, login, and download the SDK to get the asio.h file needed.  Some distributions might have a binary package of WineASIO saving you this step, if so just install using the package manager.
-
WineASIO is an ASIO driver for wine that connects to the JACK server, effectively turning your ASIO aware windows program into a JACK client.  So far it's only available for 32bit Wine, thus limiting you to running the 32bit version of Reaper in wine.  Unfortunately you might end up having to build this yourself, as it needs a header file (asio.h) from Steinberg's ASIO SDK, which  Steinberg prohibits 3:rd parties from distributing.  This is also the reason that there is no 64bit WineASIO yet, as the header needs to be rewritten due to differences in the meaning of data sizes between Windows and Linux on 64bit systems.  See: [http://sourceforge.net/projects/wineasio/ http://sourceforge.net/projects/wineasio/] and for the ASIO SDK: [http://www.steinberg.net/en/company/developer.html http://www.steinberg.net/en/company/developer.html], you will have to create an account, login and download the SDK to get the asio.h file needed.  Some distributions might have a binary package for WineASIO saving you this step.  If so just install using the package manager.
+
[[Installing and configuring WineASIO]]
-
==Wine-rt==
+
==Using MIDI==
 +
Wine does not support JACK midi, it needs to use ALSA directly for midi support. You need to use winecfg to configure Wine to use ALSA and nothing else for sound and midi support.  Note that WineASIO has nothing at all to do with this setting nor with midi support, as it accesses JACK directly independently of this setting.  Unfortunately Reaper's time stamping of midi messages seems to get lost somewhere, so the tightest timing that is to say the lowest jitter is achieved by using the lowest JACK/ASIO buffer size. 
-
The Wine-RT patch allows programs that use Windows' concept of thread priority to gain similar functionality under Linux.  It maps windows priority levels to linux scheduling policies.  You will most likely need this if you want to run Reaper at low latency under Wine.  Unfortunately this has not been included in the standard Wine source code and it's unlikely that it will be included any time soon thus this is one component you might have to build yourself.  If your distro has already patched it's wine, then you can install it with the usual package manager.  See: [http://dl.dropbox.com/u/879835/wine-rt-101107.patch http://dl.dropbox.com/u/879835/wine-rt-101107.patch]
+
==Reaper==
-
==Reaper preferences==
+
===Reaper preferences===
 +
* '''Preferences->Buffering->Use native events for syncronizing''': Due to the way wine works there is a lot of overhead in using IPC (Inter Process Communication).  Reaper uses one such mechanism to syncronise it's threads, namely Native Events.  Best results can most likely be achieved by unchecking Preferences->Buffering->Use native events for syncronizing.  This will have the drawback (on SMP systems) of the cpus/cores running in loops and thus cause extra cpu usage, but the trade off is lower latency and less risk of xruns (audio dropouts) in the ASIO/JACK callback thread.  One way of dealing with the high cpu usage is to manually specify a lower amount of cpus, like 1 or 2 in Preferences->Buffering until you really need more cpu.
 +
* '''Preferences->Appearances->UI updates''':  Setting this to Lazy always,  will speed up the zooming and scrolling somewhat and comes with no significant drawback.
-
* Preferences->Buffering->Use native events for syncronizing: Due to the way wine works there is a lot of overhead in using IPC (Inter Process Communication).  Reaper uses one such mechanism to syncronise it's threads, namely Native EventsBest results can most likely be achieved by unchecking Preferences->Buffering->Use native events for syncronizing.  This will have the drawback (on SMP systems) of the cpus polling in loops and thus cause extra cpu usage, but the trade off is lower latency and less risk of xruns (audio dropouts) in the ASIO callback threadOne way of dealing with the high cpu usage is to manually specify a lower amount of cpus, like 1 or 2 in Preferences->Buffering until you really need more cpu.
+
===Plugin support===
 +
All Reaper's built in VST and JS plugins are supportedIn addition most freeware and many commercial (read copyprotected) VST and VSTi plugins are also supported.  In general challenge/response protected plugins are supported, while dongle protected plugins are notSome plugins or features might not work due to a bug or missing functionality in Wine.
-
* Preferences->Appearances->UI updates: Setting this to Lazy always, will speed up the zooming and scrolling somewhat and comes with no significant drawback.
+
===Video playback support===
 +
* Download '''Aegiscorp''''s FFMPEG for x32 from [http://aegiscorp.free.fr/ffmpeg/ http://aegiscorp.free.fr/ffmpeg/]. Extract and copy the dlls into the Reaper program directory (where reaper.exe is located, and not into a subdir).
 +
* Get the '''K-Lite Codec Pack Full''' from [http://www.free-codecs.com/k_lite_codec_pack_download.htm http://www.free-codecs.com/k_lite_codec_pack_download.htm] and install into Wine.
 +
 
 +
===A list of working VST and VSTi plugins===
 +
* All plugins from Schwa and Stillwell, see: [http://www.stillwellaudio.com/ http://www.stillwellaudio.com/]
 +
* All plugins from IK Multimedia, see: [http://www.ikmultimedia.com/ http://www.ikmultimedia.com/]
 +
* Most (All?) plugins from Native Instruments, see: [http://www.native-instruments.com/ http://www.native-instruments.com/]
 +
* All plugins from Toontrack, see: [http://www.toontrack.com/ http://www.toontrack.com/]
 +
* More to come with your help :)
==Linux specifics==
==Linux specifics==
-
=== Supported soundcards===
+
===32/64bit support===
 +
Reaper will run on both 32 and 64bit Linux.  You are however limited to running the 32bit Windows executable in 32bit Wine at the moment.
-
* ALSA is the software that supplies most of the low level sound card drivers in Linux.  See:  [http://www.alsa-project.org/ http://www.alsa-project.org/] and for a list of supported hardware see: [http://www.alsa-project.org/main/index.php/Matrix:Main http://www.alsa-project.org/main/index.php/Matrix:Main].
+
===Custom made solutions===
-
 
+
* KXStudio is a a set of multimedia oriented repositories for Debian/Ubuntu based Linux distributionsIt aims at being desktop agnostic and thus works well with all desktop managersAmongst many other apps it includes a wine-rt patched Wine, WineASIO and a trial version of Reaper. See: [http://kxstudio.sourceforge.net/ http://kxstudio.sourceforge.net/]
-
* FFADO is the software the provides firewire soundcard support in Linux. See: [http://www.ffado.org/ http://www.ffado.org/] and for a list of supported hardware see: [http://www.ffado.org/?q=devicesupport/list http://www.ffado.org/?q=devicesupport/list].
+
* LinReaper is a custom made installation utility for Reaper on Linux. See:[http://forum.cockos.com/showthread.php?t=26690 http://forum.cockos.com/showthread.php?t=26690]
-
 
+
* Remix_OS is a Debian based distribution for low latency audio, it includes WineASIO and a trial version of Reaper. See: [http://www.remix-os.org/ http://www.remix-os.org/]
-
===Using MIDI===
+
-
 
+
-
===Video drivers===
+
===Kernel patches===
===Kernel patches===
-
 
* -rt - Realtime patch
* -rt - Realtime patch
-
 
+
* -bfs or -ck - Brain Fuck Scheduler patch, see: [http://en.wikipedia.org/wiki/Brain_Fuck_Scheduler http://en.wikipedia.org/wiki/Brain_Fuck_Scheduler]
-
* -bfs or -ck - Brain Fuck Scheduler patch
+
-
 
+
* -bfq - Budget Fair Queueing patch
* -bfq - Budget Fair Queueing patch
===Linux utilities===
===Linux utilities===
 +
* '''schedtool''', see: [http://linux.die.net/man/8/schedtool schedtool man page].
 +
* '''chrt''', see: [http://linux.die.net/man/1/chrt chrt man page].
 +
* '''ionice''', see: [http://linux.die.net/man/1/ionice ionice man page].
-
* schedtool
+
===Video drivers===
-
* chrt
+
===Mounting Windows partitions===
-
 
+
-
* ionice
+
-
 
+
-
==A list of working VST and VSTIs==
+
-
 
+
-
* In general most any VST/VSTI without copy protection works well.
+
-
 
+
-
* All plugins from Schwa and Stillwell, see: [http://www.stillwellaudio.com/ http://www.stillwellaudio.com/]
+
-
 
+
-
* All plugins from IK Multimedia, see: [http://www.ikmultimedia.com/ http://www.ikmultimedia.com/]
+
-
 
+
-
* Most (All?) plugins from Native Instruments, see: [http://www.native-instruments.com/ http://www.native-instruments.com/]
+
-
 
+
-
* All plugins from Toontrack, see: [http://www.toontrack.com/ http://www.toontrack.com/]
+

Latest revision as of 06:39, 21 June 2011

Contents

Introduction

There is no native linux port of Reaper so far, but luckily it can be made to run quite well in Wine on Linux, as can the vast majority of VST and VSTi plugins (excluding some copy protected ones). The major drawbacks being higher cpu usage, higher latency, and a slightly sluggish gui. The sad truth is that it runs much better in Windows, but on a modern multicore system it is more than usable for serious mixing work (especially at higher latencies), and for the occasional overdub at low latency while monitoring through FX. Recording high track counts at low latency, is however probably better done on Windows or OSX. This page attempts to explain what extra software is needed and how to tweak Reaper, Wine and Linux for best results. This is intended as general information and does not cover distribution specific issues. Use the forums or irc channels pertaining to your chosen distribution for such information.

Needed software

Soundcard support

JACK

JACK is a keystone component for low latency audio on Linux. From a windows perspective it can be viewed as a combination of ASIO and rewire, in as much as it allows the apps to connect to the sound card for low latency operation, and that it can connect different programs together and synchronize their transport. It also has support for distributing audio processing over a network (lan/wan). JACK exists in two implementations called JACK1 and JACK2, they are parallel implementations of the same API (programming interface) and are ABI (runtime) compatible. JACK2 was intended to replace JACK1 thus the naming, but for various reasons this has not happened, and JACK1 is still the reference implementation. Note that on a 64bit Linux you will also need to install 32bit client drivers for WineASIO to use. Be aware that JACK2 in it's default configuration (asynchronous mode) doubles the output latency. See: http://jackaudio.org/, JACK FAQ and jackd manpage for more details. Typically both JACK implementations are available in your distro as a binary packages and you would install either but not both of them simultaneously with your package manager.

You might also want to install QJackCtl, a gui to control the JACK server. It is somewhat analogous to the ASIO control panels in Windows, see: http://qjackctl.sourceforge.net/. It is also typically installed through your package manager.

Installing and configuring JACK

Wine

Wine lets you run Windows software on Linux (and other operating systems). It's not an emulator in the sense of VirtualBox or VMWare, rather it's a collection of runtime libraries and other support software, setting up a Windows environment and mapping Windows functionality to the native equivalents on the host operating system. It has the potential to be just as fast and in some cases even faster than native Windows. Wine supports 32bit Windows executables on 32bit Linux and both 32/64bit executables on 64bit Linux. At the moment you are limited to 32bit Reaper on 64bit Linux due to WineASIO only supporting 32bit. See: http://www.winehq.org/ and Wine FAQ for more details. It is also typically installed from the package manager of your distribution.

The wine-rt patch allows programs that use Windows' concept of thread priority to gain similar functionality under Linux. It maps Windows priority levels to Linux scheduling policies. You will most likely need this if you want to run Reaper at low latency under Wine. Unfortunately this has not been included in the standard Wine source code and it's unlikely that it will be included any time soon, thus this is one reason you might want to build Wine yourself. If your distro has already patched it's Wine, then you can install it with the usual package manager. Download the patch from: http://dl.dropbox.com/u/879835/wine-rt-101107.patch

Installing and configuring Wine

WineASIO

WineASIO is an ASIO driver for Wine that connects to the JACK server, effectively turning your ASIO aware Windows program into a JACK client. So far it's only available for 32bit Wine, thus limiting you to running the 32bit version of Reaper in Wine. Unfortunately you might end up having to build this yourself, as it needs a header file (asio.h) from Steinberg's ASIO SDK, which Steinberg prohibits third parties from distributing. This makes it impossible to distribute a complete source code archive and is the reason that many Linux distributions do not have a binary package of the driver. This is also the reason that there is no 64bit WineASIO yet, as the header needs to be rewritten due to differences in the meaning of data sizes between Windows and Linux on 64bit systems. See: http://sourceforge.net/projects/wineasio/ and for the ASIO SDK: http://www.steinberg.net/en/company/developer.html, you will have to create an account, login, and download the SDK to get the asio.h file needed. Some distributions might have a binary package of WineASIO saving you this step, if so just install using the package manager.

Installing and configuring WineASIO

Using MIDI

Wine does not support JACK midi, it needs to use ALSA directly for midi support. You need to use winecfg to configure Wine to use ALSA and nothing else for sound and midi support. Note that WineASIO has nothing at all to do with this setting nor with midi support, as it accesses JACK directly independently of this setting. Unfortunately Reaper's time stamping of midi messages seems to get lost somewhere, so the tightest timing that is to say the lowest jitter is achieved by using the lowest JACK/ASIO buffer size.

Reaper

Reaper preferences

  • Preferences->Buffering->Use native events for syncronizing: Due to the way wine works there is a lot of overhead in using IPC (Inter Process Communication). Reaper uses one such mechanism to syncronise it's threads, namely Native Events. Best results can most likely be achieved by unchecking Preferences->Buffering->Use native events for syncronizing. This will have the drawback (on SMP systems) of the cpus/cores running in loops and thus cause extra cpu usage, but the trade off is lower latency and less risk of xruns (audio dropouts) in the ASIO/JACK callback thread. One way of dealing with the high cpu usage is to manually specify a lower amount of cpus, like 1 or 2 in Preferences->Buffering until you really need more cpu.
  • Preferences->Appearances->UI updates: Setting this to Lazy always, will speed up the zooming and scrolling somewhat and comes with no significant drawback.

Plugin support

All Reaper's built in VST and JS plugins are supported. In addition most freeware and many commercial (read copyprotected) VST and VSTi plugins are also supported. In general challenge/response protected plugins are supported, while dongle protected plugins are not. Some plugins or features might not work due to a bug or missing functionality in Wine.

Video playback support

A list of working VST and VSTi plugins

Linux specifics

32/64bit support

Reaper will run on both 32 and 64bit Linux. You are however limited to running the 32bit Windows executable in 32bit Wine at the moment.

Custom made solutions

  • KXStudio is a a set of multimedia oriented repositories for Debian/Ubuntu based Linux distributions. It aims at being desktop agnostic and thus works well with all desktop managers. Amongst many other apps it includes a wine-rt patched Wine, WineASIO and a trial version of Reaper. See: http://kxstudio.sourceforge.net/
  • LinReaper is a custom made installation utility for Reaper on Linux. See:http://forum.cockos.com/showthread.php?t=26690
  • Remix_OS is a Debian based distribution for low latency audio, it includes WineASIO and a trial version of Reaper. See: http://www.remix-os.org/

Kernel patches

Linux utilities

Video drivers

Mounting Windows partitions

Personal tools