@@ -343,7 +343,6 @@ endif | |||||
ifeq ($(USING_JUCE),true) | ifeq ($(USING_JUCE),true) | ||||
BASE_FLAGS += -DUSING_JUCE | BASE_FLAGS += -DUSING_JUCE | ||||
BUILD_CXX_FLAGS += -DJUCE_APP_CONFIG_HEADER='<AppConfig.h>' | |||||
endif | endif | ||||
# --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
* Carla Standalone | * Carla Standalone | ||||
* Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com> | |||||
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com> | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU General Public License as | * modify it under the terms of the GNU General Public License as | ||||
@@ -38,7 +38,7 @@ | |||||
#endif | #endif | ||||
#ifdef USING_JUCE | #ifdef USING_JUCE | ||||
// # include "AppConfig.h" | |||||
# include "AppConfig.h" | |||||
# if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN) | # if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN) | ||||
# include "juce_gui_basics/juce_gui_basics.h" | # include "juce_gui_basics/juce_gui_basics.h" | ||||
# else | # else | ||||
@@ -137,6 +137,11 @@ typedef struct _CarlaCachedPluginInfo { | |||||
*/ | */ | ||||
CARLA_EXPORT const char* carla_get_complete_license_text(); | CARLA_EXPORT const char* carla_get_complete_license_text(); | ||||
/*! | |||||
* Get the juce version used in the current Carla build. | |||||
*/ | |||||
CARLA_EXPORT const char* carla_get_juce_version(); | |||||
/*! | /*! | ||||
* Get the list of supported file extensions in carla_load_file(). | * Get the list of supported file extensions in carla_load_file(). | ||||
*/ | */ | ||||
@@ -1039,7 +1039,7 @@ bool CarlaEngine::loadFile(const char* const filename) | |||||
extension == "mp3" || | extension == "mp3" || | ||||
extension == "mpc" || | extension == "mpc" || | ||||
extension == "wma" || | extension == "wma" || | ||||
# ifdef HAVE_SNDFILE | |||||
# ifndef HAVE_SNDFILE | |||||
// FFmpeg without sndfile | // FFmpeg without sndfile | ||||
extension == "flac" || | extension == "flac" || | ||||
extension == "oga" || | extension == "oga" || | ||||
@@ -1115,7 +1115,7 @@ bool CarlaEngine::loadFile(const char* const filename) | |||||
return addPlugin(getBinaryTypeFromFile(filename), PLUGIN_VST2, filename, nullptr, nullptr, 0, nullptr, 0x0); | return addPlugin(getBinaryTypeFromFile(filename), PLUGIN_VST2, filename, nullptr, nullptr, 0, nullptr, 0x0); | ||||
#endif | #endif | ||||
#ifdef USING_JUCE | |||||
#if defined(USING_JUCE) && (defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN)) | |||||
if (extension == "vst3") | if (extension == "vst3") | ||||
return addPlugin(getBinaryTypeFromFile(filename), PLUGIN_VST3, filename, nullptr, nullptr, 0, nullptr, 0x0); | return addPlugin(getBinaryTypeFromFile(filename), PLUGIN_VST3, filename, nullptr, nullptr, 0, nullptr, 0x0); | ||||
#endif | #endif | ||||
@@ -22,6 +22,7 @@ | |||||
#include "RtLinkedList.hpp" | #include "RtLinkedList.hpp" | ||||
#include "AppConfig.h" | |||||
#include "juce_audio_devices/juce_audio_devices.h" | #include "juce_audio_devices/juce_audio_devices.h" | ||||
CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
@@ -24,6 +24,7 @@ | |||||
#include "CarlaMathUtils.hpp" | #include "CarlaMathUtils.hpp" | ||||
#include "JucePluginWindow.hpp" | #include "JucePluginWindow.hpp" | ||||
#include "AppConfig.h" | |||||
#include "juce_audio_processors/juce_audio_processors.h" | #include "juce_audio_processors/juce_audio_processors.h" | ||||
namespace juce { | namespace juce { | ||||
@@ -26,6 +26,11 @@ | |||||
# include <fluidsynth.h> | # include <fluidsynth.h> | ||||
#endif | #endif | ||||
#ifdef USING_JUCE | |||||
# include "AppConfig.h" | |||||
# include "juce_core/juce_core.h" | |||||
#endif | |||||
#include "water/files/File.h" | #include "water/files/File.h" | ||||
// ------------------------------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------------------------------- | ||||
@@ -46,7 +51,14 @@ const char* carla_get_complete_license_text() | |||||
"<li>LADSPA plugin support</li>" | "<li>LADSPA plugin support</li>" | ||||
"<li>DSSI plugin support</li>" | "<li>DSSI plugin support</li>" | ||||
"<li>LV2 plugin support</li>" | "<li>LV2 plugin support</li>" | ||||
"<li>VST2 plugin support using VeSTige header by Javier Serrano Polo</li>" | |||||
#if defined(USING_JUCE) && (defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN)) | |||||
"<li>VST2/2 plugin support (using Juce)</li>" | |||||
#else | |||||
"<li>VST2 plugin support (using VeSTige header by Javier Serrano Polo)</li>" | |||||
#endif | |||||
#if defined(USING_JUCE) && defined(CARLA_OS_MAC) | |||||
"<li>AU plugin support (using Juce)</li>" | |||||
#endif | |||||
// Sample kit libraries | // Sample kit libraries | ||||
#ifdef HAVE_FLUIDSYNTH | #ifdef HAVE_FLUIDSYNTH | ||||
@@ -59,7 +71,9 @@ const char* carla_get_complete_license_text() | |||||
"<li>liblo library for OSC support</li>" | "<li>liblo library for OSC support</li>" | ||||
"<li>rtmempool library by Nedko Arnaudov" | "<li>rtmempool library by Nedko Arnaudov" | ||||
"<li>serd, sord, sratom and lilv libraries for LV2 discovery</li>" | "<li>serd, sord, sratom and lilv libraries for LV2 discovery</li>" | ||||
#ifndef USING_JUCE | |||||
"<li>RtAudio v" RTAUDIO_VERSION " and RtMidi v" RTMIDI_VERSION " for native Audio and MIDI support</li>" | "<li>RtAudio v" RTAUDIO_VERSION " and RtMidi v" RTMIDI_VERSION " for native Audio and MIDI support</li>" | ||||
#endif | |||||
// Internal plugins | // Internal plugins | ||||
"<li>MIDI Sequencer UI code by Perry Nguyen</li>" | "<li>MIDI Sequencer UI code by Perry Nguyen</li>" | ||||
@@ -80,6 +94,25 @@ const char* carla_get_complete_license_text() | |||||
return retText; | return retText; | ||||
} | } | ||||
const char* carla_get_juce_version() | |||||
{ | |||||
carla_debug("carla_get_juce_version()"); | |||||
static CarlaString retVersion; | |||||
#ifdef USING_JUCE | |||||
if (retVersion.isEmpty()) | |||||
{ | |||||
if (const char* const version = juce::SystemStats::getJUCEVersion().toRawUTF8()) | |||||
retVersion = version+6; | |||||
else | |||||
retVersion = "Unknown"; | |||||
} | |||||
#endif | |||||
return retVersion; | |||||
} | |||||
const char* const* carla_get_supported_file_extensions() | const char* const* carla_get_supported_file_extensions() | ||||
{ | { | ||||
carla_debug("carla_get_supported_file_extensions()"); | carla_debug("carla_get_supported_file_extensions()"); | ||||
@@ -96,12 +129,15 @@ const char* const* carla_get_supported_file_extensions() | |||||
#ifdef HAVE_ZYN_DEPS | #ifdef HAVE_ZYN_DEPS | ||||
"xmz", "xiz", | "xmz", "xiz", | ||||
#endif | #endif | ||||
#if defined(CARLA_OS_MAC) | |||||
#ifdef CARLA_OS_MAC | |||||
"vst", | "vst", | ||||
#else | #else | ||||
"dll", | "dll", | ||||
"so", | "so", | ||||
#endif | #endif | ||||
#if defined(USING_JUCE) && (defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN)) | |||||
"vst3", | |||||
#endif | |||||
// Audio files | // Audio files | ||||
#ifdef HAVE_SNDFILE | #ifdef HAVE_SNDFILE | ||||
@@ -110,7 +146,7 @@ const char* const* carla_get_supported_file_extensions() | |||||
#endif | #endif | ||||
#ifdef HAVE_FFMPEG | #ifdef HAVE_FFMPEG | ||||
"3g2", "3gp", "aac", "ac3", "amr", "ape", "mp2", "mp3", "mpc", "wma", | "3g2", "3gp", "aac", "ac3", "amr", "ape", "mp2", "mp3", "mpc", "wma", | ||||
# ifdef HAVE_SNDFILE | |||||
# ifndef HAVE_SNDFILE | |||||
// FFmpeg without sndfile | // FFmpeg without sndfile | ||||
"flac", "oga", "ogg", "w64", "wav", | "flac", "oga", "ogg", "w64", "wav", | ||||
# endif | # endif | ||||
@@ -148,6 +184,15 @@ const char* const* carla_get_supported_features() | |||||
#endif | #endif | ||||
#ifdef HAVE_PYQT | #ifdef HAVE_PYQT | ||||
"gui", | "gui", | ||||
#endif | |||||
#ifdef USING_JUCE | |||||
"juce", | |||||
# if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN) | |||||
"vst3", | |||||
# endif | |||||
# if defined(CARLA_OS_MAC) | |||||
"au", | |||||
# endif | |||||
#endif | #endif | ||||
nullptr | nullptr | ||||
}; | }; | ||||
@@ -23,6 +23,21 @@ TARGETS = $(BINDIR)/libcarla_utils$(LIB_EXT) | |||||
LIBS = $(MODULEDIR)/lilv.a | LIBS = $(MODULEDIR)/lilv.a | ||||
LIBS += $(MODULEDIR)/water.files.a | LIBS += $(MODULEDIR)/water.files.a | ||||
ifeq ($(USING_JUCE),true) | |||||
LIBS += $(MODULEDIR)/juce_audio_basics.a | |||||
LIBS += $(MODULEDIR)/juce_audio_processors.a | |||||
LIBS += $(MODULEDIR)/juce_core.a | |||||
LIBS += $(MODULEDIR)/juce_data_structures.a | |||||
LIBS += $(MODULEDIR)/juce_events.a | |||||
ifeq ($(MACOS_OR_WIN32),true) | |||||
LIBS += $(MODULEDIR)/juce_graphics.a | |||||
LIBS += $(MODULEDIR)/juce_gui_basics.a | |||||
endif | |||||
ifeq ($(MACOS),true) | |||||
LIBS += $(MODULEDIR)/juce_gui_extra.a | |||||
endif | |||||
endif | |||||
LINK_FLAGS += $(LILV_LIBS) | LINK_FLAGS += $(LILV_LIBS) | ||||
LINK_FLAGS += $(WATER_LIBS) | LINK_FLAGS += $(WATER_LIBS) | ||||
@@ -34,6 +49,21 @@ ifneq ($(HAIKU),true) | |||||
LINK_FLAGS += -lpthread | LINK_FLAGS += -lpthread | ||||
endif | endif | ||||
ifeq ($(USING_JUCE),true) | |||||
LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | |||||
LINK_FLAGS += $(JUCE_AUDIO_PROCESSORS_LIBS) | |||||
LINK_FLAGS += $(JUCE_CORE_LIBS) | |||||
LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) | |||||
LINK_FLAGS += $(JUCE_EVENTS_LIBS) | |||||
ifeq ($(MACOS_OR_WIN32),true) | |||||
LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) | |||||
LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) | |||||
endif | |||||
ifeq ($(MACOS),true) | |||||
LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS) | |||||
endif | |||||
endif | |||||
# ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
all: $(TARGETS) | all: $(TARGETS) | ||||
@@ -258,7 +258,7 @@ class RackListWidget(QListWidget): | |||||
if os.path.isdir(filename): | if os.path.isdir(filename): | ||||
#if os.path.exists(os.path.join(filename, "manifest.ttl")): | #if os.path.exists(os.path.join(filename, "manifest.ttl")): | ||||
#return True | #return True | ||||
if MACOS and filename.lower().endswith(".vst"): | |||||
if MACOS and filename.lower().endswith((".vst", ".vst3")): | |||||
return True | return True | ||||
elif os.path.isfile(filename): | elif os.path.isfile(filename): | ||||
@@ -1,7 +1,25 @@ | |||||
/* | |||||
* Carla Plugin Host | |||||
* Copyright (C) 2011-2019 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_JUCE_APPCONFIG_H_INCLUDED | #ifndef CARLA_JUCE_APPCONFIG_H_INCLUDED | ||||
#define CARLA_JUCE_APPCONFIG_H_INCLUDED | #define CARLA_JUCE_APPCONFIG_H_INCLUDED | ||||
#define JUCE_APP_CONFIG_HEADER "AppConfig.h" | |||||
// -------------------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------------------- | ||||
// Check OS | // Check OS | ||||
@@ -29,6 +29,8 @@ | |||||
#error "Incorrect use of JUCE cpp file" | #error "Incorrect use of JUCE cpp file" | ||||
#endif | #endif | ||||
#include "AppConfig.h" | |||||
#include "juce_audio_basics.h" | #include "juce_audio_basics.h" | ||||
#if JUCE_MINGW | #if JUCE_MINGW | ||||
@@ -29,6 +29,8 @@ | |||||
#error "Incorrect use of JUCE cpp file" | #error "Incorrect use of JUCE cpp file" | ||||
#endif | #endif | ||||
#include "AppConfig.h" | |||||
#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | ||||
#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1 | #define JUCE_CORE_INCLUDE_COM_SMART_PTR 1 | ||||
#define JUCE_CORE_INCLUDE_JNI_HELPERS 1 | #define JUCE_CORE_INCLUDE_JNI_HELPERS 1 | ||||
@@ -33,6 +33,8 @@ | |||||
#error "Incorrect use of JUCE cpp file" | #error "Incorrect use of JUCE cpp file" | ||||
#endif | #endif | ||||
#include "AppConfig.h" | |||||
#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 | #define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 | ||||
#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | ||||
@@ -29,6 +29,8 @@ | |||||
#error "Incorrect use of JUCE cpp file" | #error "Incorrect use of JUCE cpp file" | ||||
#endif | #endif | ||||
#include "AppConfig.h" | |||||
#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | ||||
#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1 | #define JUCE_CORE_INCLUDE_COM_SMART_PTR 1 | ||||
#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 | #define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 | ||||
@@ -33,6 +33,8 @@ | |||||
#error "Incorrect use of JUCE cpp file" | #error "Incorrect use of JUCE cpp file" | ||||
#endif | #endif | ||||
#include "AppConfig.h" | |||||
#include "juce_data_structures.h" | #include "juce_data_structures.h" | ||||
#include "values/juce_Value.cpp" | #include "values/juce_Value.cpp" | ||||
@@ -29,6 +29,8 @@ | |||||
#error "Incorrect use of JUCE cpp file" | #error "Incorrect use of JUCE cpp file" | ||||
#endif | #endif | ||||
#include "AppConfig.h" | |||||
#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | ||||
#define JUCE_CORE_INCLUDE_JNI_HELPERS 1 | #define JUCE_CORE_INCLUDE_JNI_HELPERS 1 | ||||
#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 | #define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 | ||||
@@ -33,6 +33,8 @@ | |||||
#error "Incorrect use of JUCE cpp file" | #error "Incorrect use of JUCE cpp file" | ||||
#endif | #endif | ||||
#include "AppConfig.h" | |||||
#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | ||||
#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1 | #define JUCE_CORE_INCLUDE_COM_SMART_PTR 1 | ||||
#define JUCE_CORE_INCLUDE_JNI_HELPERS 1 | #define JUCE_CORE_INCLUDE_JNI_HELPERS 1 | ||||
@@ -33,6 +33,8 @@ | |||||
#error "Incorrect use of JUCE cpp file" | #error "Incorrect use of JUCE cpp file" | ||||
#endif | #endif | ||||
#include "AppConfig.h" | |||||
#define NS_FORMAT_FUNCTION(F,A) // To avoid spurious warnings from GCC | #define NS_FORMAT_FUNCTION(F,A) // To avoid spurious warnings from GCC | ||||
#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | ||||
@@ -33,6 +33,8 @@ | |||||
#error "Incorrect use of JUCE cpp file" | #error "Incorrect use of JUCE cpp file" | ||||
#endif | #endif | ||||
#include "AppConfig.h" | |||||
#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | ||||
#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1 | #define JUCE_CORE_INCLUDE_COM_SMART_PTR 1 | ||||
#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 | #define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 | ||||
@@ -20,6 +20,7 @@ | |||||
#include "CarlaJuceUtils.hpp" | #include "CarlaJuceUtils.hpp" | ||||
#include "AppConfig.h" | |||||
#include "juce_gui_basics/juce_gui_basics.h" | #include "juce_gui_basics/juce_gui_basics.h" | ||||
#ifdef HAVE_X11 | #ifdef HAVE_X11 | ||||