Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ENHANCEMENT] Integrate with the OSARA plugin, make Ultraschall accessible to blind podcasters #396

Open
MarcoZehe opened this issue Apr 11, 2021 · 9 comments
Labels
enhancement New feature or request Ultraschall 6.0 Ultraschall 6.0

Comments

@MarcoZehe
Copy link

Is your feature request related to a problem? Please describe.

Ultraschall is currently not very accessible to blind podcasters. All the benefits therefore aren't available to us that Ultraschall offers.

Describe the solution you'd like

The OSARA plugin allows blind people to use Reaper. It enhances the UI in several ways, adds custom actions and keyboard shortcuts to make working with Reaper an absolute breeze.

It also shows several techniques that could be used in Ultraschall to make it accessible. It is a safe bet to assume that, if OSARA is installed, there is a visually impaired user using Reaper. Therefore, Ultraschall could include conditional enhancements and use the annotations techniques in reaper_osara.cpp to roll their own annotations for controls that are currently inaccessible.

Describe alternatives you've considered

There are really none. For accessibility to work, there must be certain APIs used that communicate otherwise purely visual meaning to screen readers and other assistive technologies.

Additional context

Putting this here in English even though I am German and the project is mostly in German, so the original author of OSARA can be included in the discussion if need be. He's from Australia and doesn't speak German.

@MarcoZehe MarcoZehe added the enhancement New feature or request label Apr 11, 2021
@MarcoZehe
Copy link
Author

CC @jcsteh for info.

@rstockm
Copy link
Member

rstockm commented Apr 12, 2021

I just checked the OSARA repo - and I can't find a "how to contribute" section that tells me, how we can be of service in terms of support for Ultraschall?
I am a bit reluctant to dive into the sourcecode and start reverse engineering what/how OSARA actually does...

@jcsteh
Copy link

jcsteh commented Apr 12, 2021

Therefore, Ultraschall could include conditional enhancements and use the annotations techniques in reaper_osara.cpp to roll their own annotations for controls that are currently inaccessible.

OSARA uses MSAA direct annotation in a few cases to better label or describe some controls. However, this technique only works on Windows. When possible, it'd be better to use other techniques (more standard controls, etc.) in the GUI code.

For situations where there is a very visual UI which is very difficult to make accessible using standard accessibility conventions (e.g. REAPER's track view or MIDI editor), OSARA reports messages in response to REAPER actions. You can make OSARA report a message via the osara_outputMessage function registered with the REAPER API. The function signature is:

void osara_outputMessage(const char* message);

I don't know anything about Ultraschall, so I have no idea what the best approach would be here. I'm happy to answer questions specific to OSARA, but I'm not able to help with work on this beyond that.

@MarcoZehe
Copy link
Author

I think what is most important is to get Ultraschall's various windows into an accessible state. I couldn't figure out which UI framework is being used. It doesn't look like standard C resources to me, which on Windows translates to the Win32 MFC dialogs. OSARA itself annotates a few REAPER windows with better accessibility, using Microsoft's IAccessibleProvider interface, see the big file https://github.com/jcsteh/osara/blob/master/src/reaper_osara.cpp starting on line 3802.

Also, for an example of a framework that is now making its controls accessible, see the Juce accessibility effort announcement.

@rstockm
Copy link
Member

rstockm commented Apr 12, 2021

Thank you both for clarification.
This will be a huge problem: Ultraschall uses REAPERS own LUA Implementation of "GFX", a very low level framework for managing a UI Window. Basically we paint every single pixel ourselfs. I see no sound way to connect this with a highler level framework.

@jcsteh
Copy link

jcsteh commented Apr 12, 2021

Ah. You're correct: if you're using REAPER gfx, there's no way you can make that accessible. :( The only thing you could do is push messages to OSARA, but that would be very suboptimal accessibility.

@mespotine
Copy link
Contributor

It's currently not possible, due a lot of issues on Reaper's side. The used UI-framework in Ultraschall doesn't support tabbing through UI-elements which is an essential element for navigating through it.
The various other GUI-frameworks currently available don't support it either, at least not in properly.

It's also important to keep in mind, that the various workflows would need to be improved for accessibility as well, as a lot of them probably rely to heavily on being able to see what's happening.
Even with ReaperAccessibility-workflows, this is probably quite difficult to manage.

Means: a proper GUI-framework is needed, AND people who need and know how to work with accessibility to design this properly.
This can't be done by people who can see on their own, so a lot of feedback is needed on that one by a handful of users of it.

It's probably enough work to justify a release dedicated just to this.

@mespotine
Copy link
Contributor

New gui-framework that is accessible is in the works...

@mespotine
Copy link
Contributor

Will be worked on in Ultraschall 6 over a period of releases.

@mespotine mespotine added the Ultraschall 6.0 Ultraschall 6.0 label Oct 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Ultraschall 6.0 Ultraschall 6.0
Projects
None yet
Development

No branches or pull requests

4 participants