Can not build ARA Plugin

Hi out there,

I recently discovered the ARA integration in the JUCE 7 release. Incredible, thx to the JUCE team at this point!

Unfortunately I can’t build, or more specifically link the ARAPluginDemo. I set up a small audio plugin project with all the plugin code in Source/ARAPluginDemo.h (yes, that’s the original file) and createPluginFilter() and createARAFactory() in Source/main.cpp. The libraries build, however the VST3 target produces a load of linker errors, all located in the same file in the ARA_SDK.

Here are some details:

  • I set up an audio plugin with the following CMakeLists.txt
    • note that there’s only 1 JUCE module linked. linking all JUCE modules in target_link_libraries did not solve the issue though
cmake_minimum_required(VERSION 3.15)
project(ARA_PLUGIN_EXAMPLE VERSION 0.0.1)
add_subdirectory(JUCE)
juce_set_ara_sdk_path("ARA_SDK/")

juce_add_plugin(ARAPluginExample
    PLUGIN_MANUFACTURER_CODE Meee
    PLUGIN_CODE MARA
    IS_ARA_EFFECT TRUE
    FORMATS VST3
    PRODUCT_NAME "My ARA Plugin")

target_sources(ARAPluginExample
    PRIVATE
    Source/main.cpp
    Source/ARAPluginDemo.h)

target_compile_definitions(ARAPluginExample
    PUBLIC
    JUCE_WEB_BROWSER=0
    JUCE_USE_CURL=0
    JUCE_VST3_CAN_REPLACE_VST2=0)

target_link_libraries(ARAPluginExample
    PRIVATE
        juce::juce_audio_utils
    PUBLIC
        juce::juce_recommended_config_flags
        juce::juce_recommended_lto_flags
        juce::juce_recommended_warning_flags)
  • Here’s how my main.cpp looks:
#include "ARAPluginDemo.h"

//==============================================================================
juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter()
{
    return new ARADemoPluginAudioProcessor();
}

#if JucePlugin_Enable_ARA
const ARA::ARAFactory* JUCE_CALLTYPE createARAFactory()
{
    return juce::ARADocumentControllerSpecialisation::createARAFactory<ARADemoPluginDocumentControllerSpecialisation>();
}
#endif
  • the Source/ARAPluginDemo.h is exactly the same as the JUCE/examples/Plugins/ARAPluginDemo.h file, only added using namespace juce and the following includes:
#include <juce_audio_basics/juce_audio_basics.h>
#include <juce_audio_devices/juce_audio_devices.h>
#include <juce_audio_formats/juce_audio_formats.h>
#include <juce_audio_plugin_client/juce_audio_plugin_client.h>
#include <juce_audio_processors/juce_audio_processors.h>
#include <juce_audio_utils/juce_audio_utils.h>
#include <juce_core/juce_core.h>
#include <juce_data_structures/juce_data_structures.h>
#include <juce_events/juce_events.h>
#include <juce_graphics/juce_graphics.h>
#include <juce_gui_basics/juce_gui_basics.h>
#include <juce_gui_extra/juce_gui_extra.h>
#include <juce_audio_plugin_client/juce_audio_plugin_client_ARA.cpp>
  • I get a whole lot of linker errors, all located in .../ARA_SDK/ARA_Library/PlugIn/ARAPlug.cpp. Here are some examples
/usr/bin/ld: ARAPluginExample_artefacts/Debug/libMy ARA Plugin_SharedCode.a(main.cpp.o): in function `ARA::PlugIn::DocumentController::createPlaybackRegion(ARA::ARAAudioModificationRefMarkupType*, ARA::ARAPlaybackRegionHostRefMarkupType*, ARA::SizedStructPtr<ARA::ARAPlaybackRegionProperties>)':
/home/koerthawkins/auphonic/ara-juce-7-plugin/ARA_SDK/ARA_Library/PlugIn/ARAPlug.cpp:1647: undefined reference to `ARAHandleAssert'
/usr/bin/ld: ARAPluginExample_artefacts/Debug/libMy ARA Plugin_SharedCode.a(main.cpp.o): in function `ARA::PlugIn::DocumentController::updatePlaybackRegionProperties(ARA::ARAPlaybackRegionRefMarkupType*, ARA::SizedStructPtr<ARA::ARAPlaybackRegionProperties>)':
/home/koerthawkins/auphonic/ara-juce-7-plugin/ARA_SDK/ARA_Library/PlugIn/ARAPlug.cpp:1668: undefined reference to `ARAValidationFailure'
/usr/bin/ld: /home/koerthawkins/auphonic/ara-juce-7-plugin/ARA_SDK/ARA_Library/PlugIn/ARAPlug.cpp:1669: undefined reference to `ARAValidationFailure'
/usr/bin/ld: /home/koerthawkins/auphonic/ara-juce-7-plugin/ARA_SDK/ARA_Library/PlugIn/ARAPlug.cpp:1670: undefined reference to `ARAValidationFailure'
  • my setup:
    • Ubuntu with kernel 5.4.0-122-generic
    • cmake version 3.24.0-rc4
    • gcc version 9.4.0
    • ARA_SDK at releases/2.1.0
    • JUCE at master branch

FYI, I also can not create the ARAPluginDemo makefile target. I reported that in this issue: [Bug]: ARAPluginDemo not available as makefile target · Issue #1099 · juce-framework/JUCE · GitHub

Any help appreciated!

BR,
Lukas

ARA is not supported on Linux with JUCE 7 for the moment.

1 Like

Thank you! That clears it up.

ARA compilation on Linux is now enabled on the develop branch

Amazing, it works! Thank you a lot!

That was quick indeed. Be sure to remind me to pay you a cup of coffee if we ever meet. :wink: