#include "CarlaHost.h" #include #include #include #include #include // -------------------------------------------------------------------------------------------------------- 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; } // --------------------------------------------------------------------------------------------------------