|
|
@@ -17,6 +17,7 @@ |
|
|
|
|
|
|
|
#include "CarlaString.hpp" |
|
|
|
|
|
|
|
#include "rewire/ReWireAPI.h" |
|
|
|
#include "rewire/ReWirePanelAPI.h" |
|
|
|
|
|
|
|
// ----------------------------------------------------------------------- |
|
|
@@ -28,7 +29,28 @@ typedef const char* TReWireFileSpec; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
ReWire::TReWireFileSpec kDeviceSpec = "/home/falktx/.wine32/drive_c/Program Files/Image-Line/FL Studio 11/System/Plugin/ReWire/FLReWire.dll"; |
|
|
|
// static ReWire::TReWireFileSpec kDeviceSpec = "/home/falktx/.wine32/drive_c/Program Files/Image-Line/FL Studio 11/System/Plugin/ReWire/FLReWire.dll"; |
|
|
|
//static ReWire::TReWireFileSpec kDeviceSpec = "C:\\Program Files\\Waves\\ReWire\\WavesReWireDevice.dll"; |
|
|
|
|
|
|
|
static const ReWire::TReWireFileSpec kDeviceSpec = "C:\\Program Files\\AudioGL\\AudioGL.dll"; |
|
|
|
static const char* const kDeviceName = "AudioGL"; |
|
|
|
static const char* const kSinature = "Ahem"; |
|
|
|
|
|
|
|
// ----------------------------------------------------------------------- |
|
|
|
// try to figure this out... |
|
|
|
|
|
|
|
using namespace ReWire; |
|
|
|
|
|
|
|
// RWM2OpenImp |
|
|
|
|
|
|
|
typedef ReWireError (*TRWM2OpenProc)(void); //long reWireLibVersion |
|
|
|
typedef ReWireError (*TRWM2CloseProc)(void); |
|
|
|
|
|
|
|
static const char kRWM2OpenProcName[] = "RWM2OpenImp"; |
|
|
|
static const char kRWM2CloseProcName[] = "RWM2CloseImp"; |
|
|
|
|
|
|
|
static TRWM2OpenProc gRWM2OpenProc = NULL; |
|
|
|
static TRWM2CloseProc gRWM2CloseProc = NULL; |
|
|
|
|
|
|
|
// ----------------------------------------------------------------------- |
|
|
|
|
|
|
@@ -41,7 +63,6 @@ public: |
|
|
|
fIsLoaded(false), |
|
|
|
fHandle(0) |
|
|
|
{ |
|
|
|
fDevName = ""; |
|
|
|
} |
|
|
|
|
|
|
|
~RewireThing() |
|
|
@@ -62,12 +83,37 @@ public: |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
carla_stderr2("rewire open failed"); |
|
|
|
carla_stderr2("rewire open failed %i", result); |
|
|
|
} |
|
|
|
|
|
|
|
// get func pointers |
|
|
|
gRWM2OpenProc = (TRWM2OpenProc)ReWireFindReWireSharedLibraryFunction(kRWM2OpenProcName); |
|
|
|
gRWM2CloseProc = (TRWM2CloseProc)ReWireFindReWireSharedLibraryFunction(kRWM2CloseProcName); |
|
|
|
|
|
|
|
CARLA_SAFE_ASSERT_RETURN(gRWM2OpenProc != nullptr, true); |
|
|
|
CARLA_SAFE_ASSERT_RETURN(gRWM2CloseProc != nullptr, true); |
|
|
|
|
|
|
|
return fIsOpen; |
|
|
|
} |
|
|
|
|
|
|
|
bool start() |
|
|
|
{ |
|
|
|
ReWire::ReWireError result = (gRWM2OpenProc)(); |
|
|
|
|
|
|
|
if (result == ReWire::kReWireError_NoError) |
|
|
|
{ |
|
|
|
fIsLoaded = true; |
|
|
|
carla_stderr("rewire load app ok"); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
carla_stderr2("rewire load app failed %i", result); |
|
|
|
} |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
#if 0 |
|
|
|
bool start() |
|
|
|
{ |
|
|
|
char isRunningFlag = 0; |
|
|
@@ -99,8 +145,32 @@ public: |
|
|
|
carla_stderr("rewire mixer is running"); |
|
|
|
} |
|
|
|
|
|
|
|
result = ReWire::RWPLoadDevice(kDeviceName); |
|
|
|
|
|
|
|
if (result == ReWire::kReWireError_NoError) |
|
|
|
{ |
|
|
|
fIsLoaded = true; |
|
|
|
carla_stderr("rewire load device ok"); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
carla_stderr2("rewire load device failed %i", result); |
|
|
|
} |
|
|
|
|
|
|
|
result = ReWire::RWPComConnect(kSinature, &fHandle); |
|
|
|
|
|
|
|
if (result == ReWire::kReWireError_NoError) |
|
|
|
{ |
|
|
|
carla_stderr("rewire connect ok | %i", fHandle); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
carla_stderr2("rewire connect failed %i | %i", result, fHandle); |
|
|
|
} |
|
|
|
|
|
|
|
return false; |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
void close() |
|
|
|
{ |
|
|
@@ -111,6 +181,18 @@ public: |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if (fIsLoaded) |
|
|
|
{ |
|
|
|
const ReWire::ReWireError result((gRWM2CloseProc)()); |
|
|
|
fIsLoaded = false; |
|
|
|
|
|
|
|
if (result == ReWire::kReWireError_NoError) |
|
|
|
carla_stderr("rewire unload app ok"); |
|
|
|
else |
|
|
|
carla_stderr2("rewire unload app failed %i", result); |
|
|
|
} |
|
|
|
|
|
|
|
#if 0 |
|
|
|
if (fHandle != 0) |
|
|
|
{ |
|
|
|
const ReWire::ReWireError result(ReWire::RWPComDisconnect(fHandle)); |
|
|
@@ -119,18 +201,18 @@ public: |
|
|
|
if (result == ReWire::kReWireError_NoError) |
|
|
|
carla_stderr("rewire disconnect ok"); |
|
|
|
else |
|
|
|
carla_stderr2("rewire disconnect failed"); |
|
|
|
carla_stderr2("rewire disconnect failed %i", result); |
|
|
|
} |
|
|
|
|
|
|
|
if (fIsLoaded) |
|
|
|
{ |
|
|
|
const ReWire::ReWireError result(ReWire::RWPUnloadDevice(fDevName.getBuffer())); |
|
|
|
const ReWire::ReWireError result(ReWire::RWPUnloadDevice(kDeviceName)); |
|
|
|
fIsLoaded = false; |
|
|
|
|
|
|
|
if (result == ReWire::kReWireError_NoError) |
|
|
|
carla_stderr("rewire unload ok"); |
|
|
|
carla_stderr("rewire unload device ok"); |
|
|
|
else |
|
|
|
carla_stderr2("rewire unload failed"); |
|
|
|
carla_stderr2("rewire unload device failed %i", result); |
|
|
|
} |
|
|
|
|
|
|
|
if (fIsRegistered) |
|
|
@@ -141,15 +223,16 @@ public: |
|
|
|
if (result == ReWire::kReWireError_NoError) |
|
|
|
carla_stderr("rewire unregister ok"); |
|
|
|
else |
|
|
|
carla_stderr2("rewire unregister failed"); |
|
|
|
carla_stderr2("rewire unregister failed %i", result); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
const ReWire::ReWireError result(ReWire::RWPClose()); |
|
|
|
|
|
|
|
if (result == ReWire::kReWireError_NoError) |
|
|
|
carla_stderr("rewire close ok"); |
|
|
|
else |
|
|
|
carla_stderr2("rewire close failed"); |
|
|
|
carla_stderr2("rewire close failed %i", result); |
|
|
|
|
|
|
|
fIsOpen = false; |
|
|
|
} |
|
|
@@ -159,8 +242,6 @@ private: |
|
|
|
bool fIsRegistered; |
|
|
|
bool fIsLoaded; |
|
|
|
ReWire::TRWPPortHandle fHandle; |
|
|
|
|
|
|
|
CarlaString fDevName; |
|
|
|
}; |
|
|
|
|
|
|
|
// ----------------------------------------------------------------------- |
|
|
|