Request for a possible inclusion of the Wineasio driver?

Joakim Hernberg jbh at alchemy.lu
Tue Oct 15 16:41:33 CDT 2013


I am the maintainer of a driver for Wine on Linux called Wineasio.  I'd
like to find a home for the code and am hoping to convince you of
adding it to the Wine codebase.

ASIO is an API developed by Steinberg for supporting low latency audio
hardware under Windows. Each hardware manufacturer uses Steinberg's SDK
to create a driver supporting their own hardware. Software using the
API is normally audio related such as Digital Audio Workstations,
virtual instruments and other music production software.

On Linux, Wineasio interfaces directly with the Jack audio API, and
runs on all hardware supported by Jack, which nowdays is the vast
majority on audio hardware supported in linux. On OS/X a derrived
driver called Coreasio has been created, and is in use by Image-line's
FLS port.

Jack runs on Linux, Solaris, FreeBSD, OS/X, iOS and Windows, so in
theory it ought to be possible to support Wineasio on all platforms
supported by Wine.  I don't know the details on how Coreasio works, but
in the case of Wineasio, the driver links directly to the Jack server's
client libs, so there is no need to alter any existing parts of Wine's
audiostack nor to reimplement and maintain a Jack driver for Wine
itself.  The only change needed is to include the driver in the source
tree.

The driver implements all the core functionality of the API, only some
optional and obscure parts of the API are missing.  It has been in use
for years on 32 bit Wine and does not appear to have any showstopping
bugs, if any at all.  I've personally used it for over a year on 64 bit
Wine, and I know of some other people who use it without problems on 64
bit too.  The API is stable and hasn't been changed nor expanded by
Steinberg for many years. It has been tested with audio production
software like Reaper and FLS, with virtual instruments, amp simulations
and other FX software from companies like Native Instruments, Ik
Multimedia, Toontracks, Celemony and many others.

The biggest problem is that the ASIO API is defined in the asio.h
header file distributed by Steinberg in their ASIO SDK, and that the
license explicitly forbids the distribution of any component by a third
party.  I imagine that this situation is not new to the Wine project
and similar to other SDKs needed.  I have a header file which I have
created by compiling the driver without including asio.h, and then
typing in the needed defines and structures while consulting asio.h.
The header makes the driver work in both 32 and 64 bit wine.

I propose to undertake the following:

1. Fix up the Wineasio code to confirm to Wine conventions and coding
practices.
2. Merge it into Wine for conditional compilation on linux with Jack as
a dependency.
3. Work together with the Wine project to merge in coreasio support for
use on OS X.

The latest sourcecode of the project is available at:
git://git.code.sf.net/p/wineasio/code wineasio-git
or as a tarball from: http://sourceforge.net/projects/wineasio/

Is this something that has any chance of getting accepted into Wine?

-- 

   Joakim



More information about the wine-devel mailing list