Feat. Request: Pro Tools Mix EQ Graph

Now that the cat is out of the bag (https://www.kvraudio.com/news/avid-releases-pro-tools-2018-40094). would be nice if it’ll be available from the wrapper to the AudioProcessor.

2 Likes

Is it adjustable from the AAX wrapper? Logic has something similar, but only the built-in EQ can use it and it’s not part of the AU standard.

I believe the code is already in the wrapper… see getMeterTypeForCategory() and addAAXMeters()

Rail

I believe that EQ curve support is separate from the AAX meters. We would also love to see support for this.

Meters aren’t the same as the curve…

An example of missing implementation is:

virtual AAX_Result AAX_IACFEffectParameters::GetCurveData ( AAX_CTypeID iCurveType, const float * iValues, uint32_t iNumValues, float * oValues ) const

But it does require some work to add it to the wrapper and expose it to the AudioProcessor.

1 Like

@fabian any chance of looking into this?

Bump. I’d like to see this also!

1 Like

Hmmm I’m looking into this feature and it’s definitely something that JUCE could support.

However, I’m not super familiar with ProTools: how do I open one of these mix EQ graphs in ProTools?

1 Like
  1. It requires Pro Tools 2018.1 or greater (so you might need to sign your AAX to actually test it).
  2. From a supported version it is simply selecting within the Mixer Window view to show EQ Curve.

(look at the video from 0:08)

1 Like

There is a way to get the Dev build to show the meters (it was in the AAX doc using the options file).

Rail

3 Likes

OK this feature will be on develop shortly with commit 4d0b116.

You support the new eq graph by implementing a new AudioProcessor callback AudioProcessor::getAAXCurve which will return a Curve struct containing a lambda. Here is a usage example:

CurveData getResponseCurve (CurveData::Type curveType) const override
{
    if (curveType != CurveData::Type::EQ)
        return {};
    
    auto sampleRate = static_cast<float> (getSampleRate());
    
    AudioProcessor::CurveData curve;
    curve.xRange = Range<float> (0.0f, sampleRate / 2.0f);
    curve.yRange = Range<float> (-100.0f, 0.0f);
    
    curve.curve = [sampleRate] (float freq)
    {
        return jmax (-100.0f, std::log10 (std::cos (float_Pi * (freq / sampleRate))) * 20.0f);
    };
    
    return curve;
}
4 Likes

I suggest making an API that isn’t AAX-specific.

AU also “has”[0] a similar feature with the kAudioUnitProperty_FrequencyResponse property. And other formats may also add similar features (or already have them).

[0] Even though the standard mentioned it, I’m not aware of support in any host. Logic does display a frequency curve for its own built-in eq but I recall testing many years ago if Logic 9 supported this feature and at the time it didn’t seem so.

Looking at past JUCE code it seems JUCE really tried to keep the description future proof.
Here are some examples with AAX in-mind:

AudioProcessorEditor:

  • setControlHighlight() - AAX only
  • supportsHostMIDIControllerPresence() - AUv3 only
  • getControlParameterIndex() - AAX only

AudioProcessor:

  • AudioProcessorParameter::Category - currently really implemented for AAX.
1 Like

OK I’ve renamed the method (and a fixed a conversion warning). It will appear on develop shortly.

2 Likes

Has anyone had luck with the Dynamics or GainReduction curve types, or are they even available in Pro Tools? We have a plugin that had a gain reduction meter and we want to try out the graph display, but I can’t seem to get any type to show other than CurveData::Type::EQ.

AFAIK, the other graphs are only supported on Avid’s consoles (like an S6).

2 Likes

Logic also seems to have some capabilities of displaying EQ curves (maybe only for there own, internal EQ). Is there a possibility to use this as well?!

That’s the key… :frowning: Many hosts got some cool internal things not available to third-party. Same goes for Logic gain reduction.

1 Like