| @@ -0,0 +1,76 @@ | |||||
| # ARA plugin support | |||||
| JUCE supports the development of ARA enabled hosts and plugins. Since the ARA SDK is not included | |||||
| in JUCE there are some steps you need to take to enable all ARA related functionality. | |||||
| ## External dependencies | |||||
| - ARA SDK 2.1.0 | |||||
| You can download the ARA SDK from Celemony's Github. The command below will recursively clone the | |||||
| right version into the `ARA_SDK` directory | |||||
| git clone --recursive --branch releases/2.1.0 https://github.com/Celemony/ARA_SDK | |||||
| ## Enabling ARA features in JUCE | |||||
| Once you have downloaded the ARA SDK you need to configure JUCE to use it. | |||||
| ### The Projucer | |||||
| Add the path to the Global Paths settings. | |||||
| ### CMake | |||||
| Use the `juce_set_ara_sdk_path` function in your CMakeLists file. | |||||
| Alternatively, if you are building the examples and extras with CMake from the JUCE repo directory | |||||
| you can also specify `-DJUCE_GLOBAL_ARA_SDK_PATH=/your/path/to/ARA_SDK` parameter to CMake to | |||||
| enable ARA. | |||||
| ## Building the AudioPluginHost with ARA | |||||
| The AudioPluginHost has simple ARA hosting features, but you need to modify its build configuration | |||||
| to enable them. | |||||
| ### The Projucer | |||||
| After opening `AudioPluginHost.jucer` go to *Modules* → *juce_audio_processors* and enable the | |||||
| *JUCE_PLUGINHOST_ARA* setting. | |||||
| ### CMake | |||||
| Set `JUCE_PLUGINHOST_ARA=1` inside `AudioPluginHost/CMakeLists.txt`. | |||||
| ### Loading ARA plugins | |||||
| ARA capable plugins will now have two entries in the Create plugin menu, and the one saying (ARA) | |||||
| will activate additional ARA features. If you right click on the plugin in the graph, you can use | |||||
| the “Show ARA host control” item to assign an audio file that the plugin can read through the ARA | |||||
| interfaces. | |||||
| ## Adding ARA features to existing plugins | |||||
| ### The Projucer | |||||
| Check the Enable ARA option in the Plugin Formats settings. ARA is an extension to VST3 and AU | |||||
| plugins, hence you need to have at least one of those options enabled too for valid build targets. | |||||
| ### CMake | |||||
| Add the property `IS_ARA_EFFECT TRUE` to your `juce_add_plugin` call. | |||||
| ### Modifying the plugin code | |||||
| In addition to the `createPluginFilter()` function that is needed for all audio plugins, you will | |||||
| now need to provide an implementation to the `createARAFactory()` function as well. You can do this | |||||
| by inheriting from `juce::ARADocumentControllerSpecialisation` and using its helper function. The | |||||
| class documentation should make this clear by also providing an example. You can also find an | |||||
| example in the ARAPluginDemo. | |||||
| ## Learning about ARA | |||||
| ARA provides an extensive API that allows you to exchange information with the host in completely | |||||
| new ways. To understand the basics and to build up your knowledge it’s best to read the official | |||||
| ARA documentation, which has approachable introductory sections. You can find the documentation in | |||||
| the SDK directory at `ARA_SDK/ARA_Library/html_docs/index.html`. | |||||