Hey there, just looking to implement ARA in a plugin using JUCE 7. I’ve done this before using Celemony’s fork of JUCE, but I can’t seem to get the demo project provided by JUCE to work.
Do I need to still link to the ARA_SDK manually, or is it in the JUCE submodules?
I went ahead and cloned the ARA_SDK again, and in the build configurations for Xcode in the entry box for ARA SDK Folder I have tried just about everything to get it to link.
Still not recognizing things like ARAPlaybackRegion, nor ARA::Plugin::AudioSource.
Do I need to include “ARAPlug.h” or something along those lines?
Just an update:
One obvious mistake. I have JUCE 6 still installed, and so I had to switch all my submodules to point to the submodules in the Celemony JUCE 7 fork.
This brings me to my next point, I still needed to get the Celemony fork. This was confusing because I’ve seen ARA compatibility plastered all over JUCE 7, yet I still need to get the Celemony fork?
Another weird thing, I had to add a header search path to the ARA_Library. Wouldn’t be weird, but why did I set the ARA_SDK here?
I had to put in some more file path info in the includes as well. I could have done this in the Projucer as well I suppose. I don’t see how it automatically finds ARAPlug.h, but not ARATimeLineConversion.h. I’ve been looking at the PIP file, not seeing where ARAPlug.h is included.
This brings me to my current issue. Linker error
I’m not getting linker errors from ARAPitchInterpretation.h and ARATimeLineConversion.h, but maybe I am just not getting that far yet?
Ok, after a bunch of running in circles with the linker error I just dragged the files into the Projucer and it worked.
Why is it not recognizing these includes?
Why did I need to add the ARA_Library/Utilities/ extension to it after including the ARA_SDK?
Why do I need the ARA_Library/Utilities/ extension after adding those files to the Projucer?
Why do I need the Celemony fork of JUCE 7, isn’t ARA integration a part of JUCE 7?
This example is not updating the musical context, or playback region bounds. It does not seem to control the transport either. What it does is draw a thumbnail and loop about one second around where your mouse is. Double clicking dims the audio, reminiscent of Celemony’s demo plugin. There might be more functionality but I will have to decipher the single header file in which everything exists before I can say. There is not much documentation around this, so it is tough to say without digging deeper.
You can probably get as much out of this as you need by glancing at the code. I hope there will be more open-source ARA examples in the future. I will try and share my knowledge as best I can, hopefully have a useful implementation for you in the future.
Looking at your error, I think you may have checked out the
main version of the repository, which currently isn’t supported at the moment.
You need to check out the
2.1.0 version instead, so for a fresh clone you would use the command
git clone --recursive --branch releases/2.1.0 https://github.com/Celemony/ARA_SDK
This ARA_SDK is the one that you should specify in the Projucer in the Global paths… settings, and that should be enough. The fact that you need to specify a head inclusion path too, may be a bug, that I’ll look into.
Thanks for the response!
Just to specify I would need the 2.1.0 version of the ARA_SDK or Celemony’s fork of JUCE?
You need the 2.1.0 version of the ARA_SDK to work with the official JUCE version.
If the ARA_SDK version is right, the directory is specified in Projucer → Global Paths → ARA SDK, then the example should build without an error. Specifying the per-project ARA SDK Folder is not even necessary as it defaults to the global setting.
Also you shouldn’t need to specify any header inclusion paths manually.
That appears to work! Thank you! User error. I swear I tried to read every README available. Where was this info? Specifically knowing to use version 2.1.0 of the ARA_SDK.
Would we ever consider making a submodule out of the ARA_SDK? It seems we are doing exactly that but manually, (version 2.1.0 appears to be a specific commit and not a branch). Maybe there are deeper licensing issues in that?