WineASIO post
This commit is contained in:
parent
40a0389b50
commit
d4aa454747
90
content/blog/2024-01-05-wineasio-bottles-ableton.md
Normal file
90
content/blog/2024-01-05-wineasio-bottles-ableton.md
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
---
|
||||||
|
title: WineASIO, Bottles, and Ableton
|
||||||
|
description: How to run Ableton in a bottle with minimal latency
|
||||||
|
date: 2024-01-05
|
||||||
|
tags:
|
||||||
|
- linux
|
||||||
|
- wine
|
||||||
|
- music
|
||||||
|
draft: true
|
||||||
|
extra:
|
||||||
|
auto_center_images: true
|
||||||
|
excerpt: A post showing the process of installing WineASIO into a bottle
|
||||||
|
aliases:
|
||||||
|
- /blog/wineasio-bottles-ableton
|
||||||
|
---
|
||||||
|
|
||||||
|
Ableton was not built to run inside Wine. Yet, I've been doing it anyways for the past 6-ish years with reasonable success anyways.
|
||||||
|
|
||||||
|
Over those years, my one complaint about the setup is latency. No matter what I tweaked, I couldn't get audio input/monitoring to behave as well as it does on a supported operating system.
|
||||||
|
|
||||||
|
Generally, when you encounter audio latency issues on Windows, the go-to solution is Steinberg's *Audio Stream Input/Output* (ASIO) API. Its effectively a direct pipe between software and your sound card, bypassing the Windows audio stack entirely. Could there be such a thing for Wine?
|
||||||
|
|
||||||
|
## WineASIO
|
||||||
|
|
||||||
|
Well, you read the title of this post, so I kinda already gave the answer to that question away.
|
||||||
|
|
||||||
|
[WineASIO](https://github.com/wineasio/wineasio) is a project that implements the ASIO API inside Wine, and pipes the audio to the Jack Audio Connection Kit (JACK) on the host system instead of a physical sound card.
|
||||||
|
|
||||||
|
While you could just follow the instructions in the WineASIO project README and skip over the rest of this post, the WineASIO project is mainly designed to work with a standard Wine install and JACK running on the host system. Being a Fedora user, I have neither of these things.
|
||||||
|
|
||||||
|
I instead use [Bottles](https://usebottles.com/) to manage multiple wineprefixes (*wineprefixi?*) and [PipeWire](https://www.pipewire.org/) to manage audio on my system. So, I had to do a bit of extra work to get WineASIO working.
|
||||||
|
|
||||||
|
### Compiling
|
||||||
|
|
||||||
|
Compiling WineASIO is quite simple. Firstly, grab the dependencies (the Wine and JACK headers):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo dnf install pipewire-jack-audio-connection-kit-devel wine-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, clone the WineASIO repo and compile it:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Clone the repo
|
||||||
|
cd /tmp
|
||||||
|
git clone https://github.com/wineasio/wineasio
|
||||||
|
cd wineasio
|
||||||
|
git submodule update --init --recursive
|
||||||
|
|
||||||
|
# Compile
|
||||||
|
make 64
|
||||||
|
```
|
||||||
|
|
||||||
|
This will produce a pair of libraries in `./build64`. Copy them to Wine's library directories:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo cp ./build64/wineasio.dll /usr/lib64/wine/x86_64-windows/
|
||||||
|
sudo cp ./build64/wineasio.dll.so /usr/lib64/wine/x86_64-unix/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installing into a Bottle
|
||||||
|
|
||||||
|
Firstly, you need to know your bottle's `WINEPREFIX`. You can find this by taking the output of the command `bottles-cli info bottles-path` and appending the name of your bottle to it. For example, my Ableton installation looks like this:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# echo $(bottles-cli info bottles-path)/Ableton-11-Suite
|
||||||
|
/home/ewpratten/.local/share/bottles/bottles/Ableton-11-Suite
|
||||||
|
```
|
||||||
|
|
||||||
|
With this path, set your `WINEPREFIX` environment variable, and run the WineASIO registration script:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export WINEPREFIX= ... # Your path here
|
||||||
|
/tmp/wineasio/wineasio-register
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, copy the built libraries into your bottle:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cp /tmp/wineasio/build64/wineasio.dll.so $WINEPREFIX/drive_c/windows/system32/wineasio.dll
|
||||||
|
cp /tmp/wineasio/build64/wineasio.dll.so $WINEPREFIX/drive_c/windows/system/wineasio.dll
|
||||||
|
```
|
||||||
|
|
||||||
|
## Using WineASIO
|
||||||
|
|
||||||
|
Now that WineASIO is installed, Ableton will automatically detect it and list it in your audio drivers list. Simply select it, and you're good to go. (You even get [Ableton Link](https://www.ableton.com/en/link/) support when using WineASIO!)
|
||||||
|
|
||||||
|
I personally have [a script](https://git.ewpratten.com/ewconfig/tree/scripts/ableton-linux) that handles this whole process for me automatically.
|
||||||
|
|
||||||
|
*Oh, ya. Happy New Year btw.*
|
Loading…
x
Reference in New Issue
Block a user