diff --git a/README.md b/README.md index fbc70f47..3e1737e5 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ compatibility while also staying easy to debug and maintain. - [Editor hosting modes](#editor-hosting-modes) - [Example](#example) - [Troubleshooting common issues](#troubleshooting-common-issues) +- [Performance tuning](#performance-tuning) - [Runtime dependencies and known issues](#runtime-dependencies-and-known-issues) - [Building](#building) - [32-bit bitbridge](#32-bit-bitbridge) @@ -330,6 +331,42 @@ group = "This will be ignored!" being able to start. There should be plugin output messages in your DAW or terminal that with more information on what went wrong. +## Performance tuning + +Running Windows VST plugins under Wine should have minimal performance impact, +but you may still notice an increase in latency and audio spikes. There are a +few things you can do to get rid of most or all of these negative side effects: + +- First of all, you'll want to make sure that your user is able to run programs + with realtime privileges. Note that on Arch and Manjaro this does not + necessarily require a realtime kernel as the `PREMPT` patch set is enabled on + their regular kernels. You can verify that this is set up correctly by running + `chrt -f 10 whoami`, which should print your username. + +- The second, possibly even more important thing is to use a build of Wine with + Proton's fsync patches. This can improve performance significantly when using + a lot of plugins at once. If you're running Arch or Manjaro, then you can use + [this](https://github.com/nine7nine/pkgbuilds_nspa/tree/master/wine-nspa) + audio production optimized Wine PKGBUILD. Aside from a patched version of Wine + you'll also need a supported kernel for this to work. Manjaro's kernel + supports fsync out of the box, and on Arch you can use the `linux-zen` kernel. + Finally you'll have to set the `WINEFSYNC` environment variable to `1` to + enable fsync. See the [search path setup](#search-path-setup) section for more + information on where to do this. You can use the following command to check if + this is set correctly: + + ```shell + env -i HOME="$HOME" $SHELL -l -c "echo $WINEFSYNC" + ``` + + If this prints `1` then everything is set up correctly. You'll have to log out + and back in again for this to take effect on applications launched from the + GUI. + + I don't know the what the best way to install an fsync patched version of Wine + on other distros is, so if anyone knows more about this then please let me + know and I'll add it to this section. + ## Runtime dependencies and known issues Any VST2 plugin should function out of the box, although some plugins will need