|
|
|
@@ -0,0 +1,80 @@ |
|
|
|
|
|
|
|
#include "CarlaHost.h" |
|
|
|
|
|
|
|
#include <dlfcn.h> |
|
|
|
#include <signal.h> |
|
|
|
#include <stdbool.h> |
|
|
|
#include <stdio.h> |
|
|
|
#include <unistd.h> |
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------------- |
|
|
|
|
|
|
|
static volatile bool term = false; |
|
|
|
|
|
|
|
static void signalHandler(int sig) |
|
|
|
{ |
|
|
|
switch (sig) |
|
|
|
{ |
|
|
|
case SIGINT: |
|
|
|
case SIGTERM: |
|
|
|
term = true; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------------- |
|
|
|
|
|
|
|
typedef bool (*carla_engine_init_func)(const char* driverName, const char* clientName); |
|
|
|
typedef void (*carla_engine_idle_func)(void); |
|
|
|
typedef bool (*carla_is_engine_running_func)(void); |
|
|
|
typedef bool (*carla_engine_close_func)(void); |
|
|
|
typedef bool (*carla_add_plugin_func)(BinaryType btype, PluginType ptype, |
|
|
|
const char* filename, const char* name, const char* label, int64_t uniqueId, |
|
|
|
const void* extraPtr, uint options); |
|
|
|
typedef const char* (*carla_get_last_error_func)(void); |
|
|
|
|
|
|
|
int main(void) |
|
|
|
{ |
|
|
|
void* lib = dlopen("/home/falktx/FOSS/GIT-mine/falkTX/Carla/bin/libcarla_standalone2.so", RTLD_NOW|RTLD_GLOBAL); |
|
|
|
|
|
|
|
if (!lib) |
|
|
|
{ |
|
|
|
printf("Failed to load carla lib\n"); |
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
const carla_engine_init_func carla_engine_init = dlsym(lib, "carla_engine_init"); |
|
|
|
const carla_engine_idle_func carla_engine_idle = dlsym(lib, "carla_engine_idle"); |
|
|
|
const carla_is_engine_running_func carla_is_engine_running = dlsym(lib, "carla_is_engine_running"); |
|
|
|
const carla_engine_close_func carla_engine_close = dlsym(lib, "carla_engine_close"); |
|
|
|
const carla_add_plugin_func carla_add_plugin = dlsym(lib, "carla_add_plugin"); |
|
|
|
const carla_get_last_error_func carla_get_last_error = dlsym(lib, "carla_get_last_error"); |
|
|
|
|
|
|
|
if (! carla_engine_init("JACK", "Carla-uhe-test")) |
|
|
|
{ |
|
|
|
printf("Engine failed to initialize, possible reasons:\n%s\n", carla_get_last_error()); |
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
if (! carla_add_plugin(BINARY_NATIVE, PLUGIN_VST2, "/home/falktx/.vst/u-he/ACE.64.so", "", "", 0, NULL, 0)) |
|
|
|
{ |
|
|
|
printf("Failed to load plugin, possible reasons:\n%s\n", carla_get_last_error()); |
|
|
|
carla_engine_close(); |
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
signal(SIGINT, signalHandler); |
|
|
|
signal(SIGTERM, signalHandler); |
|
|
|
|
|
|
|
while (carla_is_engine_running() && ! term) |
|
|
|
{ |
|
|
|
carla_engine_idle(); |
|
|
|
sleep(1); |
|
|
|
} |
|
|
|
|
|
|
|
carla_engine_close(); |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------------- |