|
|
3 weeks ago | |
|---|---|---|
| .github/workflows | 3 weeks ago | |
| docker | 6 months ago | |
| gui | 3 weeks ago | |
| .gitignore | 3 weeks ago | |
| CONTRIBUTING.md | 3 weeks ago | |
| COPYING.GUI | 6 years ago | |
| COPYING.LIB | 6 years ago | |
| Makefile | 6 months ago | |
| Makefile.mk | 6 months ago | |
| Makefile.wine11 | 3 weeks ago | |
| README.md | 3 weeks ago | |
| RELEASE_NOTES.md | 3 weeks ago | |
| WINE11_PORTING.md | 3 weeks ago | |
| asio.c | 6 months ago | |
| asio_pe.c | 3 weeks ago | |
| asio_unix.c | 3 weeks ago | |
| jackbridge.c | 6 months ago | |
| jackbridge.h | 6 months ago | |
| main.c | 2 years ago | |
| ntdll_wine.def | 3 weeks ago | |
| ntdll_wine32.def | 3 weeks ago | |
| package.sh | 3 weeks ago | |
| regsvr.c | 7 months ago | |
| screenshot.png | 6 years ago | |
| unixlib.h | 3 weeks ago | |
| wineasio-register | 6 months ago | |
| wineasio.def | 3 weeks ago | |
| wineasio.dll.spec | 15 years ago | |
WineASIO provides an ASIO to JACK driver for WINE.
ASIO is the most common Windows low-latency driver, so is commonly used in audio workstation programs.
You can, for example, use with FL Studio, Ableton Live, Reaper, and other DAWs under GNU/Linux systems (together with JACK).
WineASIO now supports Wine 11!
Wine 11 (released January 13, 2025) introduced a new DLL architecture that separates PE (Windows) code from Unix code. This required a complete rewrite of WineASIO's build system and internal architecture.
| Wine Version | Build Method | Status |
|---|---|---|
| Wine 11.x | make -f Makefile.wine11 |
β Fully Supported |
| Wine 10.2+ | make -f Makefile.wine11 |
β Fully Supported |
| Wine 10.0-10.1 | make (legacy) |
β Supported |
| Wine 6.x-9.x | make (legacy) |
β Supported |
# Ubuntu/Debian
sudo apt install gcc-mingw-w64 wine-stable wine-stable-dev libjack-jackd2-dev
# Fedora
sudo dnf install mingw64-gcc mingw32-gcc wine-devel jack-audio-connection-kit-devel
# Arch Linux
sudo pacman -S mingw-w64-gcc wine wine-staging jack2
Build both 32-bit and 64-bit versions:
make -f Makefile.wine11 all
Build only 64-bit:
make -f Makefile.wine11 64
Build only 32-bit:
make -f Makefile.wine11 32
sudo make -f Makefile.wine11 install
This will:
wineasio64.dll to Wine's 64-bit PE directorywineasio64.so to Wine's 64-bit Unix directorywineasio.dll to Wine's 32-bit PE directorywineasio.so to Wine's 32-bit Unix directoryFor custom Wine installations, specify the Wine prefix:
sudo make -f Makefile.wine11 install WINE_PREFIX=/path/to/wine
Default paths for Wine 11:
# 64-bit
sudo cp build_wine11/wineasio64.dll /opt/wine-stable/lib/wine/x86_64-windows/
sudo cp build_wine11/wineasio64.so /opt/wine-stable/lib/wine/x86_64-unix/
# 32-bit
sudo cp build_wine11/wineasio.dll /opt/wine-stable/lib/wine/i386-windows/
sudo cp build_wine11/wineasio.so /opt/wine-stable/lib/wine/i386-unix/
After installation, register the driver:
# 64-bit
wine regsvr32 wineasio64.dll
# 32-bit (use syswow64 regsvr32 for WoW64)
wine ~/.wine/drive_c/windows/syswow64/regsvr32.exe wineasio.dll
Or use the Makefile:
make -f Makefile.wine11 register
make -f Makefile.wine11 verify
This checks:
# 32-bit
make 32
# 64-bit
make 64
# 32-bit
sudo cp build32/wineasio32.dll /usr/lib/i386-linux-gnu/wine/i386-windows/
sudo cp build32/wineasio32.dll.so /usr/lib/i386-linux-gnu/wine/i386-unix/
# 64-bit
sudo cp build64/wineasio64.dll /usr/lib/x86_64-linux-gnu/wine/x86_64-windows/
sudo cp build64/wineasio64.dll.so /usr/lib/x86_64-linux-gnu/wine/x86_64-unix/
Note: Wine paths vary between distributions. Adjust paths accordingly.
After installing, register WineASIO in your Wine prefix:
wineasio-register
env WINEPREFIX=~/my-daw-prefix wineasio-register
WineASIO is configured via the Windows registry (HKEY_CURRENT_USER\Software\Wine\WineASIO).
All options can be overridden by environment variables.
| Registry Key | Default | Environment Variable | Description |
|---|---|---|---|
| Number of inputs | 16 | WINEASIO_NUMBER_INPUTS |
Number of JACK input ports |
| Number of outputs | 16 | WINEASIO_NUMBER_OUTPUTS |
Number of JACK output ports |
| Autostart server | 0 (off) | WINEASIO_AUTOSTART_SERVER |
Start JACK automatically |
| Connect to hardware | 1 (on) | WINEASIO_CONNECT_TO_HARDWARE |
Auto-connect to physical ports |
| Fixed buffersize | 1 (on) | WINEASIO_FIXED_BUFFERSIZE |
Buffer size controlled by JACK |
| Preferred buffersize | 1024 | WINEASIO_PREFERRED_BUFFERSIZE |
Preferred buffer size (power of 2) |
| Client name | (auto) | WINEASIO_CLIENT_NAME |
JACK client name |
A PyQt5/PyQt6 control panel is included for configuring WineASIO settings. When you click βShow ASIO Panelβ in your DAW (e.g., FL Studio, Reaper), WineASIO launches the native Linux settings GUI.
How it works:
ControlPanel() functionfork()/exec() to launch wineasio-settingsLaunch manually:
# From Linux terminal
wineasio-settings
# From Wine (using Windows launcher)
wine /usr/share/wineasio/wineasio-settings64.exe
Requirements:
pip install PyQt5 or pip install PyQt6WineASIO 1.4.0+ creates JACK MIDI ports for routing MIDI between your DAW and other JACK applications.
When WineASIO connects to JACK, it registers:
WineASIO:midi_in - MIDI input (receives MIDI from other JACK clients)WineASIO:midi_out - MIDI output (sends MIDI to other JACK clients)jack_lsp | grep -i midi
You should see:
WineASIO:midi_in
WineASIO:midi_out
Use jack_connect, QjackCtl, or Carla to route MIDI:
# Connect a hardware MIDI input to WineASIO
jack_connect "system:midi_capture_1" "WineASIO:midi_in"
# Connect WineASIO MIDI output to a synth
jack_connect "WineASIO:midi_out" "Yoshimi:midi_in"
If your MIDI devices appear as ALSA MIDI (not JACK), use a2jmidid to bridge them:
# Start the ALSA-to-JACK MIDI bridge
a2jmidid -e &
# Now ALSA MIDI devices appear as JACK MIDI ports
jack_lsp | grep a2j
Wine uses winealsa.drv for Windows MIDI API support (separate from WineASIO). The WineASIO JACK MIDI ports provide an additional routing option specifically for JACK-based workflows.
wineasio-settings is in PATH: which wineasio-settingspython3 -c "from PyQt5.QtWidgets import QApplication"wineasio-settingsjack_lspjack_lsp | grep WineASIOa2jmidid -e to bridge to JACKEnsure both PE and Unix libraries are installed:
# Check files exist
ls -la /opt/wine-stable/lib/wine/x86_64-windows/wineasio64.dll
ls -la /opt/wine-stable/lib/wine/x86_64-unix/wineasio64.so
Make sure the DLL is marked as a Wine builtin:
sudo winebuild --builtin /opt/wine-stable/lib/wine/x86_64-windows/wineasio64.dll
jack_lspjack_lsp | grep -i wine32-bit Windows apps use WoW64. Ensure:
wineasio.dll is in i386-windows/wineasio.so is in i386-unix/wine ~/.wine/drive_c/windows/syswow64/regsvr32.exe wineasio.dllWine 11 requires a split architecture:
| Component | Description | Built With |
|---|---|---|
wineasio64.dll |
64-bit PE DLL (Windows code) | mingw-w64 |
wineasio64.so |
64-bit Unix library (JACK interface) | gcc |
wineasio.dll |
32-bit PE DLL (Windows code) | mingw-w64 |
wineasio.so |
32-bit Unix library (JACK interface) | gcc |
The PE DLL handles:
The Unix SO handles:
Communication between PE and Unix uses Wine's __wine_unix_call interface.
wineasio-1.3.0/
βββ asio_pe.c # PE-side code (Wine 11)
βββ asio_unix.c # Unix-side code (Wine 11)
βββ unixlib.h # Shared interface definitions
βββ Makefile.wine11 # Wine 11+ build system
βββ Makefile # Legacy build system
βββ asio.c # Legacy combined code
βββ wineasio.def # Export definitions
βββ ntdll_wine.def # 64-bit ntdll imports
βββ ntdll_wine32.def # 32-bit ntdll imports
βββ gui/ # PyQt control panel
β βββ settings.py # Main settings GUI
β βββ ui_settings.py # UI definitions
β βββ launcher/ # Windows launcher sources
βββ docker/ # Docker build environment
Makefile.wine11 for building with Wine 10.2+/11__wine_unix_call interfaceWineASIO:midi_in, WineASIO:midi_out)wineasio-settings*.exe)asio_pe.c - Windows-side ASIO implementationasio_unix.c - Unix-side JACK implementation (with MIDI support)unixlib.h - Shared interface definitionsContributions are welcome! Please test with:
Copyright (C) 2006 Robert Reif
Portions copyright (C) 2007 Ralf Beck
Portions copyright (C) 2007 Johnny Petrantoni
Portions copyright (C) 2007 Stephane Letz
Portions copyright (C) 2008 William Steidtmann
Portions copyright (C) 2010 Peter L Jones
Portions copyright (C) 2010 Torben Hohn
Portions copyright (C) 2010 Nedko Arnaudov
Portions copyright (C) 2011 Christian Schoenebeck
Portions copyright (C) 2013 Joakim Hernberg
Portions copyright (C) 2020-2023 Filipe Coelho
Portions copyright (C) 2025 Wine 11 Port Contributors
The WineASIO library code is licensed under LGPL v2.1, see COPYING.LIB for more details.
The WineASIO settings UI code is licensed under GPL v2+, see COPYING.GUI for more details.