Skip to content

Releases: giang17/wineasio

v1.5.0 - Robustness & Performance Overhaul

05 Apr 16:26

Choose a tag to compare

Summary

Major robustness and performance release with 14 fixes across all priority levels. Replaces the Sleep-polling architecture with event-driven signaling, eliminates mutex usage in the JACK realtime thread, and fixes multiple memory leaks and crash scenarios.

Tested: Reaper + Serum2 + Pianoteq9 at 64 samples / 48kHz — zero xruns in Docker with RT scheduling.

Critical

  • Lock-free atomics in JACK realtime thread — replaces pthread_mutex to eliminate priority inversion and xruns
  • eventfd-based signaling — replaces Sleep(1) polling with poll(eventfd), reducing latency jitter from ~1ms to microseconds and eliminating ~1000 unnecessary syscalls/sec
  • JACK shutdown callback — graceful handling when JACK server crashes instead of deadlocking
  • Init loop fix — clear stale JACK activation flags in asio_start() to prevent host reset loop

High

  • Memory leak fixpe_audio_buffers freed in DisposeBuffers() (leaked on every sample rate change)
  • Race condition fixhost_driver_state marked volatile for cross-thread visibility
  • Null-pointer guards — abort on jack_port_register() failure instead of segfault in RT callback
  • Crash guard — safe path extraction in configure_driver() for paths without extension/backslash
  • Init error leak fixjack_input/output_ports freed in all callback registration error paths

Medium

  • fork() safety — replaced vfork() with fork() + SA_NOCLDWAIT to prevent deadlocks and zombie processes
  • mlockall removed — eliminated mlockall(MCL_FUTURE) that locked ~107MB for the entire process; JACK handles RT memory locking internally
  • 64-byte aligned buffers_aligned_malloc(64) matches JACK buffer alignment for optimal SSE/AVX memcpy

Low

  • ASIO spec compliance — removed double buffer-switch priming in Start() that violated the ASIO specification
  • 64-bit sample position — fixed GetSamplePosition() high word (was hardcoded 0, overflowed after ~25h at 48kHz)
  • Thread creator mutex — protected global jack_thread_creator_privates against concurrent initialization

Docker Note

For RT audio in Docker, add ulimits to your docker-compose.yml:

ulimits:
  rtprio:
    soft: 95
    hard: 95
  memlock:
    soft: -1
    hard: -1

v1.4.4 - Remove unused JACK MIDI infrastructure

31 Jan 14:20

Choose a tag to compare

Changes

Removed

  • JACK MIDI ports - Removed non-functional WineASIO:midi_in and WineASIO:midi_out JACK ports
    • These ports were placeholders not connected to the Windows MIDI API
    • DAWs could not use them for MIDI routing

How to use MIDI with Wine

Wine's built-in winealsa.drv provides full MIDI support. Use a2jmidid -e to bridge ALSA MIDI devices to JACK:

# Start ALSA-to-JACK MIDI bridge
a2jmidid -e &

# Connect your MIDI device to Wine
jack_connect "a2j:Your Keyboard (capture)" "a2j:WINE midi driver (playback)"

Full Changelog

https://github.com/giang17/wineasio/blob/master/CHANGELOG.md

v1.4.3 - Performance Fix

28 Jan 03:23

Choose a tag to compare

Changes

  • FIX: Remove excessive debug traces that caused xruns
  • FIX: Remove TRACE calls from real-time JACK callback path
  • FIX: Remove high-frequency polling traces (~1000 calls/sec)
  • CHANGE: Debug output disabled by default (enable with -DWINEASIO_DEBUG)
  • DOCS: Document dynamic symbol loading approach for Wine 11 WoW64
  • Restores .def placeholder files for compatibility

What's Fixed

This release significantly improves audio stability by eliminating debug logging from performance-critical paths. Previously, debug traces in the JACK real-time callback and the callback polling thread (running ~1000x/sec) could cause audio dropouts (xruns).

Upgrade Notes

If you experienced xruns or audio glitches with v1.4.2, this update should resolve those issues. Simply rebuild and reinstall:

make -f Makefile.wine11 clean
make -f Makefile.wine11 all
sudo make -f Makefile.wine11 install

For Developers

To enable debug traces during development, add -DWINEASIO_DEBUG to UNIX_CFLAGS in Makefile.wine11. Note that this will impact real-time performance.

v1.4.2 - Wine 11 WoW64 32-bit Fix

21 Jan 20:57

Choose a tag to compare

🎉 Wine 11 WoW64 32-bit Support - FULLY WORKING!

This release fixes a critical issue with 32-bit Windows applications on Wine 11 WoW64.

🔧 Critical Fix

Discovery: In Wine 11 WoW64, 32-bit PE DLLs use 64-bit Unix libraries!

32-bit PE (wineasio.dll) → WoW64 Thunking → 64-bit Unix (wineasio.so)

Changes

  • Makefile.wine11: Unix .so for 32-bit PE now correctly built with -m64
  • Installation: wineasio.so now installed to x86_64-unix/ (not i386-unix/)
  • asio_pe.c: Audio buffers allocated on PE side for address space compatibility
  • asio_unix.c: JACK callback uses PE-allocated buffers

✅ Tested Applications

Application Architecture Status
REAPER 32-bit 32-bit PE ✅ Working
REAPER 64-bit 64-bit PE ✅ Working
Garritan CFX Lite 32-bit PE ✅ Working
FL Studio 2025 64-bit PE ✅ Working

📦 Installation

# Build
make -f Makefile.wine11 all

# Install
sudo make -f Makefile.wine11 install

# Register
wine regsvr32 wineasio.dll
wine regsvr32 wineasio64.dll

📖 Documentation

  • See docs/WINE11_WOW64_32BIT_SOLUTION.md for detailed problem analysis
  • See docs/WINE11_WOW64_ARCHITECTURE.md for architecture explanation

Full Changelog

See CHANGELOG.md

WineASIO v1.4.1 - Wine 11 Support (Documentation & Testing)

20 Jan 19:03

Choose a tag to compare

WineASIO v1.4.1 - Documentation & Testing Release

Release Date: January 21, 2026

This is a maintenance release after v1.4.0 with documentation improvements and comprehensive 32-bit testing verification.

🎉 Highlights

  • Complete Wine 11 support with PE/Unix split architecture
  • 32-bit fully verified - Extensive testing confirms it works correctly
  • Diagnostic tool included - test_asio_minimal.c for troubleshooting
  • Comprehensive documentation - CHANGELOG, DEVELOPMENT guide, and more

📚 What's New in v1.4.1

Documentation

  • 📖 CHANGELOG.md - Complete version history
  • 📖 DEVELOPMENT.md - Comprehensive developer guide
  • 📖 Enhanced README - Berkeley DB troubleshooting section
  • 📖 Cleaned up temporary debug files

Testing & Verification

  • 32-bit testing complete - No NULL pointer crashes
  • test_asio_minimal.c - Minimal ASIO host for diagnostics
  • Confirmed working - vtable, COM interface, all ASIO functions work
  • 📝 Documented - Berkeley DB crashes are Wine bugs, not WineASIO

🔧 Installation

Same as v1.4.0 - see README.md

# Build
make -f Makefile.wine11 all

# Install
sudo make -f Makefile.wine11 install

# Register
make -f Makefile.wine11 register

📖 Documentation

🐛 Known Issues

Berkeley DB crashes in some 32-bit apps - This is a Wine/libdb compatibility issue, NOT a WineASIO bug. See README for workarounds.

✨ What's in Wine 11 Support (from v1.4.0)

  • New PE/Unix split architecture - Separate Windows and Linux code
  • JACK MIDI ports - WineASIO:midi_in and WineASIO:midi_out
  • Settings GUI - Native Linux panel with PyQt5/PyQt6
  • Full 32-bit and 64-bit support - Both architectures work correctly

📊 Compatibility

Wine Version Status
Wine 11.x ✅ Fully supported
Wine 10.2+ ✅ Fully supported
Wine 6.x-10.1 ✅ Use legacy Makefile

🙏 Credits

Thanks to the Wine development team and the Linux audio community!


Full Changelog: https://github.com/giang17/wineasio/blob/master/CHANGELOG.md

WineASIO 1.4.0 - Wine 11 Edition 🍷🎵

14 Jan 21:50

Choose a tag to compare

What's New

This is a major release bringing full Wine 11 compatibility with a complete rewrite of the build system and internal architecture.

✨ Highlights

  • Wine 11 Support - New PE/Unix split architecture for Wine 10.2+/11
  • Settings GUI - Launch settings directly from your DAW's ASIO control panel
  • JACK MIDI - New WineASIO:midi_in and WineASIO:midi_out ports

📦 Downloads

File Description
wineasio-1.4.0-source.tar.gz Complete source code
wineasio-1.4.0-binaries.tar.gz Pre-built binaries (DLLs + SOs)

🔧 Quick Install

# From source
tar -xzf wineasio-1.4.0-source.tar.gz
cd wineasio-1.4.0-source
make -f Makefile.wine11 all
sudo make -f Makefile.wine11 install
make -f Makefile.wine11 register

# From binaries
tar -xzf wineasio-1.4.0-binaries.tar.gz
cd wineasio-1.4.0-binaries
./install.sh