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?
Hey Jack,
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 had read about your header earlier this year in the wine forums and had thought/assumed, judging by this post ~ that you may have decided to put it in your repo (i see you have updated wineasio, recently)...Obviously, that header is not there, so i am curious; could you possibly make it available?
I'd like to try out x64 version of wineASIO, being as i avoid 32bit / don't use 32bit applications in Wine.
..and just on a general note: if there is a way to resolve/workaround the asio.h issue, it would be fantastic to see WineASIO included in Wine.
cheers
jordan