| @@ -17,6 +17,7 @@ | |||||
| #include "CarlaString.hpp" | #include "CarlaString.hpp" | ||||
| #include "rewire/ReWireAPI.h" | |||||
| #include "rewire/ReWirePanelAPI.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), | fIsLoaded(false), | ||||
| fHandle(0) | fHandle(0) | ||||
| { | { | ||||
| fDevName = ""; | |||||
| } | } | ||||
| ~RewireThing() | ~RewireThing() | ||||
| @@ -62,12 +83,37 @@ public: | |||||
| } | } | ||||
| else | 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; | 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() | bool start() | ||||
| { | { | ||||
| char isRunningFlag = 0; | char isRunningFlag = 0; | ||||
| @@ -99,8 +145,32 @@ public: | |||||
| carla_stderr("rewire mixer is running"); | 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; | return false; | ||||
| } | } | ||||
| #endif | |||||
| void close() | void close() | ||||
| { | { | ||||
| @@ -111,6 +181,18 @@ public: | |||||
| return; | 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) | if (fHandle != 0) | ||||
| { | { | ||||
| const ReWire::ReWireError result(ReWire::RWPComDisconnect(fHandle)); | const ReWire::ReWireError result(ReWire::RWPComDisconnect(fHandle)); | ||||
| @@ -119,18 +201,18 @@ public: | |||||
| if (result == ReWire::kReWireError_NoError) | if (result == ReWire::kReWireError_NoError) | ||||
| carla_stderr("rewire disconnect ok"); | carla_stderr("rewire disconnect ok"); | ||||
| else | else | ||||
| carla_stderr2("rewire disconnect failed"); | |||||
| carla_stderr2("rewire disconnect failed %i", result); | |||||
| } | } | ||||
| if (fIsLoaded) | if (fIsLoaded) | ||||
| { | { | ||||
| const ReWire::ReWireError result(ReWire::RWPUnloadDevice(fDevName.getBuffer())); | |||||
| const ReWire::ReWireError result(ReWire::RWPUnloadDevice(kDeviceName)); | |||||
| fIsLoaded = false; | fIsLoaded = false; | ||||
| if (result == ReWire::kReWireError_NoError) | if (result == ReWire::kReWireError_NoError) | ||||
| carla_stderr("rewire unload ok"); | |||||
| carla_stderr("rewire unload device ok"); | |||||
| else | else | ||||
| carla_stderr2("rewire unload failed"); | |||||
| carla_stderr2("rewire unload device failed %i", result); | |||||
| } | } | ||||
| if (fIsRegistered) | if (fIsRegistered) | ||||
| @@ -141,15 +223,16 @@ public: | |||||
| if (result == ReWire::kReWireError_NoError) | if (result == ReWire::kReWireError_NoError) | ||||
| carla_stderr("rewire unregister ok"); | carla_stderr("rewire unregister ok"); | ||||
| else | else | ||||
| carla_stderr2("rewire unregister failed"); | |||||
| carla_stderr2("rewire unregister failed %i", result); | |||||
| } | } | ||||
| #endif | |||||
| const ReWire::ReWireError result(ReWire::RWPClose()); | const ReWire::ReWireError result(ReWire::RWPClose()); | ||||
| if (result == ReWire::kReWireError_NoError) | if (result == ReWire::kReWireError_NoError) | ||||
| carla_stderr("rewire close ok"); | carla_stderr("rewire close ok"); | ||||
| else | else | ||||
| carla_stderr2("rewire close failed"); | |||||
| carla_stderr2("rewire close failed %i", result); | |||||
| fIsOpen = false; | fIsOpen = false; | ||||
| } | } | ||||
| @@ -159,8 +242,6 @@ private: | |||||
| bool fIsRegistered; | bool fIsRegistered; | ||||
| bool fIsLoaded; | bool fIsLoaded; | ||||
| ReWire::TRWPPortHandle fHandle; | ReWire::TRWPPortHandle fHandle; | ||||
| CarlaString fDevName; | |||||
| }; | }; | ||||
| // ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||