Back to portfolio

Accessibility engineering project

Pro Tools accessibility layer.

Pro Tools has partial VoiceOver support, but plugin parameters and startup status are inaccessible. I built a macOS accessibility layer to expose them.

Platform macOS
Technologies Objective-C, NSAccessibility, framework interposition
Type Accessibility integration layer
Status Active development

What this project shows

I use Pro Tools every day. Some parts of it don't work with VoiceOver, so I fixed them.

Plugin parameters and startup status were inaccessible. I built solutions using macOS accessibility APIs and framework interposition to expose them to VoiceOver.

Skills demonstrated

  • Objective-C runtime and macOS framework integration
  • NSAccessibilityElement hierarchy construction
  • Framework method interposition for status capture
  • Reverse engineering inaccessible UI component structures
  • Deep domain knowledge in professional audio workflows

What I built

Two distinct accessibility improvements for Pro Tools, each solving a different kind of gap.

Plugin parameter access

Third-party audio plugins in Pro Tools expose their visual controls to sighted users but provide no accessibility information to VoiceOver. I built a system that discovers hidden plugin parameters and presents them as VoiceOver-readable sliders with real-time value readback. This turns 39 previously invisible controls into accessible, navigable interface elements.

Startup status announcements

When Pro Tools launches, it displays a splash screen with loading status messages that are invisible to VoiceOver. I built an integration that captures these status messages by intercepting the framework method responsible for updating the splash screen text, then surfaces them to screen reader users during startup so they know what the application is doing.

Why this work matters

I use Pro Tools for mixing and mastering. Every inaccessible plugin parameter means stopping what I'm doing and finding a workaround. These fixes let me stay in the session.

Technical approach

Platform-level integration using macOS accessibility frameworks.

Accessibility element construction

Each discovered plugin parameter becomes a fully specified NSAccessibilityElement with the correct role (slider), label (parameter name), value (current setting), and position. VoiceOver treats these elements as native controls.

Framework interposition

Startup status messages are captured by interposing on the internal framework method that updates the splash screen. This approach reads the text as it changes without modifying the application's behavior or visual presentation.

Domain-informed design

Decisions about which parameters to surface, how to label them, and how to organize the accessibility hierarchy are informed by over a decade of daily Pro Tools use. The accessibility layer matches the mental model a working audio engineer already has.

Broader context

This kind of work lives in the space between accessibility evaluation and engineering implementation.

Many accessibility professionals can identify that a control is inaccessible. Fewer can build the fix at the platform level. This project shows both sides together: recognizing the gap from a real user’s perspective and engineering the solution with macOS frameworks, Objective-C runtime integration, and deep knowledge of how assistive technology behaves in native apps.

Built with

  • Objective-C and macOS Accessibility APIs
  • NSAccessibility protocol implementation
  • Framework method interposition
  • Runtime introspection for UI element discovery

Want to see more of my work?

The portfolio includes web and mobile accessibility audits alongside these engineering projects.