GoXLR-on-Linux / goxlr-utility

An unofficial GoXLR App replacement for Linux, Windows and MacOS
MIT License
670 stars 37 forks source link

Accessibility: Give additional announcements for screen readers #50

Open pitermach opened 1 year ago

pitermach commented 1 year ago

This is following up from the conversation on Discord and the initial work in the TTS branch, The implementation there is already doing almost everything that I think would be helpful with some minor tweaking:

FrostyCoolSlug commented 1 year ago

The fact that at 10 minute random spamming of TTS got such a positive result is delightful!

I'm probably going to need to abstract out the TTS service, the tts-rs crate appears to have a few problems on MacOS, running more than one service can cause crashes, as well as not working without an NSRunLoop (which only currently happens in the daemon if the system tray is enabled), so these are likely going to be on the 'To Solve' list. At the end of the day, MacOS support for the daemon is a little on the weak side as I don't own a Mac, but I can at least use my hackintosh to try and get things working, and use a mpsc channel for the TTS messages.

The main difficulty will be reporting what the UI sees, and not what the internal values are. Raising a fader shouldn't say "Volume: 255", it should say "Volume: 100%", this applies to the faders and the effects dials, I do also need to ensure that if a user changes the channel on a fader, there's an announcement about that as well.

This will likely get a focus for 0.11.0, at least for now I know how to make it work, and how to plumb everything together, but I've hit most my targets for 0.10.0 already so tidying up that release will be a priority.

All the suggestions are good, and I'll make sure when TTS comes into play that they're all implemented :)

FrostyCoolSlug commented 1 year ago

Ok, the first pass at this is now committed in 0.11.0, There's an option in System -> Settings to enable TTS on button press.

As far as announcements, I've hit most the major points above, including:

FrostyCoolSlug commented 1 year ago

So, as far as the announcement of a fader move when a channel is muted, this is actually a little problematic.

When you hit the 'Mute' button, the mechanical faders of the full sized GoXLR move themselves to the bottom, but they also announce that movement back to the util. The problem was that for every step along the way the util churned out a 'Warning' for that movement, overwriting and replacing the announcement that it WAS muted.

So for now, I'm going to have to not implement that. There's possibly changes coming in the future which will help resolve this issue, but I'll hold for now.

Thanks.