Browse Source

WineASIO 0.7.0

tags/v1.0.0
Joakim B Hernberg 15 years ago
parent
commit
9456b2c5ea
5 changed files with 673 additions and 336 deletions
  1. +4
    -1
      Makefile
  2. +91
    -28
      README.TXT
  3. +566
    -303
      asio.c
  4. +1
    -0
      main.c
  5. +11
    -4
      settings.h

+ 4
- 1
Makefile View File

@@ -63,7 +63,7 @@ RC = wrc

### Generic targets

all: $(SUBDIRS) $(DLLS:%=%.so) $(EXES:%=%.so)
all: asio.h $(SUBDIRS) $(DLLS:%=%.so) $(EXES:%=%.so)

### Build rules

@@ -104,6 +104,9 @@ $(SUBDIRS:%=%/__clean__): dummy
$(EXTRASUBDIRS:%=%/__clean__): dummy
-cd `dirname $@` && $(RM) $(CLEAN_FILES)

distclean:: clean
$(RM) asio.h

### Target specific build rules
DEFLIB = $(LIBRARY_PATH) $(LIBRARIES) $(DLL_PATH)



+ 91
- 28
README.TXT View File

@@ -1,3 +1,13 @@
CONTENTS
========
1. Installation
2. User Instruction
3. Credits
4. Change Log

1. INSTALLATION
---------------

Before installation edit the prefix path in the Makefile
PREFIX = <root path you use>

@@ -17,51 +27,104 @@ then, again as normal user: regsvr32 wineasio.dll

Notes:
The asio.c file uses 32 bit integer buffers, wich is supported by
most asio applications. The asio.c.float uses 32 bit float buffers and
most asio applications. The asio.c.float uses 32 bit float buffers and
thus avoids the format conversion necessary for jack.


Runtime settings
----------------

You can set the number of ASIO inputs/outputs using environment variables
ASIO_INPUTS
ASIO_OUTPUTS
2. USER INSTRUCTIONS
--------------------

with bash e.g.:
export ASIO_INPUTS=4
export ASIO_OUTPUTS=8
The driver can be configured in two ways: either using environment variables
or using a configuration file.

You can set the connections for the ports using environment variables
INPORTn=client:port
OUTPORTn=client:port
where "n" is the wine port number, starting at zero and the "client:port"
is the JACK port you want to use. These are used to override physical ports
that would otherwise be used.
The configuration file can be set per user in ".wineasiocfg".
As a fallback, a site file can be provided in "/etc/default/wineasiocfg"
if desired.

Rather than setting these in your environment, you can set up a file called
.wineasiocfg in your home directory (or a site-wide /etc/default/wineasiocfg).
The format for the configuration file is simply "var=val".

Each WINE asio client will get its name from the command executed, tagged
as "wineasio[file.exe]". You can override this using environment variables
or the config file by setting
wineasio[file.exe]="My Client Name"
If using the shell, either include the assignment on the command line:
ASIO_INPUTS=0 ~/bin/reaper.exe
or ensure the variable has been exported:
EXPORT ASIO_INPUTS=0
~/bin/reaper.exe

----------------
The available variables are as follows:
ASIO_INPUTS
ASIO_OUTPUTS
ASIO_INPORTNAME<n>
ASIO_OUTPORTNAME<n>
ASIO_INPORT<n>
ASIO_OUTPORT<n>
<clientname>

The last entry allows you to change the client name from the default, which
is constructed from the program name prefixed by "ASIO". For example,
ASIO_reaper.exe=REAPER
All of the entries beginning ASIO_ can also have entries specific to a client,
using the assigned client name. For example,
REAPER_INPUTS=0

INPUTS and OUTPUTS
------------------
These let you limit the number of JACK ports allocated to this client.

INPORTNAME and OUTPORTNAME
--------------------------
These allow you to rename the input and output ports for the client.
The default names are "input_<n>" and "output_<n>". For example,
REAPER_OUTPORTNAME0=left
REAPER_OUTPORTNAME1=right

INPORT and OUTPORT
------------------
These allow you to connect the client to JACK ports of your choice.
The default is to connect JACK's "hardware" inputs to your client's inputs
and your client's outputs to JACK's "hardware" outputs. You might be
running some other application, e.g. an icecast server, and want to
send output to that. For example,
ASIO_OUTPORT0=idjc-mx:aux_lt
ASIO_OUTPORT1=idjc-mx:aux_rt


3. CREDITS
----------

original code: Robert Reif posted to the wine mailinglist
see also http://bugs.winehq.org/show_bug.cgi?id=2161

modified by: Ralf Beck (musical_snake@gmx.de)
port mapping, config file, dynamic client naming:

port mapping, config file, dynamic client naming, bringing
back in line with Robert Reif's code
Peter L Jones (pljones@users.sf.net)

todo:
- make timecode sync to jack transport


changelog:
4. CHANGE LOG
-------------
0.7:
01-DEC-2007: In a fit of insanity, I merged JackLab and Robert Reif code bases. (PLJ)

0.6:
10-NOV-2007: add dynamic client naming
21-NOV-2007: add dynamic client naming (PLJ)

0.0.3:
17-NOV-2007: Unique port name code (RR)

0.5:
03-SEP-2007: port mapping and config file
03-SEP-2007: port mapping and config file (PLJ)

0.3:
30-APR-2007: corrected connection of in/outputs
30-APR-2007: corrected connection of in/outputs (RB)

0.1:
???????????: Initial RB release (RB)

0.0.2:
12-SEP-2006: Fix thread bug, tidy up code (RR)

0.0.1:
31-AUG-2006: Initial version (RR)

+ 566
- 303
asio.c
File diff suppressed because it is too large
View File


+ 1
- 0
main.c View File

@@ -152,6 +152,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
return CLASS_E_CLASSNOTAVAILABLE;
}


/*******************************************************************************
* DllCanUnloadNow
* Determines whether the DLL is in use.


+ 11
- 4
settings.h View File

@@ -17,9 +17,16 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/

static const char* ENV_INPUTS = "ASIO_INPUTS";
static const char* ENV_OUTPUTS = "ASIO_OUTPUTS";
static const char* ENVVAR_INPUTS = "_INPUTS";
static const char* ENVVAR_OUTPUTS = "_OUTPUTS";
static const char* ENVVAR_INPORTNAMEPREFIX = "INPORTNAME";
static const char* ENVVAR_OUTPORTNAMEPREFIX = "OUTPORTNAME";
static const char* ENVVAR_INMAP = "_INPORT";
static const char* ENVVAR_OUTMAP = "_OUTPORT";
static const char* DEFAULT_PREFIX = "ASIO";
static const char* DEFAULT_INPORT = "input_";
static const char* DEFAULT_OUTPORT = "output_";
static const int DEFAULT_NUMINPUTS = 2;
static const int DEFAULT_NUMOUTPUTS = 2;
static const char* USERCFG = ".wineasiocfg";
static const char* SITECFG = "/etc/default/wineasiocfg";
static const char* MAP_INPORT = "INPORT";
static const char* MAP_OUTPORT = "OUTPORT";

Loading…
Cancel
Save