@@ -18,7 +18,7 @@ | |||
#ifndef CARLA_ENGINE_HPP_INCLUDED | |||
#define CARLA_ENGINE_HPP_INCLUDED | |||
#include "CarlaBackend.hpp" | |||
#include "CarlaBackend.h" | |||
#include "CarlaMIDI.h" | |||
#include "CarlaString.hpp" | |||
@@ -36,6 +36,7 @@ using CarlaBackend::MidiProgramData; | |||
using CarlaBackend::CustomData; | |||
using CarlaBackend::EngineDriverDeviceInfo; | |||
using CarlaBackend::CarlaEngine; | |||
using CarlaBackend::CarlaPlugin; | |||
#endif | |||
/*! | |||
@@ -472,16 +473,16 @@ typedef struct _CarlaTransportInfo { | |||
* Get the complete license text of used third-party code and features.\n | |||
* Returned string is in basic html format. | |||
*/ | |||
CARLA_EXPORT const char* carla_get_extended_license_text(); | |||
CARLA_EXPORT const char* carla_get_complete_license_text(); | |||
/*! | |||
* Get the supported file types in carla_load_filename().\n | |||
* Get all the supported file types in carla_load_filename().\n | |||
* Returned string uses this syntax: | |||
* \code | |||
* @code | |||
* "*.ext1;*.ext2;*.ext3" | |||
* \endcode | |||
* @endcode | |||
*/ | |||
CARLA_EXPORT const char* carla_get_supported_file_types(); | |||
CARLA_EXPORT const char* carla_get_supported_file_extensions(); | |||
/*! | |||
* Get how many engine drivers are available to use. | |||
@@ -947,4 +948,4 @@ CARLA_EXPORT const char* carla_get_host_osc_url_udp(); | |||
/** @} */ | |||
#endif // CARLA_HOST_H_INCLUDED | |||
#endif /* CARLA_HOST_H_INCLUDED */ |
@@ -18,7 +18,7 @@ | |||
#ifndef CARLA_PLUGIN_HPP_INCLUDED | |||
#define CARLA_PLUGIN_HPP_INCLUDED | |||
#include "CarlaBackend.hpp" | |||
#include "CarlaBackend.h" | |||
#include "CarlaString.hpp" | |||
// Avoid including extra libs here | |||
@@ -47,6 +47,9 @@ endif | |||
ifeq ($(HAVE_ZYN_DEPS),true) | |||
BUILD_CXX_FLAGS += -DWANT_ZYNADDSUBFX | |||
ifeq ($(HAVE_ZYN_UI_DEPS),true) | |||
BUILD_CXX_FLAGS += -DWANT_ZYNADDSUBFX_UI | |||
endif | |||
endif | |||
# -------------------------------------------------------------- |
@@ -22,31 +22,17 @@ | |||
#include "CarlaEngine.hpp" | |||
#include "CarlaPlugin.hpp" | |||
#include "CarlaBackendUtils.hpp" | |||
#include "CarlaOscUtils.hpp" | |||
#include "CarlaNative.h" | |||
//#include "CarlaBackendUtils.hpp" | |||
//#include "CarlaOscUtils.hpp" | |||
//#include "CarlaNative.h" | |||
#ifdef USE_JUCE | |||
# include "juce_gui_basics.h" | |||
#endif | |||
//#include "CarlaLogThread.hpp" | |||
//#if ! (defined(DEBUG) || defined(WANT_LOGS) || defined(BUILD_ANSI_TEST)) | |||
//# define WANT_LOGS | |||
//#endif | |||
namespace CB = CarlaBackend; | |||
using CB::CarlaEngine; | |||
using CB::CarlaPlugin; | |||
using CB::EngineCallbackFunc; | |||
using CB::EngineOptions; | |||
using CB::EngineTimeInfo; | |||
using CB::FileCallbackFunc; | |||
#ifdef USE_JUCE | |||
using namespace juce; | |||
// ----------------------------------------------------------------------- | |||
// Juce Message Thread | |||
@@ -95,17 +81,22 @@ juce_ImplementSingleton(JuceMessageThread) | |||
// Single, standalone engine | |||
struct CarlaBackendStandalone { | |||
EngineCallbackFunc callback; | |||
void* callbackPtr; | |||
CarlaEngine* engine; | |||
EngineCallbackFunc engineCallback; | |||
void* engineCallbackPtr; | |||
//EngineOptions engineOptions; | |||
FileCallbackFunc fileCallback; | |||
void* fileCallbackPtr; | |||
CarlaEngine* engine; | |||
CarlaString lastError; | |||
EngineOptions options; | |||
CarlaString lastError; | |||
CarlaBackendStandalone() | |||
: callback(nullptr), | |||
callbackPtr(nullptr), | |||
engine(nullptr) {} | |||
: engine(nullptr), | |||
engineCallback(nullptr), | |||
engineCallbackPtr(nullptr), | |||
fileCallback(nullptr), | |||
fileCallbackPtr(nullptr) {} | |||
~CarlaBackendStandalone() | |||
{ | |||
@@ -115,52 +106,35 @@ struct CarlaBackendStandalone { | |||
#endif | |||
} | |||
#ifdef USE_JUCE | |||
void init() | |||
{ | |||
#ifdef USE_JUCE | |||
JUCE_AUTORELEASEPOOL | |||
initialiseJuce_GUI(); | |||
JuceMessageThread::getInstance(); | |||
#endif | |||
} | |||
void idle() {} | |||
void close() | |||
{ | |||
#ifdef USE_JUCE | |||
JUCE_AUTORELEASEPOOL | |||
JuceMessageThread::deleteInstance(); | |||
shutdownJuce_GUI(); | |||
#endif | |||
} | |||
#endif | |||
CARLA_DECLARE_NON_COPY_STRUCT(CarlaBackendStandalone) | |||
}; | |||
struct CarlaBackendFileHandler { | |||
FileCallbackFunc callback; | |||
void* callbackPtr; | |||
CarlaBackendFileHandler() | |||
: callback(nullptr), | |||
callbackPtr(nullptr) {} | |||
}; | |||
//#ifdef WANT_LOGS | |||
//static CarlaLogThread gLogThread; | |||
//#endif | |||
static CarlaBackendStandalone gStandalone; | |||
static CarlaBackendFileHandler gFileHandler; | |||
static CarlaBackendStandalone gStandalone; | |||
// ------------------------------------------------------------------------------------------------------------------- | |||
// API | |||
const char* carla_get_extended_license_text() | |||
const char* carla_get_complete_license_text() | |||
{ | |||
carla_debug("carla_get_extended_license_text()"); | |||
carla_debug("carla_get_complete_license_text()"); | |||
static CarlaString retText; | |||
@@ -205,23 +179,24 @@ const char* carla_get_extended_license_text() | |||
text2 += "<li>LinuxSampler library for GIG and SFZ support*, http://www.linuxsampler.org/</li>"; | |||
#endif | |||
#ifdef WANT_NATIVE | |||
// Internal plugins | |||
#ifdef WANT_OPENGL | |||
# ifdef WANT_OPENGL | |||
text3 += "<li>DISTRHO Mini-Series plugin code, based on LOSER-dev suite by Michael Gruhn</li>"; | |||
#endif | |||
# endif | |||
text3 += "<li>NekoFilter plugin code, based on lv2fil by Nedko Arnaudov and Fons Adriaensen</li>"; | |||
//text1 += "<li>SunVox library file support, http://www.warmplace.ru/soft/sunvox/</li>"; // unfinished | |||
#ifdef WANT_AUDIOFILE | |||
# ifdef WANT_AUDIOFILE | |||
text3 += "<li>AudioDecoder library for Audio file support, by Robin Gareus</li>"; | |||
#endif | |||
#ifdef WANT_MIDIFILE | |||
# endif | |||
# ifdef WANT_MIDIFILE | |||
text3 += "<li>LibSMF library for MIDI file support, http://libsmf.sourceforge.net/</li>"; | |||
#endif | |||
#ifdef WANT_ZYNADDSUBFX | |||
# endif | |||
# ifdef WANT_ZYNADDSUBFX | |||
text3 += "<li>ZynAddSubFX plugin code, http://zynaddsubfx.sf.net/</li>"; | |||
# ifdef WANT_ZYNADDSUBFX_UI | |||
# ifdef WANT_ZYNADDSUBFX_UI | |||
text3 += "<li>ZynAddSubFX UI using NTK, http://non.tuxfamily.org/wiki/NTK</li>"; | |||
# endif | |||
# endif | |||
#endif | |||
@@ -243,8 +218,8 @@ const char* carla_get_extended_license_text() | |||
text5 += "<li>Real-time memory pool, by Nedko Arnaudov</li>"; | |||
text5 += "</ul>"; | |||
// LinuxSampler GPL exception | |||
#ifdef WANT_LINUXSAMPLER | |||
// LinuxSampler GPL exception | |||
text5 += "<p>(*) Using LinuxSampler code in commercial hardware or software products is not allowed without prior written authorization by the authors.</p>"; | |||
#endif | |||
@@ -254,9 +229,9 @@ const char* carla_get_extended_license_text() | |||
return retText; | |||
} | |||
const char* carla_get_supported_file_types() | |||
const char* carla_get_supported_file_extensions() | |||
{ | |||
carla_debug("carla_get_supported_file_types()"); | |||
carla_debug("carla_get_supported_file_extensions()"); | |||
static CarlaString retText; | |||
@@ -321,13 +296,14 @@ const char* const* carla_get_engine_driver_device_names(unsigned int index) | |||
return CarlaEngine::getDriverDeviceNames(index); | |||
} | |||
const CarlaEngineDriverDeviceInfo* carla_get_engine_driver_device_info(unsigned int index, const char* deviceName) | |||
const EngineDriverDeviceInfo* carla_get_engine_driver_device_info(unsigned int index, const char* deviceName) | |||
{ | |||
carla_debug("carla_get_engine_driver_device_info(%i, \"%s\")", index, deviceName); | |||
return CarlaEngine::getDriverDeviceInfo(index, deviceName); | |||
} | |||
#if 0 | |||
// ------------------------------------------------------------------------------------------------------------------- | |||
unsigned int carla_get_internal_plugin_count() | |||
@@ -2245,6 +2221,18 @@ void carla_nsm_reply_save() | |||
gCarlaNSM.replySave(); | |||
} | |||
#endif | |||
// ------------------------------------------------------------------------------------------------------------------- | |||
//#include "CarlaLogThread.hpp" | |||
//#if ! (defined(DEBUG) || defined(WANT_LOGS) || defined(BUILD_ANSI_TEST)) | |||
//# define WANT_LOGS | |||
//#endif | |||
//#ifdef WANT_LOGS | |||
//static CarlaLogThread gLogThread; | |||
//#endif | |||
// ------------------------------------------------------------------------------------------------------------------- | |||
@@ -8,91 +8,91 @@ include ../Makefile.mk | |||
# -------------------------------------------------------------- | |||
BUILD_CXX_FLAGS += $(shell pkg-config --cflags liblo) | |||
# BUILD_CXX_FLAGS += $(shell pkg-config --cflags liblo) | |||
# -------------------------------------------------------------- | |||
# Common | |||
LINK_FLAGS += $(shell pkg-config --libs liblo) | |||
# LINK_FLAGS += $(shell pkg-config --libs liblo) | |||
LINK_FLAGS += $(JACKBRIDGE_LIBS) | |||
# LINK_FLAGS += $(JACKBRIDGE_LIBS) | |||
# LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | |||
# LINK_FLAGS += $(JUCE_CORE_LIBS) | |||
# LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) | |||
# LINK_FLAGS += $(JUCE_EVENTS_LIBS) | |||
# LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) | |||
# LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) | |||
LINK_FLAGS += $(RTAUDIO_LIBS) | |||
LINK_FLAGS += $(RTMIDI_LIBS) | |||
LINK_FLAGS += $(RTMEMPOOL_LIBS) | |||
ifeq ($(HAVE_OPENGL),true) | |||
LINK_FLAGS += $(DGL_LIBS) | |||
endif | |||
ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
LINK_FLAGS += $(LILV_LIBS) | |||
endif | |||
# LINK_FLAGS += $(RTAUDIO_LIBS) | |||
# LINK_FLAGS += $(RTMIDI_LIBS) | |||
# LINK_FLAGS += $(RTMEMPOOL_LIBS) | |||
# | |||
# ifeq ($(HAVE_OPENGL),true) | |||
# LINK_FLAGS += $(DGL_LIBS) | |||
# endif | |||
# | |||
# ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
# LINK_FLAGS += $(LILV_LIBS) | |||
# endif | |||
# -------------------------------------------------------------- | |||
# Plugin | |||
ifeq ($(HAVE_FLUIDSYNTH),true) | |||
LINK_FLAGS += $(shell pkg-config --libs fluidsynth) | |||
endif | |||
ifeq ($(HAVE_LINUXSAMPLER),true) | |||
LINK_FLAGS += $(shell pkg-config --libs linuxsampler) | |||
ifeq ($(WIN32),true) | |||
LINK_FLAGS += lrpcrt4 | |||
endif | |||
endif | |||
# ifeq ($(HAVE_FLUIDSYNTH),true) | |||
# LINK_FLAGS += $(shell pkg-config --libs fluidsynth) | |||
# endif | |||
# | |||
# ifeq ($(HAVE_LINUXSAMPLER),true) | |||
# LINK_FLAGS += $(shell pkg-config --libs linuxsampler) | |||
# ifeq ($(WIN32),true) | |||
# LINK_FLAGS += lrpcrt4 | |||
# endif | |||
# endif | |||
# -------------------------------------------------------------- | |||
# Native | |||
ifeq ($(HAVE_AF_DEPS),true) | |||
LINK_FLAGS += $(shell pkg-config --libs sndfile) | |||
ifeq ($(HAVE_FFMPEG),true) | |||
LINK_FLAGS += $(shell pkg-config --libs libavcodec libavformat libavutil) | |||
endif | |||
endif | |||
ifeq ($(HAVE_MF_DEPS),true) | |||
LINK_FLAGS += $(shell pkg-config --libs smf) | |||
endif | |||
ifeq ($(HAVE_ZYN_DEPS),true) | |||
LINK_FLAGS += $(shell pkg-config --libs fftw3 mxml zlib) | |||
ifeq ($(HAVE_ZYN_UI_DEPS),true) | |||
LINK_FLAGS += $(shell pkg-config --libs ntk_images ntk) | |||
endif | |||
endif | |||
# ifeq ($(HAVE_AF_DEPS),true) | |||
# LINK_FLAGS += $(shell pkg-config --libs sndfile) | |||
# ifeq ($(HAVE_FFMPEG),true) | |||
# LINK_FLAGS += $(shell pkg-config --libs libavcodec libavformat libavutil) | |||
# endif | |||
# endif | |||
# | |||
# ifeq ($(HAVE_MF_DEPS),true) | |||
# LINK_FLAGS += $(shell pkg-config --libs smf) | |||
# endif | |||
# | |||
# ifeq ($(HAVE_ZYN_DEPS),true) | |||
# LINK_FLAGS += $(shell pkg-config --libs fftw3 mxml zlib) | |||
# ifeq ($(HAVE_ZYN_UI_DEPS),true) | |||
# LINK_FLAGS += $(shell pkg-config --libs ntk_images ntk) | |||
# endif | |||
# endif | |||
# -------------------------------------------------------------- | |||
LIBS = ../libcarla_engine.a | |||
LIBS += ../libcarla_plugin.a | |||
# LIBS = ../libcarla_engine.a | |||
# LIBS += ../libcarla_plugin.a | |||
LIBS += ../../modules/carla_native.a | |||
LIBS += ../../modules/jackbridge.a | |||
# LIBS += ../../modules/carla_native.a | |||
# LIBS += ../../modules/jackbridge.a | |||
# LIBS += ../../modules/juce_audio_basics.a | |||
# LIBS += ../../modules/juce_core.a | |||
# LIBS += ../../modules/juce_data_structures.a | |||
# LIBS += ../../modules/juce_events.a | |||
# LIBS += ../../modules/juce_graphics.a | |||
# LIBS += ../../modules/juce_gui_basics.a | |||
LIBS += ../../modules/rtaudio.a | |||
LIBS += ../../modules/rtmidi.a | |||
LIBS += ../../modules/rtmempool.a | |||
# LIBS += ../../modules/rtaudio.a | |||
# LIBS += ../../modules/rtmidi.a | |||
# LIBS += ../../modules/rtmempool.a | |||
ifeq ($(HAVE_OPENGL),true) | |||
LIBS += ../../modules/dgl.a | |||
endif | |||
# ifeq ($(HAVE_OPENGL),true) | |||
# LIBS += ../../modules/dgl.a | |||
# endif | |||
ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
LIBS += ../../modules/lilv.a | |||
endif | |||
# ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
# LIBS += ../../modules/lilv.a | |||
# endif | |||
# -------------------------------------------------------------- | |||
@@ -100,7 +100,7 @@ OBJS = \ | |||
CarlaStandalone.cpp.o | |||
HEADERS = \ | |||
../CarlaBackend.hpp ../CarlaEngine.hpp ../CarlaPlugin.hpp ../CarlaHost.hpp ../../modules/CarlaNative.h | |||
../CarlaBackend.h ../CarlaHost.h ../CarlaEngine.hpp ../CarlaPlugin.hpp ../../modules/CarlaNative.h | |||
ifeq ($(WIN32),true) | |||
TARGET = ../libcarla_standalone2.dll | |||
@@ -889,16 +889,16 @@ class CarlaPluginInfo(Structure): | |||
# @see PluginOptions | |||
("optionsAvailable", c_uint), | |||
# Plugin options currently enabled.\n | |||
# Plugin options currently enabled. | |||
# Some options are enabled but not available, which means they will always be on. | |||
# @see PluginOptions | |||
("optionsEnabled", c_uint), | |||
# Plugin filename.\n | |||
# Plugin filename. | |||
# This can be the plugin binary or resource file. | |||
("filename", c_char_p), | |||
# Plugin name.\n | |||
# Plugin name. | |||
# This name is unique within a Carla instance. | |||
# @see carla_get_real_plugin_name() | |||
("name", c_char_p), | |||
@@ -912,15 +912,15 @@ class CarlaPluginInfo(Structure): | |||
# Plugin copyright/license. | |||
("copyright", c_char_p), | |||
# Icon name for this plugin, in lowercase.\n | |||
# Icon name for this plugin, in lowercase. | |||
# Default is "plugin". | |||
("iconName", c_char_p), | |||
# Patchbay client Id for this plugin.\n | |||
# Patchbay client Id for this plugin. | |||
# When 0, Id is considered invalid or unused. | |||
("patchbayClientId", c_int), | |||
# Plugin unique Id.\n | |||
# Plugin unique Id. | |||
# This Id is dependant on the plugin type and may sometimes be 0. | |||
("uniqueId", c_long) | |||
] | |||
@@ -1104,12 +1104,18 @@ class Host(object): | |||
object.__init__(self) | |||
self._init(libName) | |||
# ... | |||
def get_extended_license_text(self): | |||
return self.lib.carla_get_extended_license_text() | |||
# Get the complete license text of used third-party code and features. | |||
# Returned string is in basic html format. | |||
def get_complete_license_text(self): | |||
return self.lib.carla_get_complete_license_text() | |||
def get_supported_file_types(self): | |||
return self.lib.carla_get_supported_file_types() | |||
# Get all the supported file types in carla_load_filename(). | |||
# Returned string uses this syntax: | |||
# @code | |||
# "*.ext1;*.ext2;*.ext3" | |||
# @endcode | |||
def get_supported_file_extensions(self): | |||
return self.lib.carla_get_supported_file_extensions() | |||
def get_engine_driver_count(self): | |||
return self.lib.carla_get_engine_driver_count() | |||
@@ -1373,11 +1379,13 @@ class Host(object): | |||
def _init(self, libName): | |||
self.lib = cdll.LoadLibrary(libName) | |||
self.lib.carla_get_extended_license_text.argtypes = None | |||
self.lib.carla_get_extended_license_text.restype = c_char_p | |||
self.lib.carla_get_complete_license_text.argtypes = None | |||
self.lib.carla_get_complete_license_text.restype = c_char_p | |||
self.lib.carla_get_supported_file_extensions.argtypes = None | |||
self.lib.carla_get_supported_file_extensions.restype = c_char_p | |||
self.lib.carla_get_supported_file_types.argtypes = None | |||
self.lib.carla_get_supported_file_types.restype = c_char_p | |||
return | |||
self.lib.carla_get_engine_driver_count.argtypes = None | |||
self.lib.carla_get_engine_driver_count.restype = c_uint | |||
@@ -26,9 +26,10 @@ BUILD_CXX_FLAGS += -isystem /opt/kxstudio/include | |||
ANSI_FLAGS = -DBUILD_ANSI_TEST -DREAL_BUILD -I/usr/include/carla -I/usr/include/carla/includes | |||
ANSI_FLAGS += -Wall -Wextra -Werror | |||
BASE_FLAGS += -DDEBUG -O0 -g | |||
BASE_FLAGS += -ansi -pedantic -pedantic-errors | |||
BASE_FLAGS += -Wunused-parameter -Wuninitialized -Wcast-qual -Wconversion -Wsign-conversion -Wlogical-op -Waggregate-return | |||
ANSI_FLAGS += -DDEBUG -O0 -g | |||
ANSI_FLAGS += -ansi -pedantic -pedantic-errors | |||
ANSI_FLAGS += -Wunused-parameter -Wuninitialized -Wcast-qual -Wconversion -Wsign-conversion -Wlogical-op -Waggregate-return | |||
ANSI_FLAGS += -L../backend -lcarla_standalone2 | |||
# -------------------------------------------------------------- | |||
@@ -18,11 +18,37 @@ | |||
#include "CarlaBackend.h" | |||
#include "CarlaHost.h" | |||
#include <stdio.h> | |||
int main(int argc, char* argv[]) | |||
{ | |||
ParameterData a; | |||
ParameterRanges b; | |||
MidiProgramData c; | |||
CustomData d; | |||
EngineDriverDeviceInfo e; | |||
CarlaPluginInfo f; | |||
CarlaNativePluginInfo g; | |||
CarlaPortCountInfo h; | |||
CarlaParameterInfo i; | |||
CarlaScalePointInfo j; | |||
CarlaTransportInfo k; | |||
const char* licenseText; | |||
const char* fileExtensions; | |||
licenseText = carla_get_complete_license_text(); | |||
printf("LICENSE:\n%s\n", licenseText); | |||
fileExtensions = carla_get_supported_file_extensions(); | |||
printf("FILE EXTENSIONS:\n%s\n", fileExtensions); | |||
return 0; | |||
/* unused */ | |||
(void)argc; | |||
(void)argv; | |||
(void)a; (void)b; (void)c; (void)d; (void)e; | |||
(void)f; (void)g; (void)h; (void)i; (void)j; (void)k; | |||
} |
@@ -18,7 +18,7 @@ | |||
#ifndef CARLA_UTILS_HPP_INCLUDED | |||
#define CARLA_UTILS_HPP_INCLUDED | |||
#include "CarlaDefines.hpp" | |||
#include "CarlaDefines.h" | |||
#include <cassert> | |||
#include <cstdarg> | |||