diff --git a/ASIOBridge.sln b/FlexASIO.sln
similarity index 85%
rename from ASIOBridge.sln
rename to FlexASIO.sln
index 5ae9682..369c386 100644
--- a/ASIOBridge.sln
+++ b/FlexASIO.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ASIOBridge", "ASIOBridge.vcxproj", "{EFC61192-2DB9-46B1-BF85-98FC6EF1E6D1}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FlexASIO", "FlexASIO.vcxproj", "{EFC61192-2DB9-46B1-BF85-98FC6EF1E6D1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/ASIOBridge.vcxproj b/FlexASIO.vcxproj
similarity index 93%
rename from ASIOBridge.vcxproj
rename to FlexASIO.vcxproj
index 32e0f24..270182f 100644
--- a/ASIOBridge.vcxproj
+++ b/FlexASIO.vcxproj
@@ -12,7 +12,7 @@
{EFC61192-2DB9-46B1-BF85-98FC6EF1E6D1}
- ASIOBridge
+ FlexASIO
@@ -83,23 +83,23 @@
-
+
-
+
-
+
-
-
+
+
-
+
diff --git a/README.md b/README.md
index c086f83..fc90bc7 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,13 @@
-# ASIOBridge README
+# FlexASIO README
Author: Etienne Dechamps
-Website: https://github.com/dechamps/ASIOBridge
+Website: https://github.com/dechamps/FlexASIO
License: General Public License, version 3
## DESCRIPTION
Background: http://en.wikipedia.org/wiki/Audio_Stream_Input/Output
-ASIOBridge is an universal ASIO driver, meaning that it is not tied to
+FlexASIO is an universal ASIO driver, meaning that it is not tied to
specific audio hardware. Other examples of universal ASIO drivers
include ASIO4ALL, ASIO2KS, ASIO2WASAPI. Universal ASIO drivers use
hardware-agnostic audio interfaces provided by the operating system to
@@ -17,14 +17,14 @@ ASIO drivers.
While ASIO4ALL and ASIO2KS use a low-level Windows audio API known as
"WDM-KS" (also called "DirectKS", "Kernel Streaming") to operate, and
-ASIO2WASAPI uses WASAPI (in exclusive mode), ASIOBridge uses an
+ASIO2WASAPI uses WASAPI (in exclusive mode), FlexASIO uses an
intermediate library called PortAudio that itself supports a large
number of operating system sound APIs, including MME, DirectSound,
WDM-KS, as well as the modern WASAPI interface that was released with
Windows Vista (ironically, PortAudio can use ASIO as well, nicely
-closing the circle). Thus ASIOBridge can be used to interface with any
+closing the circle). Thus FlexASIO can be used to interface with any
sound API available with your system. At least that's the theory; in
-practice this is a very early version of ASIOBridge that doesn't have a
+practice this is a very early version of FlexASIO that doesn't have a
configuration interface yet, so it will simply default to using WASAPI
(in shared mode, *not* in exclusive mode) on most systems.
@@ -36,28 +36,28 @@ any other application, which makes it an interesting alternative to
ASIO4ALL/ASIO2KS/ASIO2WASAPI, as these drivers always open devices in
exclusive mode without giving you a choice.
-One interesting use case of ASIOBridge is that it allows the use of
+One interesting use case of FlexASIO is that it allows the use of
RoomEQWizard while being able to choose the output channel on a 5.1/7.1
system but *without* bypassing the Windows audio processing pipeline,
which can be extremely useful in some scenarios. That's what I'm using
it for.
-ASIOBridge should be able to run on any version of Microsoft Windows,
+FlexASIO should be able to run on any version of Microsoft Windows,
even very old ones, at least in theory.
## HOW TO USE
-Just install it and ASIOBridge should magically appear in the ASIO
+Just install it and FlexASIO should magically appear in the ASIO
driver list in any ASIO-enabled application. There is no configuration
interface (see "caveats" below).
-To uninstall ASIOBridge, just use the Windows "add/remove programs"
+To uninstall FlexASIO, just use the Windows "add/remove programs"
control panel.
If you don't want to use the installer, you can install it manually by
simply registering the DLL:
- regsvr32 ASIOBridge.dll
+ regsvr32 FlexASIO.dll
Use the `/u` switch to unregister.
@@ -65,26 +65,26 @@ Use the `/u` switch to unregister.
This is an early release, so there are lots of them.
-This a very early version of ASIOBridge developed over a single
+This a very early version of FlexASIO developed over a single
week-end. It has not been tested in any extensive way, and is certainly
not free from bugs and crashes.
-ASIOBridge doesn't yet comes with a configuration interface ("control
+FlexASIO doesn't yet comes with a configuration interface ("control
panel" in ASIO terminology). The main reason is because programming GUIs
takes a lot of time that I don't have (especially since I have zero
experience in GUI programming). This means that you are forced to use
-ASIOBridge defaults when it comes to system API and options, device
+FlexASIO defaults when it comes to system API and options, device
selection, and buffer size. These defaults are as follows:
- System API is forced to WASAPI, or if it's not available (pre-Vista
OS), DirectSound. Note that WASAPI is used in *shared* mode, not in
exclusive mode, so it behaves much like a typical Windows
application.
- - ASIOBridge selects the default audio devices as configured in the
+ - FlexASIO selects the default audio devices as configured in the
Windows audio control panel.
- Preferred buffer size is hardcoded to 1024 samples (21.3 ms at
48000Hz). This is purely arbitrary.
Note that it is possible (and relatively easy) to change these settings
-by manually editing the source code and recompiling ASIOBridge. Not
+by manually editing the source code and recompiling FlexASIO. Not
ideal, I know. Patches welcome.
If you are using different hardware devices for input and output, each
@@ -99,36 +99,36 @@ WASAPI (at least on my test system) seems to require that the sample
rate used by the application matches the sample rate configured for the
device (which is configurable in the Windows audio control panel).
Corollary: if you use ASIO in both directions, your input device's
-sample rate need to match the output device's, else ASIOBridge will not
+sample rate need to match the output device's, else FlexASIO will not
return any usable sample rates. In some ways this could be considered a
feature since it guarantees that no unwanted sample rate conversions
will take place.
-ASIOBridge has not been designed with latency in mind. That being said,
+FlexASIO has not been designed with latency in mind. That being said,
the current version should not add any latency on top of PortAudio
itself. The thing is, due to the way ASIO works (static buffer sizes),
PortAudio sometimes has no choice but to add additional buffering (which
-adds latency) in order to meet the requirements of both ASIOBridge and
+adds latency) in order to meet the requirements of both FlexASIO and
the system API it's using.
-If you are not using WASAPI, ASIOBridge will be unable to display the
+If you are not using WASAPI, FlexASIO will be unable to display the
channel names (i.e. "Surround Left", etc.) in the channel list. That's
a limitation of PortAudio.
-ASIOBridge is Windows-only for now. That could change in the future, as
+FlexASIO is Windows-only for now. That could change in the future, as
PortAudio itself is cross-platform.
-ASIOBridge is 32-bit only for now. Porting it to 64-bit is
+FlexASIO is 32-bit only for now. Porting it to 64-bit is
straightforward, I just haven't gotten around to doing it yet.
## REPORTING ISSUES
Just use the GitHub issue tracker:
-https://github.com/dechamps/ASIOBridge/issues
+https://github.com/dechamps/FlexASIO/issues
## DEVELOPER INFORMATION
-ASIOBridge currently uses the Microsoft Visual C++ 2010 toolchain,
+FlexASIO currently uses the Microsoft Visual C++ 2010 toolchain,
though it should work just fine with any later version. You will need
the following dependencies:
- ASIO SDK (include only):
diff --git a/asiobridge.rc b/asiobridge.rc
deleted file mode 100644
index d5cbb67..0000000
--- a/asiobridge.rc
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "asiobridge.rc.h"
-
-IDR_ASIOBRIDGE REGISTRY "asiobridge.rgs"
-
-1 TYPELIB "ASIOBridge.tlb"
diff --git a/asiobridge.rc.h b/asiobridge.rc.h
deleted file mode 100644
index 44fda31..0000000
--- a/asiobridge.rc.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-#define IDR_ASIOBRIDGE 100
diff --git a/dll.def b/dll.def
index bc1da1c..a28c510 100644
--- a/dll.def
+++ b/dll.def
@@ -1,4 +1,4 @@
-; Module-definition file for the ASIOBridge DLL
+; Module-definition file for the FlexASIO DLL
; Our DLL is just a COM class factory, so we only need to export the functions required by COM.
; We can't use declspec(dllexport) for those because the naming convention doesn't match (leading "@")
diff --git a/asiobridge.cpp b/flexasio.cpp
similarity index 89%
rename from asiobridge.cpp
rename to flexasio.cpp
index 6b7f991..6fdffd1 100644
--- a/asiobridge.cpp
+++ b/flexasio.cpp
@@ -17,24 +17,24 @@
*/
-#include "asiobridge.h"
+#include "flexasio.h"
#include
#include "pa_win_wasapi.h"
-CASIOBridge::CASIOBridge() :
+CFlexASIO::CFlexASIO() :
portaudio_initialized(false), init_error(""), pa_api_info(nullptr),
input_device_info(nullptr), output_device_info(nullptr),
input_channel_count(0), output_channel_count(0),
input_channel_mask(0), output_channel_mask(0),
sample_rate(0), buffers(nullptr), stream(NULL), started(false)
{
- Log() << "CASIOBridge::CASIOBridge()";
+ Log() << "CFlexASIO::CFlexASIO()";
}
-ASIOBool CASIOBridge::init(void* sysHandle)
+ASIOBool CFlexASIO::init(void* sysHandle)
{
- Log() << "CASIOBridge::init()";
+ Log() << "CFlexASIO::init()";
if (input_device_info || output_device_info)
{
Log() << "Already initialized";
@@ -137,9 +137,9 @@ ASIOBool CASIOBridge::init(void* sysHandle)
return ASIOTrue;
}
-CASIOBridge::~CASIOBridge()
+CFlexASIO::~CFlexASIO()
{
- Log() << "CASIOBridge::~CASIOBridge()";
+ Log() << "CFlexASIO::~CFlexASIO()";
if (started)
stop();
if (buffers)
@@ -155,9 +155,9 @@ CASIOBridge::~CASIOBridge()
}
}
-ASIOError CASIOBridge::getClockSources(ASIOClockSource* clocks, long* numSources) throw()
+ASIOError CFlexASIO::getClockSources(ASIOClockSource* clocks, long* numSources) throw()
{
- Log() << "CASIOBridge::getClockSources()";
+ Log() << "CFlexASIO::getClockSources()";
if (!clocks || !numSources || *numSources < 1)
{
Log() << "Invalid parameters";
@@ -173,9 +173,9 @@ ASIOError CASIOBridge::getClockSources(ASIOClockSource* clocks, long* numSources
return ASE_OK;
}
-ASIOError CASIOBridge::setClockSource(long reference) throw()
+ASIOError CFlexASIO::setClockSource(long reference) throw()
{
- Log() << "CASIOBridge::setClockSource(" << reference << ")";
+ Log() << "CFlexASIO::setClockSource(" << reference << ")";
if (reference != 0)
{
Log() << "Parameter out of bounds";
@@ -184,9 +184,9 @@ ASIOError CASIOBridge::setClockSource(long reference) throw()
return ASE_OK;
}
-ASIOError CASIOBridge::getChannels(long* numInputChannels, long* numOutputChannels)
+ASIOError CFlexASIO::getChannels(long* numInputChannels, long* numOutputChannels)
{
- Log() << "CASIOBridge::getChannels()";
+ Log() << "CFlexASIO::getChannels()";
if (!input_device_info && !output_device_info)
{
Log() << "getChannels() called in unitialized state";
@@ -256,9 +256,9 @@ std::string getChannelName(size_t channel, DWORD channelMask)
}
}
-ASIOError CASIOBridge::getChannelInfo(ASIOChannelInfo* info)
+ASIOError CFlexASIO::getChannelInfo(ASIOChannelInfo* info)
{
- Log() << "CASIOBridge::getChannelInfo()";
+ Log() << "CFlexASIO::getChannelInfo()";
Log() << "Channel info requested for " << (info->isInput ? "input" : "output") << " channel " << info->channel;
if (info->isInput)
@@ -295,11 +295,11 @@ ASIOError CASIOBridge::getChannelInfo(ASIOChannelInfo* info)
return ASE_OK;
}
-ASIOError CASIOBridge::getBufferSize(long* minSize, long* maxSize, long* preferredSize, long* granularity)
+ASIOError CFlexASIO::getBufferSize(long* minSize, long* maxSize, long* preferredSize, long* granularity)
{
// These values are purely arbitrary, since PortAudio doesn't provide them. Feel free to change them if you'd like.
// TODO: let the user should these values
- Log() << "CASIOBridge::getBufferSize()";
+ Log() << "CFlexASIO::getBufferSize()";
*minSize = 48; // 1 ms at 48kHz, there's basically no chance we'll get glitch-free streaming below this
*maxSize = 48000; // 1 second at 48kHz, more would be silly
*preferredSize = 1024; // typical - 21.3 ms at 48kHz
@@ -308,9 +308,9 @@ ASIOError CASIOBridge::getBufferSize(long* minSize, long* maxSize, long* preferr
return ASE_OK;
}
-PaError CASIOBridge::OpenStream(PaStream** stream, double sampleRate, unsigned long framesPerBuffer) throw()
+PaError CFlexASIO::OpenStream(PaStream** stream, double sampleRate, unsigned long framesPerBuffer) throw()
{
- Log() << "CASIOBridge::OpenStream(" << sampleRate << ", " << framesPerBuffer << ")";
+ Log() << "CFlexASIO::OpenStream(" << sampleRate << ", " << framesPerBuffer << ")";
PaStreamParameters input_parameters;
PaWasapiStreamInfo input_wasapi_stream_info;
@@ -364,12 +364,12 @@ PaError CASIOBridge::OpenStream(PaStream** stream, double sampleRate, unsigned l
stream,
input_device_info ? &input_parameters : NULL,
output_device_info ? &output_parameters : NULL,
- sampleRate, framesPerBuffer, paNoFlag, &CASIOBridge::StaticStreamCallback, this);
+ sampleRate, framesPerBuffer, paNoFlag, &CFlexASIO::StaticStreamCallback, this);
}
-ASIOError CASIOBridge::canSampleRate(ASIOSampleRate sampleRate) throw()
+ASIOError CFlexASIO::canSampleRate(ASIOSampleRate sampleRate) throw()
{
- Log() << "CASIOBridge::canSampleRate(" << sampleRate << ")";
+ Log() << "CFlexASIO::canSampleRate(" << sampleRate << ")";
if (!input_device_info && !output_device_info)
{
Log() << "canSampleRate() called in unitialized state";
@@ -390,9 +390,9 @@ ASIOError CASIOBridge::canSampleRate(ASIOSampleRate sampleRate) throw()
return ASE_OK;
}
-ASIOError CASIOBridge::getSampleRate(ASIOSampleRate* sampleRate) throw()
+ASIOError CFlexASIO::getSampleRate(ASIOSampleRate* sampleRate) throw()
{
- Log() << "CASIOBridge::getSampleRate()";
+ Log() << "CFlexASIO::getSampleRate()";
if (sample_rate == 0)
{
Log() << "getSampleRate() called in unitialized state";
@@ -403,9 +403,9 @@ ASIOError CASIOBridge::getSampleRate(ASIOSampleRate* sampleRate) throw()
return ASE_OK;
}
-ASIOError CASIOBridge::setSampleRate(ASIOSampleRate sampleRate) throw()
+ASIOError CFlexASIO::setSampleRate(ASIOSampleRate sampleRate) throw()
{
- Log() << "CASIOBridge::setSampleRate(" << sampleRate << ")";
+ Log() << "CFlexASIO::setSampleRate(" << sampleRate << ")";
if (buffers)
{
if (callbacks.asioMessage)
@@ -424,9 +424,9 @@ ASIOError CASIOBridge::setSampleRate(ASIOSampleRate sampleRate) throw()
return ASE_OK;
}
-ASIOError CASIOBridge::createBuffers(ASIOBufferInfo* bufferInfos, long numChannels, long bufferSize, ASIOCallbacks* callbacks) throw()
+ASIOError CFlexASIO::createBuffers(ASIOBufferInfo* bufferInfos, long numChannels, long bufferSize, ASIOCallbacks* callbacks) throw()
{
- Log() << "CASIOBridge::createBuffers(" << numChannels << ", " << bufferSize << ")";
+ Log() << "CFlexASIO::createBuffers(" << numChannels << ", " << bufferSize << ")";
if (numChannels < 1 || bufferSize < 1 || !callbacks || !callbacks->bufferSwitch)
{
Log() << "Invalid invocation";
@@ -497,9 +497,9 @@ ASIOError CASIOBridge::createBuffers(ASIOBufferInfo* bufferInfos, long numChanne
return ASE_OK;
}
-ASIOError CASIOBridge::disposeBuffers() throw()
+ASIOError CFlexASIO::disposeBuffers() throw()
{
- Log() << "CASIOBridge::disposeBuffers()";
+ Log() << "CFlexASIO::disposeBuffers()";
if (!buffers)
{
Log() << "disposeBuffers() called before createBuffers()";
@@ -526,9 +526,9 @@ ASIOError CASIOBridge::disposeBuffers() throw()
return ASE_OK;
}
-ASIOError CASIOBridge::getLatencies(long* inputLatency, long* outputLatency)
+ASIOError CFlexASIO::getLatencies(long* inputLatency, long* outputLatency)
{
- Log() << "CASIOBridge::getLatencies()";
+ Log() << "CFlexASIO::getLatencies()";
if (!stream)
{
Log() << "getLatencies() called before createBuffers()";
@@ -549,9 +549,9 @@ ASIOError CASIOBridge::getLatencies(long* inputLatency, long* outputLatency)
return ASE_OK;
}
-ASIOError CASIOBridge::start() throw()
+ASIOError CFlexASIO::start() throw()
{
- Log() << "CASIOBridge::start()";
+ Log() << "CFlexASIO::start()";
if (!buffers)
{
Log() << "start() called before createBuffers()";
@@ -587,9 +587,9 @@ ASIOError CASIOBridge::start() throw()
return ASE_OK;
}
-ASIOError CASIOBridge::stop()
+ASIOError CFlexASIO::stop()
{
- Log() << "CASIOBridge::stop()";
+ Log() << "CFlexASIO::stop()";
if (!started)
{
Log() << "stop() called before start()";
@@ -610,9 +610,9 @@ ASIOError CASIOBridge::stop()
return ASE_OK;
}
-int CASIOBridge::StreamCallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags)
+int CFlexASIO::StreamCallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags)
{
- Log() << "CASIOBridge::StreamCallback("<< frameCount << ")";
+ Log() << "CFlexASIO::StreamCallback("<< frameCount << ")";
if (!started)
{
Log() << "Ignoring callback as stream is not started";
@@ -674,9 +674,9 @@ int CASIOBridge::StreamCallback(const void *input, void *output, unsigned long f
return paContinue;
}
-ASIOError CASIOBridge::getSamplePosition(ASIOSamples* sPos, ASIOTimeStamp* tStamp)
+ASIOError CFlexASIO::getSamplePosition(ASIOSamples* sPos, ASIOTimeStamp* tStamp)
{
- Log() << "CASIOBridge::getSamplePosition()";
+ Log() << "CFlexASIO::getSamplePosition()";
if (!started)
{
Log() << "getSamplePosition() called before start()";
diff --git a/asiobridge.h b/flexasio.h
similarity index 84%
rename from asiobridge.h
rename to flexasio.h
index 9d338ed..0800163 100644
--- a/asiobridge.h
+++ b/flexasio.h
@@ -19,7 +19,7 @@
#pragma once
-#include "asiobridge_h.h"
+#include "flexasio_h.h"
#include
#include
@@ -28,7 +28,7 @@
#include
#include
-#include "asiobridge.rc.h"
+#include "flexasio.rc.h"
#include "iasiodrv.h"
#include "util.h"
#include "portaudio.h"
@@ -72,33 +72,33 @@ union ASIOTimeStampUnion
// ASIO doesn't use COM properly, and doesn't define a proper interface.
// Instead, it uses the CLSID to create an instance and then blindfully casts it to IASIO, giving the finger to QueryInterface() and to sensible COM design in general.
// Of course, since this is a blind cast, the order of inheritance below becomes critical: if IASIO is not first, the cast is likely to produce a wrong vtable offset, crashing the whole thing. What a nice design.
-class CASIOBridge :
+class CFlexASIO :
public IASIO,
- public IASIOBridge,
+ public IFlexASIO,
public CComObjectRootEx,
- public CComCoClass
+ public CComCoClass
{
- BEGIN_COM_MAP(CASIOBridge)
- COM_INTERFACE_ENTRY(IASIOBridge)
+ BEGIN_COM_MAP(CFlexASIO)
+ COM_INTERFACE_ENTRY(IFlexASIO)
// To add insult to injury, ASIO mistakes the CLSID for an IID when calling CoCreateInstance(). Yuck.
- COM_INTERFACE_ENTRY(CASIOBridge)
+ COM_INTERFACE_ENTRY(CFlexASIO)
// IASIO doesn't have an IID (see above), which is why it doesn't appear here.
END_COM_MAP()
- DECLARE_REGISTRY_RESOURCEID(IDR_ASIOBRIDGE)
+ DECLARE_REGISTRY_RESOURCEID(IDR_FLEXASIO)
public:
- CASIOBridge() throw();
- virtual ~CASIOBridge() throw();
+ CFlexASIO() throw();
+ virtual ~CFlexASIO() throw();
// IASIO implementation
virtual ASIOBool init(void* sysHandle);
- virtual void getDriverName(char* name) throw() { Log() << "CASIOBridge::getDriverName()"; strcpy_s(name, 32, "ASIOBridge"); }
- virtual long getDriverVersion() throw() { Log() << "CASIOBridge::getDriverVersion()"; return 0; }
- virtual void getErrorMessage(char* string) throw() { Log() << "CASIOBridge::getErrorMessage()"; strcpy_s(string, 124, init_error.c_str()); }
+ virtual void getDriverName(char* name) throw() { Log() << "CFlexASIO::getDriverName()"; strcpy_s(name, 32, "FlexASIO"); }
+ virtual long getDriverVersion() throw() { Log() << "CFlexASIO::getDriverVersion()"; return 0; }
+ virtual void getErrorMessage(char* string) throw() { Log() << "CFlexASIO::getErrorMessage()"; strcpy_s(string, 124, init_error.c_str()); }
virtual ASIOError getClockSources(ASIOClockSource* clocks, long* numSources) throw();
virtual ASIOError setClockSource(long reference) throw();
@@ -118,13 +118,13 @@ class CASIOBridge :
virtual ASIOError getSamplePosition(ASIOSamples* sPos, ASIOTimeStamp* tStamp) throw();
// Not implemented
- virtual ASIOError controlPanel() throw() { Log() << "CASIOBridge::controlPanel()"; return ASE_NotPresent; }
- virtual ASIOError future(long selector, void *opt) throw() { Log() << "CASIOBridge::future()"; return ASE_InvalidParameter; }
- virtual ASIOError outputReady() throw() { Log() << "CASIOBridge::outputReady()"; return ASE_NotPresent; }
+ virtual ASIOError controlPanel() throw() { Log() << "CFlexASIO::controlPanel()"; return ASE_NotPresent; }
+ virtual ASIOError future(long selector, void *opt) throw() { Log() << "CFlexASIO::future()"; return ASE_InvalidParameter; }
+ virtual ASIOError outputReady() throw() { Log() << "CFlexASIO::outputReady()"; return ASE_NotPresent; }
private:
PaError OpenStream(PaStream**, double sampleRate, unsigned long framesPerBuffer) throw();
- static int StaticStreamCallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData) throw() { return static_cast(userData)->StreamCallback(input, output, frameCount, timeInfo, statusFlags); }
+ static int StaticStreamCallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData) throw() { return static_cast(userData)->StreamCallback(input, output, frameCount, timeInfo, statusFlags); }
int StreamCallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags) throw();
bool portaudio_initialized;
@@ -157,4 +157,4 @@ class CASIOBridge :
bool started;
};
-OBJECT_ENTRY_AUTO(__uuidof(CASIOBridge), CASIOBridge)
+OBJECT_ENTRY_AUTO(__uuidof(CFlexASIO), CFlexASIO)
diff --git a/asiobridge.idl b/flexasio.idl
similarity index 90%
rename from asiobridge.idl
rename to flexasio.idl
index 5b7c505..3c898d4 100644
--- a/asiobridge.idl
+++ b/flexasio.idl
@@ -21,13 +21,13 @@
library audiolysAPODll
{
[object, uuid(1C653355-6D85-43AD-9674-05D4549F19C1)]
- interface IASIOBridge : IUnknown
+ interface IFlexASIO : IUnknown
{
};
[uuid(462F2ABF-5278-436A-95B6-72CBF65482AE)]
- coclass CASIOBridge
+ coclass CFlexASIO
{
- [default] interface IASIOBridge;
+ [default] interface IFlexASIO;
};
}
diff --git a/flexasio.rc b/flexasio.rc
new file mode 100644
index 0000000..f2b8c89
--- /dev/null
+++ b/flexasio.rc
@@ -0,0 +1,5 @@
+#include "flexasio.rc.h"
+
+IDR_FLEXASIO REGISTRY "flexasio.rgs"
+
+1 TYPELIB "FlexASIO.tlb"
diff --git a/flexasio.rc.h b/flexasio.rc.h
new file mode 100644
index 0000000..d7bdd1b
--- /dev/null
+++ b/flexasio.rc.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#define IDR_FLEXASIO 100
diff --git a/asiobridge.rgs b/flexasio.rgs
similarity index 58%
rename from asiobridge.rgs
rename to flexasio.rgs
index 9f848bd..8c4a988 100644
--- a/asiobridge.rgs
+++ b/flexasio.rgs
@@ -1,15 +1,15 @@
HKCR
{
- ForceRemove asiobridge.ASIOBridge.1 = s 'ASIOBridge'
+ ForceRemove flexasio.FlexASIO.1 = s 'FlexASIO'
{
CLSID = s '{462F2ABF-5278-436A-95B6-72CBF65482AE}'
}
NoRemove CLSID
{
- ForceRemove {462F2ABF-5278-436A-95B6-72CBF65482AE} = s 'ASIOBridge'
+ ForceRemove {462F2ABF-5278-436A-95B6-72CBF65482AE} = s 'FlexASIO'
{
- ProgID = s 'asiobridge.ASIOBridge.1'
+ ProgID = s 'flexasio.FlexASIO.1'
Version = s '0.1'
InprocServer32 = s '%MODULE%'
{
@@ -25,10 +25,10 @@ HKLM
{
NoRemove ASIO
{
- ForceRemove ASIOBridge
+ ForceRemove FlexASIO
{
val CLSID = s '{462F2ABF-5278-436A-95B6-72CBF65482AE}'
- val Description = s 'ASIOBridge'
+ val Description = s 'FlexASIO'
}
}
}
diff --git a/installer.iss b/installer.iss
index 81e3d8b..22e8773 100644
--- a/installer.iss
+++ b/installer.iss
@@ -1,24 +1,24 @@
[Setup]
-AppID=ASIOBridge
-AppName=ASIOBridge
-AppVerName=ASIOBridge 0.1
+AppID=FlexASIO
+AppName=FlexASIO
+AppVerName=FlexASIO 0.1
AppVersion=0.1
AppPublisher=Etienne Dechamps
-AppPublisherURL=https://github.com/dechamps/ASIOBridge
-AppSupportURL=https://github.com/dechamps/ASIOBridge
-AppUpdatesURL=https://github.com/dechamps/ASIOBridge
+AppPublisherURL=https://github.com/dechamps/FlexASIO
+AppSupportURL=https://github.com/dechamps/FlexASIO
+AppUpdatesURL=https://github.com/dechamps/FlexASIO
AppContact=etienne@edechamps.fr
OutputDir=.
-OutputBaseFilename=ASIOBridge-0.1
+OutputBaseFilename=FlexASIO-0.1
-DefaultDirName={pf}\ASIOBridge
+DefaultDirName={pf}\FlexASIO
AppendDefaultDirName=no
LicenseFile=LICENSE.txt
[Files]
-Source:"Release\ASIOBridge.dll"; DestDir: "{app}"; Flags: ignoreversion regserver 32bit
+Source:"Release\FlexASIO.dll"; DestDir: "{app}"; Flags: ignoreversion regserver 32bit
Source:"LICENSE.txt"; DestDir:"{app}"; Flags: ignoreversion
; PortAudio library, 32-bit DLL.
diff --git a/util.h b/util.h
index bdfd0ed..c822518 100644
--- a/util.h
+++ b/util.h
@@ -29,7 +29,7 @@ class Log : public std::stringstream
public:
Log()
{
- *this << "ASIOBridge: [" << timeGetTime() << "] ";
+ *this << "FlexASIO: [" << timeGetTime() << "] ";
}
~Log()