diff --git a/jucewrapper/CMakeLists.txt b/jucewrapper/CMakeLists.txt index 8f564a6..61e7372 100644 --- a/jucewrapper/CMakeLists.txt +++ b/jucewrapper/CMakeLists.txt @@ -46,6 +46,9 @@ set_property(TARGET water PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../c add_library(zita_resampler STATIC IMPORTED) set_property(TARGET zita_resampler PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../carla/build/modules/Release/zita-resampler.a") +add_library(sCardinal STATIC IMPORTED) +set_property(TARGET sCardinal PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../bin/Cardinal.a") + add_library(sCardinalFX STATIC IMPORTED) set_property(TARGET sCardinalFX PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/../bin/CardinalFX.a") @@ -107,6 +110,94 @@ set(STATIC_LIBS_END "-Wl,--no-whole-archive") set(PLUGIN_FORMATS Standalone VST3) endif (APPLE) +# Main variant + +juce_add_plugin(Cardinal + AU_MAIN_TYPE kAudioUnitType_MusicEffect + COMPANY_COPYRIGHT "GPL-3.0-or-later" + COMPANY_NAME "DISTRHO" + COMPANY_WEBSITE "https://github.com/DISTRHO/Cardinal" + DESCRIPTION "Virtual modular synthesizer plugin" + EDITOR_WANTS_KEYBOARD_FOCUS FALSE + FORMATS ${PLUGIN_FORMATS} + IS_MIDI_EFFECT FALSE + IS_SYNTH FALSE + NEEDS_MIDI_INPUT TRUE + NEEDS_MIDI_OUTPUT TRUE + PLUGIN_CODE DcnM + PLUGIN_MANUFACTURER_CODE Dstr + PRODUCT_NAME "Cardinal") + +target_sources(Cardinal + PRIVATE + CardinalWrapper.cpp) + +target_include_directories(Cardinal + PRIVATE + ../dpf/distrho + ../src/CardinalFX) + +target_compile_definitions(Cardinal + PUBLIC + JucePlugin_PreferredChannelConfigurations=8,8 + JUCE_CHECK_MEMORY_LEAKS=0 + JUCE_DISABLE_NATIVE_FILECHOOSERS=1 + JUCE_DISPLAY_SPLASH_SCREEN=0 + JUCE_MODAL_LOOPS_PERMITTED=0 + JUCE_USE_CURL=0 + JUCE_USE_FLAC=0 + JUCE_USE_OGGVORBIS=0 + JUCE_USE_XINERAMA=0 + JUCE_VST3_CAN_REPLACE_VST2=0 + JUCE_ALSA=1 + JUCE_DIRECTSOUND=0 + JUCE_JACK=1 + JUCE_WASAPI=0 + JUCE_WEB_BROWSER=0) + +target_link_libraries(Cardinal + PRIVATE + juce::juce_audio_utils + ${STATIC_LIBS_START} + sCardinal + sPlugins + sRack + carla_host_plugin + carla_engine_plugin + carla_plugin + native_plugins + audio_decoder + jackbridge + lilv + rtmempool + sfzero + water + zita_resampler + dgl + libaubio + libarchive + libjansson + libquickjs + libsamplerate + libspeexdsp + libzstd + ${STATIC_LIBS_END} + ${GL_LIBRARIES} + ${DBUS_LIBRARIES} + -L${LIBLO_LIBRARY_DIRS} + ${FFTW3F_LIBRARIES} + ${LIBLO_LIBRARIES} + ${SNDFILE_LIBRARIES} + ${X11_LIBRARIES} + ${XCURSOR_LIBRARIES} + ${XEXT_LIBRARIES} + ${XRANDR_LIBRARIES} + ${EXTRA_LIBS} + PUBLIC + juce::juce_recommended_config_flags + juce::juce_recommended_lto_flags + juce::juce_recommended_warning_flags) + # FX variant juce_add_plugin(CardinalFX @@ -115,7 +206,7 @@ juce_add_plugin(CardinalFX COMPANY_NAME "DISTRHO" COMPANY_WEBSITE "https://github.com/DISTRHO/Cardinal" DESCRIPTION "Virtual modular synthesizer plugin" - EDITOR_WANTS_KEYBOARD_FOCUS TRUE + EDITOR_WANTS_KEYBOARD_FOCUS FALSE FORMATS ${PLUGIN_FORMATS} IS_MIDI_EFFECT FALSE IS_SYNTH FALSE @@ -204,7 +295,7 @@ juce_add_plugin(CardinalSynth COMPANY_NAME "DISTRHO" COMPANY_WEBSITE "https://github.com/DISTRHO/Cardinal" DESCRIPTION "Virtual modular synthesizer plugin" - EDITOR_WANTS_KEYBOARD_FOCUS TRUE + EDITOR_WANTS_KEYBOARD_FOCUS FALSE FORMATS ${PLUGIN_FORMATS} IS_MIDI_EFFECT FALSE IS_SYNTH TRUE diff --git a/jucewrapper/CardinalWrapper.cpp b/jucewrapper/CardinalWrapper.cpp index f0b305f..984f23d 100644 --- a/jucewrapper/CardinalWrapper.cpp +++ b/jucewrapper/CardinalWrapper.cpp @@ -401,14 +401,16 @@ protected: plugin.setTimePosition(timePosition); - DISTRHO_SAFE_ASSERT_RETURN(buffer.getNumChannels() == 2,); - - const float* audioBufferIn[2]; - float* audioBufferOut[2]; - audioBufferIn[0] = buffer.getReadPointer(0); - audioBufferIn[1] = buffer.getReadPointer(1); - audioBufferOut[0] = buffer.getWritePointer(0); - audioBufferOut[1] = buffer.getWritePointer(1); + DISTRHO_SAFE_ASSERT_RETURN(buffer.getNumChannels() >= 2,); + + const float* audioBufferIn[18] = {}; + float* audioBufferOut[18] = {}; + + for (int i=buffer.getNumChannels(); --i >= 0;) + { + audioBufferIn[i] = buffer.getReadPointer(i); + audioBufferOut[i] = buffer.getWritePointer(i); + } plugin.run(audioBufferIn, audioBufferOut, static_cast(numSamples), midiEvents, midiEventCount); } diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index f2caae9..f83d3c0 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -269,7 +269,7 @@ BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_PREFIX='"$(PREFIX)"' ifeq ($(CARDINAL_VARIANT),main) ifneq ($(STATIC_BUILD),true) -all: jack lv2 vst3 +all: jack lv2 vst3 static else all: lv2 vst3 endif # STATIC_BUILD