ASIO to JACK driver for WINE
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 7.5KB

11 months ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. # WineASIO
  2. WineASIO provides an ASIO to JACK driver for WINE.
  3. ASIO is the most common Windows low-latency driver, so is commonly used in audio workstation programs.
  4. You can, for example, use with FLStudio under GNU/Linux systems (together with JACK).
  5. ![Screenshot](screenshot.png)
  6. For best results with Debian-based distributions,
  7. enable the [KXStudio repositories](https://kx.studio/Repositories) and install WineASIO from there.
  8. ### BUILDING
  9. Do the following to build for 32-bit Wine.
  10. ```sh
  11. make 32
  12. ```
  13. Do the following to build for 64-bit Wine.
  14. ```sh
  15. make 64
  16. ```
  17. ### INSTALLING
  18. To install 32-bit WineASIO (substitute with the path to the 32-bit wine libs for your distro).
  19. ```sh
  20. sudo cp build32/wineasio32.dll /usr/lib/i386-linux-gnu/wine/i386-windows/
  21. sudo cp build32/wineasio32.dll.so /usr/lib/i386-linux-gnu/wine/i386-unix/
  22. ```
  23. To install 64bit WineASIO (substitute with the path to the 64-bit wine libs for your distro).
  24. ```sh
  25. sudo cp build64/wineasio64.dll /usr/lib/x86_64-linux-gnu/wine/x86_64-windows/
  26. sudo cp build64/wineasio64.dll.so /usr/lib/x86_64-linux-gnu/wine/x86_64-unix/
  27. ```
  28. **NOTE:**
  29. **Wine does not have consistent paths between different Linux distributions, these paths are only a hint and likely not what will work for you.**
  30. **New versions of wine might also need to use `wineasio64.so` as name instead of `wineasio64.dll.so`.**
  31. **It is up to the packager to figure out what works for the Wine version used on their specific distro.**
  32. #### EXTRAS
  33. For user convenience a `wineasio-register` script is included in this repo, if you are packaging WineASIO consider installing it as part of WineASIO.
  34. Additionally a control panel GUI is provided in this repository's `gui` subdir, which requires PyQt5 to build and run.
  35. The WineASIO driver will use this GUI as the ASIO control panel.
  36. ### REGISTERING
  37. After building and installing WineASIO, we still need to register it on each Wine prefix.
  38. For your convenience a script is provided on this repository, so you can simply run:
  39. ```sh
  40. wineasio-register
  41. ```
  42. to activate WineASIO for the current Wine prefix.
  43. #### CUSTOM WINEPREFIX
  44. The `wineasio-register` script will register the WineASIO driver in the default Wine prefix `~/.wine`.
  45. You can specify another prefix like so:
  46. ```sh
  47. env WINEPREFIX=~/asioapp wineasio-register
  48. ```
  49. ### GENERAL INFORMATION
  50. ASIO apps get notified if the jack buffersize changes.
  51. WineASIO can slave to the jack transport.
  52. WineASIO can change jack's buffersize if so desired. Must be enabled in the registry, see below.
  53. The configuration of WineASIO is done with Windows registry (`HKEY_CURRENT_USER\Software\Wine\WineASIO`).
  54. All these options can be overridden by environment variables.
  55. There is also a GUI for changing these settings, which WineASIO will try to launch when the ASIO "panel" is clicked.
  56. The registry keys are automatically created with default values if they doesn't exist when the driver initializes.
  57. The available options are:
  58. #### [Number of inputs] & [Number of outputs]
  59. These two settings control the number of jack ports that WineASIO will try to open.
  60. Defaults are 16 in and 16 out. Environment variables are `WINEASIO_NUMBER_INPUTS` and `WINEASIO_NUMBER_OUTPUTS`.
  61. #### [Autostart server]
  62. Defaults to off (0), setting it to 1 enables WineASIO to launch the jack server.
  63. See the jack documentation for further details.
  64. The environment variable is `WINEASIO_AUTOSTART_SERVER`, and it can be set to on or off.
  65. #### [Connect to hardware]
  66. Defaults to on (1), makes WineASIO try to connect the ASIO channels to the physical I/O ports on your hardware.
  67. Setting it to 0 disables it.
  68. The environment variable is `WINEASIO_CONNECT_TO_HARDWARE`, and it can be set to on or off.
  69. #### [Fixed buffersize]
  70. Defaults to on (1) which means the buffer size is controlled by jack and WineASIO has no say in the matter.
  71. When set to 0, an ASIO app will be able to change the jack buffer size when calling CreateBuffers().
  72. The environment variable is `WINEASIO_FIXED_BUFFERSIZE` and it can be set to on or off.
  73. #### [Preferred buffersize]
  74. Defaults to 1024, and is one of the sizes returned by `GetBufferSize()`, see the ASIO documentation for details.
  75. Must be a power of 2.
  76. The other values returned by the driver are hardcoded in the source,
  77. see `ASIO_MINIMUM_BUFFERSIZE` which is set at 16, and `ASIO_MAXIMUM_BUFFERSIZE` which is set to 8192.
  78. The environment variable is `WINEASIO_PREFERRED_BUFFERSIZE`.
  79. Be careful, if you set a size that isn't supported by the backend, the jack server will most likely shut down,
  80. might be a good idea to change `ASIO_MINIMUM_BUFFERSIZE` and `ASIO_MAXIMUM_BUFFERSIZE` to values you know work on your system before building.
  81. In addition there is a `WINEASIO_CLIENT_NAME` environment variable,
  82. that overrides the JACK client name derived from the program name.
  83. ### CHANGE LOG
  84. #### 1.2.0
  85. * 29-SEP-2023: Fix compatibility with Wine > 8
  86. * 29-SEP-2023: Add wineasio-register script for simplifying driver registration
  87. #### 1.1.0
  88. * 18-FEB-2022: Various bug fixes (falkTX)
  89. * 24-NOV-2021: Fix compatibility with Wine > 6.5
  90. #### 1.0.0
  91. * 14-JUL-2020: Add packaging script
  92. * 12-MAR-2020: Fix control panel startup
  93. * 08-FEB-2020: Fix code to work with latest Wine
  94. * 08-FEB-2020: Add custom GUI for WineASIO settings, made in PyQt5 (taken from Cadence project code)
  95. #### 0.9.2
  96. * 28-OCT-2013: Add 64-bit support and some small fixes
  97. #### 0.9.1
  98. * 15-OCT-2013: Various bug fixes (JH)
  99. #### 0.9.0
  100. * 19-FEB-2011: Nearly complete refactoring of the WineASIO codebase (asio.c) (JH)
  101. #### 0.8.1
  102. * 05-OCT-2010: Code from Win32 callback thread moved to JACK process callback, except for bufferSwitch() call.
  103. * 05-OCT-2010: Switch from int to float for samples.
  104. #### 0.8.0
  105. * 08-AUG-2010: Forward port JackWASIO changes... needs testing hard. (PLJ)
  106. #### 0.7.6
  107. * 27-DEC-2009: Fixes for compilation on 64-bit platform. (PLJ)
  108. #### 0.7.5
  109. * 29-Oct-2009: Added fork with call to qjackctl from ASIOControlPanel(). (JH)
  110. * 29-Oct-2009: Changed the SCHED_FIFO priority of the win32 callback thread. (JH)
  111. * 28-Oct-2009: Fixed wrongly reported output latency. (JH)
  112. #### 0.7.4
  113. * 08-APR-2008: Updates to the README.TXT (PLJ)
  114. * 02-APR-2008: Move update to "toggle" to hopefully better place (PLJ)
  115. * 24-MCH-2008: Don't trace in win32_callback. Set patch-level to 4. (PLJ)
  116. * 09-JAN-2008: Nedko Arnaudov supplied a fix for Nuendo under WINE.
  117. #### 0.7.3
  118. * 27-DEC-2007: Make slaving to jack transport work, correct port allocation bug. (RB)
  119. #### 0.7
  120. * 01-DEC-2007: In a fit of insanity, I merged JackLab and Robert Reif code bases. (PLJ)
  121. #### 0.6
  122. * 21-NOV-2007: add dynamic client naming (PLJ)
  123. #### 0.0.3
  124. * 17-NOV-2007: Unique port name code (RR)
  125. #### 0.5
  126. * 03-SEP-2007: port mapping and config file (PLJ)
  127. #### 0.3
  128. * 30-APR-2007: corrected connection of in/outputs (RB)
  129. #### 0.1
  130. * ???????????: Initial RB release (RB)
  131. #### 0.0.2
  132. * 12-SEP-2006: Fix thread bug, tidy up code (RR)
  133. #### 0.0.1
  134. * 31-AUG-2006: Initial version (RR)
  135. ### LEGAL STUFF
  136. Copyright (C) 2006 Robert Reif
  137. Portions copyright (C) 2007 Ralf Beck
  138. Portions copyright (C) 2007 Johnny Petrantoni
  139. Portions copyright (C) 2007 Stephane Letz
  140. Portions copyright (C) 2008 William Steidtmann
  141. Portions copyright (C) 2010 Peter L Jones
  142. Portions copyright (C) 2010 Torben Hohn
  143. Portions copyright (C) 2010 Nedko Arnaudov
  144. Portions copyright (C) 2011 Christian Schoenebeck
  145. Portions copyright (C) 2013 Joakim Hernberg
  146. Portions copyright (C) 2020-2023 Filipe Coelho
  147. The WineASIO library code is licensed under LGPL v2.1, see COPYING.LIB for more details.
  148. The WineASIO settings UI code is licensed under GPL v2+, see COPYING.GUI for more details.