ARA fork of JUCE

Has anyone tried this?

I suppose that ARA won’t be a priority unless / until it is implemented by a lot more hosts and plugins, but I do see that Cubase is very close. And, to my understanding, plugins can be made to use ARA when available and otherwise ignore its absence.
At any rate, Celemony has an obvious interest in integrating ARA with JUCE.
So, my post is not to request this in JUCE, but to find out if anyone using JUCE has tried it.
Also, as someone attentive to license issues, I notice very little mention of the GPL option there. Not sure they did anything beyond copy-paste from the JUCE site.

5 Likes

For the uninitiated, could you explain why plugin devs might find this useful?

It’s useful if they are doing plugins that could use it to improve the user experience. That is, plugins that need to be able to access a large chunk of the audio (typically the whole track or media clip) at once. When ARA isn’t available that requires “recording” the audio in real time into the plugin first, which is highly inconvenient for the user.

3 Likes

The term “plug-in” isn’t unique to audio software, either. Word processors, web browsers, IDEs, media players, etc., etc., all make use of them.
A plug-in adds functionality to a host. It could be useful to have access to more of the host’s functionality than real-time DSP and MIDI messages.
One of my plans is a microtonal sequencer that could, when desired, stand in for a DAW’s built-in piano roll (which are something DAW devs hate spending time perfecting, and usually suck). That’s easy as pie with Reaper, as it already allows script access to time signatures and tempo changes (both sending and receiving), but few others have made this much effort to allow advanced scripting. The user would have to add each time signature change manually to both the sequencer and the DAW.
Cubase has allowed limited control of many program functions for a long time, but, alas, only through MIDI, and adding time signature changes, e.g., still required clicking around a dialog, last I checked.

I haven’t looked closely at Melodyne, but I understand one of the motivations for needing extra info from the host would be to analyze an audio track polyphonically in order to alter only some of the notes; I suppose that this would be much higher quality if you analyzed the entire track than just processing audio on the fly, considering that some momentary change could be either someone taking a breath or the first instant of a note’s attack, and you’d want to process those differently.
There are probably other potential uses (convolution?). Point is, there’s no reason you can’t allow a software plug-in to do more than just process one block of audio and MIDI at a time.

1 Like

JUCE currently provides the standard VST/AAX/etc interfaces which let you make real-time effects. Real-time means that the audio streams through your plugin which must process it sequentially. A simple example for a something you can’t do with these APIs is to create an effect that plays audio clips in reverse.

ARA stands for “Audio Random Access”. Random access means that your effect may freely (“randomly”) access any part of the input audio that it wants to read. Before ARA, plugins such as Melodyne/Auto-Tune/Revoice/VocALign worked as external applications or had quirky “capture” plugins that first need all the audio to play through them to do their off-line processing on it. That workflow also wasn’t ideal because if you moved a region the plugins didn’t reflect that. With ARA their workflow is good (just add the plugin, it analyses your audio pretty quickly and then you can edit it).

Btw another non-streaming format is Avid’s offline Audio Suites (CHostProcessor), which is supported in SR’s JUCE branch and Auto-Align Post uses.

4 Likes

It’s worth noting ARA is not completely offline, either. It allows the input into the plugin be taken offline but the output is handled like a usual real time plugin. So you can’t for example implement a plugin that replaces the source track audio with reversed audio. ARA plugins don’t have write access to the source media of the host. The Avid Audiosuite plugin format allows doing that, but it’s of course only supported in Avid’s products.

3 Likes

The ARA plug-in’s output can be the reversed audio file.

2 Likes

Yes, but you can’t delete the ARA plugin and keep the reverse audio playback unless you separately render the audio in the host. With ProTools AudioSuite the source media itself is replaced with an offline rendered new file and there is no need to keep the plugin around after that.

1 Like

True, but also in Studio One you can choose to explicitly freeze an ARA processed clip and then it will be replaced with a rendered new file too.

1 Like

@Xenakios, if I recall correctly, reversing audio in place ought to be pretty straightforward with Reaper scripting and/or their JS plugins, no?

With JS plugins it can’t be done at all. (Real reverse, not just the fake reverse trick that one of the JS plugins does.) ReaScripts can somewhat do it if the Julian Sader extension is installed.

Maybe I misunderstood the goal, because, if I understood correctly, this one line does it for me in a Reaper script:
reaper.Main_OnCommandEx(41051, 0, 0)

You could also do it in Ardour… by recompiling it… :slight_smile:

Right, you can call the built-in Reaper action for that exact operation, but you can’t as easily do other audio processings. (Reverse and normalize are not really interesting things to actually implement with ARA, but they are the easiest examples to mention to describe what ARA allows to do compared to “normal” plugins.)

1 Like

Point taken.
For my current purposes, Reaper blows anything else out of the water, as it can both notify a plugin of added tempo and meter changes, and create them on command from a plugin. For a replacement piano roll, that pretty much covers the requirements. ARA doesn’t appear to allow creating them on command, only telling the plugin about them. I haven’t yet done much audio pluginning with Reaper.

BTW, I’ve registered with Celemony and downloaded the SDK, and also asked a few questions about GPL.
So far, it seems all of the legal aspects have not yet been finalized, but the github fork of JUCE should have “the same legal implications” as the original. Still, I’m not 100% sure if forking something on github that is available with a dual GPL/commercial license explicitly means that the fork carries the same option. It would seem to, I guess. At any rate, they have not told me that it doesn’t…
The ARA SDK may not be modified or redistributed, but AFAIK this was also true of VST2 SDK, and there were plenty of open source projects that required that.

RE functionality, he also said that MIDI is one of the main requests they get, but so far it’s not there, just audio and, importantly, some program access (e.g. the plugin knowing where tempo and meter changes are in the host).

Thanks for sharing @Chuckk, very interesting!

ARA iscan be very useful for audio analysis plugins where the constraints of having to work in a causal real-time way don’t make sense. I’m thinking (non-real-time) audio transcription plugins, for example.
I still haven’t read the details (ARA has been around for some time now), but I assume it would allow a plugin to transcribe audio in an audio event or track in one go into a MIDI part (without having to playback the audio).

Does anyone know of a list of hosts that already support ARA?

1 Like

Some minor details worth mentioning (also related to your (@KoenT) question).

  • REAPER has a great API that can acheive many things ARA does. but… It’s only on REAPER.
  • ARA is currently at ARA2. they are backward compatible IIUC but the following logic applies:
    • a plug-in can be only ARA2 while not support ARA1.
    • a host can be ARA1 meaning it won’t support ARA2.
  • ARA2 is an extension on standard plug-in formats.
    • it support VST3 and AU
    • (ARA1 did support VST2, again if I remember correctly).

Hosts supporting ARA:
While focused on Melodyne, this page provides details about ARA compatibility with hosts.
https://www.celemony.com/en/melodyne/editions-and-technical-matters

  • Studio One 4 (ARA2/1), Studio One 3/2.5 (ARA1)
  • Logic X 10.4.3 (ARA2)
  • REAPER 5.97 (ARA2)
  • Cubase 10, Nuendo 10 (ARA2) - announced ARA2 support. no public release yet.
  • Tracktion Waveform (ARA1) - no official announce about ARA2.
  • Cakewalk/Bandlab SONAR (ARA1) - no official announce about ARA2.
  • MAGIX Sanplitude (ARA1) - no official announce about ARA2.
  • Acoustica Mixcraft (ARA1) - announced ARA2 support here.
6 Likes

Just that it does not yet have any MIDI capabilities. You can, of course, use the regular MIDI capabilities of VST and AU, but they will only respond to real-time messages, AFAIK.

1 Like

OK, I see…
As long as MIDI track access is not supported, a transcription plugin could still use ARA to process all audio in one go, and then build up a MIDI sequence in the plugin internally which then becomes available for the user to drag and drop into a MIDI track in the host (manually of course). It’s still not ideal, but it helps.

1 Like

Anyone who has had a look at the ARA SDK know if it also provides random access to automation parameters? I.e. Not just the current value of a given automation parameter, but also the value anywhere along the timeline?