Pro Tools (AAX) and Accessibility

Hi,
Anyone tested JUCE accessibility with Pro Tools?
It seems to that the JUCE elements aren’t exposed correctly. (at least on macOS)

  • Pro Tools has its own elements including PluginView which contains the plug-in parameters exposed to host.

  • It seems Avid’s PluginView covers entire UI area so the JUCE one isn’t accessible?

  • Also Pro Tools included plug-ins don’t expose the UI but prefer to expose the PluginView list.

  • While the PluginView can be useful, if a plug-in has some not exposed parameters, they still won’t be accessible.

I might’ve missed something as I’m not too familiar with NSAccessibility.

1 Like

Hi there,
I’ve been running into this issue myself and want to ask if you’ve found any solutions/workarounds?

On 2024-01-02 I sent the following message to the Avid Developer Forum. That forum is really hard to navigate, especially compared to JUCE’s Discourse-based forum!

Would love to discuss this and other accessibility issues with other devs. I posted a shorter version of this in the "JUCE Accessibility on develop thread [JUCE Accessibility on `develop` - #265 by rcohen], but maybe this is a better thread for Pro Tools discussion.

  • Is there an Avid developer location with set of guidelines for AAX plug-in programming for accessibility? I have only found this 2015 message from Ed Gray on the Avid Pro Audio Community forum: [Evaluating AAX Plug-Ins for Accessibility - Avid Pro Audio Community]. Are there recommendations for how to achieve the criteria listed in that message, specifically numbers 3 and 4?
  • Our plug-in is built with the JUCE framework, rather than directly calling AAX SDK functions. So there is another level of abstraction involved in our code.
  • JUCE provides a method for navigating screen widgets in a plug-in using VoiceOver. It appears that Pro Tools does not use this method for navigating the plug-in screen, but rather navigates a list of “parameter” objects.
  • It appears that the Page Tables file, with Page Table type=‘PgTL’, is used to populate the parameter list for VoiceOver navigation. If a plug-in parameter is stored in the ‘PgTL’ list, that parameter will be navigated and spoken in the list of parameters by VoiceOver. This seems to include parameters marked as “non-automatable” within the plug-in itself, because there is no “automatable” property stored in the Page table’s elements. Is this correct, or is there another API call which is populating the list of parameters which is navigated by VoiceOver?
  • What are the use cases for a plug-in to advertise non-automatable parameters in the Page Tables file?
  • The Page Table files map parameters to controls on a control surface. Can the user navigate to all of the parameters in the PgTL list if they have enabled a control surface, or only the parameters which have been mapped to the pages in that control surface?
  • Low-vision or non-sighted users of Pro Tools must resort to system utilities for reading the screen with OCR, and also for simulating mouse clicks at particular screen coordinates in order to trigger actions within the plug-in. Is this still true?
  • Many plug-ins, especially those which are designed for cross-platform use, include a custom preset browser, which does not use plug-in format-specific locations, file formats, or methods for save, load, or delete. Is there a recommended method to make preset browsing, loading, saving, deleting accessible in Pro Tools (AAX)? What about other plug-in formats or DAWs?
  • Many plug-ins, especially those which are designed for cross-platform use, include a “settings” menu, for changing preferences data, which is generally not available as parameter data. Is there a recommended method to allow navigation of this menu, or the settings themselves, within Pro Tools using the VoiceOver screen reader?
  • Some plug-ins provide “actions” which can be triggered by buttons in the GUI of the plug-in. For example, redo and undo. Is there a recommended method to trigger those actions using VoiceOver navigation in Pro Tools?
1 Like

If it’s not automatable, it really should not be in the page tables in the first place. Only automatable controls are available for control surface use, at least in all our previous plugins. Using a control surface means the host is telling you when/how to change the parameter, just like it does via automation.

Hi, all JUCE-based plugins aren’t accessible in Pro Tools. Any updates from Avid’s side? Is there a workaround for fixing it?

Hi,

Are you seeing different behavior from non-JUCE plug-ins?

Normally, what I observe in Pro Tools is that VoiceOver navigation will allow me to go forward/back through the list of automatable parameters. Note that I am including a “page table” for control surface mapping in my plug-in.

I have occasionally been able to navigate the GUI components, when I first enable VoiceOver (Mac) with my plug-in already visible in Pro Tools. Once I navigate out of the container component, I cannot figure out how to get back in with the same behavior.

Looking forward to reviving this topic.