@@ -109,10 +109,13 @@ source/modules/%.a: .FORCE | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
backend: bin/libcarla_standalone2$(LIB_EXT) | |||||
backend: bin/libcarla_standalone2$(LIB_EXT) bin/libcarla_utils2$(LIB_EXT) | |||||
bin/libcarla_standalone2$(LIB_EXT): libs .FORCE | bin/libcarla_standalone2$(LIB_EXT): libs .FORCE | ||||
$(MAKE) -C source/backend | |||||
$(MAKE) -C source/backend ../../bin/libcarla_standalone2$(LIB_EXT) | |||||
bin/libcarla_utils2$(LIB_EXT): libs .FORCE | |||||
$(MAKE) -C source/backend ../../bin/libcarla_utils2$(LIB_EXT) | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
@@ -168,4 +168,7 @@ VST3_PLUGIN_CPP = $(CWD)/backend/plugin/Vst3Plugin.cpp $ | |||||
CARLA_STANDALONE_CPP_DEPS = $(CARLA_HOST_H) $(CARLA_MIDI_H) $(CARLA_NATIVE_H) $(CARLA_ENGINE_HPP) $(CARLA_PLUGIN_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_BASE64_UTILS_HPP) $(CARLA_OSC_UTILS_HPP) | CARLA_STANDALONE_CPP_DEPS = $(CARLA_HOST_H) $(CARLA_MIDI_H) $(CARLA_NATIVE_H) $(CARLA_ENGINE_HPP) $(CARLA_PLUGIN_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_BASE64_UTILS_HPP) $(CARLA_OSC_UTILS_HPP) | ||||
CARLA_STANDALONE_CPP = $(CWD)/backend/CarlaStandalone.cpp $(CARLA_STANDALONE_CPP_DEPS) $(CARLA_PLUGIN_UI_CPP) $(CARLA_DSSI_UTILS_CPP) $(CARLA_STATE_UTILS_CPP) | CARLA_STANDALONE_CPP = $(CWD)/backend/CarlaStandalone.cpp $(CARLA_STANDALONE_CPP_DEPS) $(CARLA_PLUGIN_UI_CPP) $(CARLA_DSSI_UTILS_CPP) $(CARLA_STATE_UTILS_CPP) | ||||
CARLA_UTILS_CPP_DEPS = $(CARLA_UTILS_H) $(CARLA_THREAD_HPP) | |||||
CARLA_UTILS_CPP = $(CWD)/backend/CarlaUtils.cpp $(CARLA_UTILS_CPP_DEPS) | |||||
# ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- |
@@ -0,0 +1,66 @@ | |||||
/* | |||||
* Carla Plugin Host | |||||
* Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU General Public License as | |||||
* published by the Free Software Foundation; either version 2 of | |||||
* the License, or any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
*/ | |||||
#include "CarlaUtils.h" | |||||
#include "CarlaThread.hpp" | |||||
#include "juce_core.h" | |||||
// ------------------------------------------------------------------------------------------------------------------- | |||||
void carla_set_process_name(const char* name) | |||||
{ | |||||
carla_debug("carla_set_process_name(\"%s\")", name); | |||||
CarlaThread::setCurrentThreadName(name); | |||||
juce::Thread::setCurrentThreadName(name); | |||||
} | |||||
// ------------------------------------------------------------------------------------------------------------------- | |||||
const char* carla_get_library_filename() | |||||
{ | |||||
carla_debug("carla_get_library_filename()"); | |||||
static CarlaString ret; | |||||
if (ret.isEmpty()) | |||||
{ | |||||
using juce::File; | |||||
ret = File(File::getSpecialLocation(File::currentExecutableFile)).getFullPathName().toRawUTF8(); | |||||
} | |||||
return ret; | |||||
} | |||||
const char* carla_get_library_folder() | |||||
{ | |||||
carla_debug("carla_get_library_folder()"); | |||||
static CarlaString ret; | |||||
if (ret.isEmpty()) | |||||
{ | |||||
using juce::File; | |||||
ret = File(File::getSpecialLocation(File::currentExecutableFile).getParentDirectory()).getFullPathName().toRawUTF8(); | |||||
} | |||||
return ret; | |||||
} | |||||
// ------------------------------------------------------------------------------------------------------------------- |
@@ -0,0 +1,49 @@ | |||||
/* | |||||
* Carla Plugin Host | |||||
* Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU General Public License as | |||||
* published by the Free Software Foundation; either version 2 of | |||||
* the License, or any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
*/ | |||||
#ifndef CARLA_UTILS_H_INCLUDED | |||||
#define CARLA_UTILS_H_INCLUDED | |||||
#include "CarlaDefines.h" | |||||
/*! | |||||
* @defgroup CarlaUtilsAPI Carla Utils API | |||||
* | |||||
* The Carla Utils API. | |||||
* | |||||
* This API allows to call advanced features from Python. | |||||
* @{ | |||||
*/ | |||||
/*! | |||||
* Get the juce version used in the current Carla build. | |||||
*/ | |||||
CARLA_EXPORT void carla_set_process_name(const char* name); | |||||
/*! | |||||
* Get the current carla library filename. | |||||
*/ | |||||
CARLA_EXPORT const char* carla_get_library_filename(); | |||||
/*! | |||||
* Get the folder where the current use carla library resides. | |||||
*/ | |||||
CARLA_EXPORT const char* carla_get_library_folder(); | |||||
/** @} */ | |||||
#endif /* CARLA_UTILS_H_INCLUDED */ |
@@ -35,6 +35,8 @@ STANDALONE_LIBS += ../modules/rtaudio.a | |||||
STANDALONE_LIBS += ../modules/rtmidi.a | STANDALONE_LIBS += ../modules/rtmidi.a | ||||
endif | endif | ||||
UTILS_LIBS = ../modules/juce_core.a | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
STANDALONE_FLAGS = $(JACKBRIDGE_LIBS) | STANDALONE_FLAGS = $(JACKBRIDGE_LIBS) | ||||
@@ -77,13 +79,17 @@ ifeq ($(UNIX),true) | |||||
STANDALONE_FLAGS += -lmagic | STANDALONE_FLAGS += -lmagic | ||||
endif | endif | ||||
UTILS_FLAGS = $(JUCE_CORE_LIBS) | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
OBJS = \ | OBJS = \ | ||||
CarlaStandalone.cpp.o | |||||
CarlaStandalone.cpp.o \ | |||||
CarlaUtils.cpp.o | |||||
TARGETS = \ | TARGETS = \ | ||||
../../bin/libcarla_standalone2$(LIB_EXT) | |||||
../../bin/libcarla_standalone2$(LIB_EXT) \ | |||||
../../bin/libcarla_utils2$(LIB_EXT) | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
@@ -108,9 +114,15 @@ doxygen: CarlaBackend.doxygen | |||||
CarlaStandalone.cpp.o: $(CARLA_STANDALONE_CPP) | CarlaStandalone.cpp.o: $(CARLA_STANDALONE_CPP) | ||||
$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | $(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | ||||
CarlaUtils.cpp.o: $(CARLA_UTILS_CPP) | |||||
$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
../../bin/libcarla_standalone2$(LIB_EXT): $(OBJS) $(STANDALONE_LIBS) | |||||
../../bin/libcarla_standalone2$(LIB_EXT): CarlaStandalone.cpp.o $(STANDALONE_LIBS) | |||||
$(CXX) $< $(LIBS_START) $(STANDALONE_LIBS) $(LIBS_END) $(LINK_FLAGS) $(STANDALONE_FLAGS) $(SHARED) -o $@ | $(CXX) $< $(LIBS_START) $(STANDALONE_LIBS) $(LIBS_END) $(LINK_FLAGS) $(STANDALONE_FLAGS) $(SHARED) -o $@ | ||||
../../bin/libcarla_utils2$(LIB_EXT): CarlaUtils.cpp.o $(UTILS_LIBS) | |||||
$(CXX) $< $(LIBS_START) $(UTILS_LIBS) $(LIBS_END) $(LINK_FLAGS) $(UTILS_FLAGS) $(SHARED) -o $@ | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- |
@@ -83,3 +83,32 @@ def getPluginTypeFromString(stype): | |||||
return PLUGIN_NONE | return PLUGIN_NONE | ||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Carla Utils object using a DLL | |||||
class CarlaUtils(object): | |||||
def __init__(self, filename): | |||||
object.__init__(self) | |||||
self.lib = cdll.LoadLibrary(filename) | |||||
self.lib.carla_set_process_name.argtypes = [c_char_p] | |||||
self.lib.carla_set_process_name.restype = None | |||||
self.lib.carla_get_library_filename.argtypes = None | |||||
self.lib.carla_get_library_filename.restype = c_char_p | |||||
self.lib.carla_get_library_folder.argtypes = None | |||||
self.lib.carla_get_library_folder.restype = c_char_p | |||||
# -------------------------------------------------------------------------------------------------------- | |||||
def set_process_name(self, index, name): | |||||
self.lib.carla_set_process_name(name.encode("utf-8")) | |||||
def get_library_filename(self): | |||||
return charPtrToString(self.lib.carla_get_library_filename()) | |||||
def get_library_folder(self): | |||||
return charPtrToString(self.lib.carla_get_library_folder()) | |||||
# ------------------------------------------------------------------------------------------------------------ |