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()