Dn-Programming-Core-Management / Dn-FamiTracker

modifications and improvements for 0CC-FamiTracker (based on j0CC-FamiTracker 0.6.3)
Other
375 stars 23 forks source link

Feature request. Implement screen reader accessibility in dnft? #11

Open juanreina921 opened 3 years ago

juanreina921 commented 3 years ago

Hello there, Gumball2415! My name is Juan Reina, I am a blind boy who loves chiptune, including nes/famicom! I have been following famitracker from the days of Jsr, Hertzdevil, Nyanpasu64, and now to you. I am using a screen reader called NVDA, opensorce screen reader for windows, found at []()https://www.nvaccess.org/ if you like, you can download the screen reader, and give it a shot. Additionally, the blind can only interact with the computer using the keyboard, as we can't see to use the mouse.

What dnft reads out with screen readers for now. Menu UI pressing alt and navigating with arrow keys reads all the menu items file, view, help and so on. It reads window and song title, press insert B to read or alt tab out and then back in. It reads export, save, open, configure, and some other dialog boxes.

What dnft doesn't report. Note. I only figured these out by guessing and paycients. Press alt for the menu, rite to instrument, and enter on new instrument. No version of famitracker reads the channel you're on, tab changes channels. At least the instrument editor reads out and all keys work. Apparently, ctrl home and end do something, but screen reader doesn't report anything. The editing of notes are the hardest, as we don't know where we are in the view if you use the arrow keys, it doesn't report anything. They're more, but these are the little I can think of. I don't know how to code, but I love hardware made chiptune. I hope you will consider making this more screen reader friendly, as alot of people who are blind, really love famitracker, and it being accessible would just be the icing on the cake. Edit, I hope other people from the famitracker community help with this, especially cause I saw Nyanpasu64 and others from famitracker community here.

Gumball2415 commented 3 years ago

hello, thank you for bringing this to my attention. i am currently researching how screen reader accessibility works. in the meantime, just to clarify, is pattern editing and navigation the main problem regarding the screen reader accessibility?

by the way, ctrl + home and ctrl + end are for jumping to the beginning and the end of a pattern, respectively.

juanreina921 commented 3 years ago

Hello. @Gumball2415, first of all, I want to thank you, for trying to take a hand in looking into screen reader accessibility. If you like, you can make a portable coppy of NVDA. In this way, you could get an exact idea as to what info we are getting from the screen. yes, pattern editing, viewing, and navigation are the main issues for now, As most trackers only use the mouse, so it is important that as much information as possible is visible to the screen reader, and that these actions can be performed with the keyboard. For example when changing channels by pressing tab, you could make it so that these channels are spoaken when the key is pressed. Maybe something like channel A pulse, channel B pulse, channel C triangle etc. For pattern start and end, you could make it say something like pattern insert number here start and end, fokest pattern start and end, etc. As for pattern editing, sadly, I have no idea what the pattern view looks like. Could you please give me a description of what it looks like so I could better understand how to help you? Those are my suggestions for now, thanks again, I look forward to your ideas, and I hope I made your research a little more easier.

Gumball2415 commented 3 years ago

i am using nvda alongside with accessibility insights by microsoft to investigate the screen reader issues. as for the pattern view, i will try my best to describe it in extensive detail.

the pattern view is a table, in which rows are sequence steps and columns are channels. each channel has subcolumns which handle four types of pattern commands: notes, instrument, volume, and effects. a channel in Famitracker can have up to four effects subcolumns. each channel stores its own pattern in what's called a frame. there are up to 128 unique patterns that can be saved inside a frame. this can be used to make a sequence of patterns that make up a song. unfortunately, i don't know if there's a way to access the frame editor through keyboard control.

there is a pattern cursor, which is a gray cell on the interaction of one row and subcolumn. this can be used to traverse and edit the pattern data. you can use the arrow keys to navigate the pattern. pressing tab will jump to the next channel's note subcolumn. pressing the page up and page down keys will jump a number of rows, which is determined by the step in the edit settings group. pressing the home and end keys jump to the beginning and end of the pattern, respectively.

i suggest trying out OpenMPT to get a better understanding of the pattern view, i think the screen reader works there on the pattern view.

juanreina921 commented 3 years ago

Hey, I tried the pattern view in openmpt, it works similar to dnft, with some differences. I think the Famitracker way of keyboard shortcuts, is more straightforward though, in that you can use up to all four arrow keys to explore the pattern as openmpt just uses up and down to move rows, and left and rite move perametars effects, volume, etc. I personally think that with the four arrow keys, to traverse between rows and columns, and using modifier key like alt, shift or control to show options like effects, would be more flexible, as well as having the UI represent that by telling the screen reader the note and effect if any. Those are my thoughts for now. Let me know what are your ideas.

Rem56445 commented 3 years ago

hi there. My name is Remi. I love chiptunes, and I would like to make music with famitracker. I am blind as well, and this topic really interested me. I am also using the nvda screenreader. me and juan have sat down and looked at openmpt. it isn't that accesseble, but you can get to the sample editor and mess around in there. it also works in the menus. we also took a little dyve into the pattern editor and viewer. in the pattern editor, you use up and down aros to go through channels, and left and right sycles between the perametors, like effect, volume, etc. tab and shift tab sycles between the different rows. if I write a note on one of the rows, and one of the channels, for example row 0, channel 1, it says the note that I put in that channel and row, for example. Row 0, Channel 1, Note: C-5. I like famitrackers keyboards layout a bit better then openmpt. I don't know what could be used to switch between rows though, since tab and shift tab is all ready taken. maybe you could use left and right aros instead. and maybe add a hotkey combonation to go through all the channels that have effects in them, like control shift up, down, left or right aros thats all my ideas for now, and I would love to make chiptunes in this program.

juanreina921 commented 3 years ago

Sorry to be bothering with this issue, but are there still plans to make this more friendly to screen readers? Me and @Remi would very much love to help you.

Gumball2415 commented 3 years ago

yes, though i'm sidetracked with other aspects of the program, i'm still working with the issue. though there are other people occasionally helping with fixes and improvements, i'm mostly the only maintainer here, so development is slow.

the main roadblock is figuring out the implementations necessary for screen readers to read out what's on a widget. FamiTracker, and inherently, Dn-FamiTracker, is an MFC application, meaning it uses MFC for its GUI. This is legacy technology, since it stopped recieving features in the late 90's and mostly stopped maintainance back in 2008. as a result, finding easy to read resources and documentation is rather difficult, especially in implementing screen readers, though this doesn't discourage me to do so.

in summary: resources for screen reading are hard to find, and there are very few people working on Dn-FamiTracker, so development is slow.

juanreina921 commented 3 years ago

@Gumball2415, Don't worry, I totally understand. The screen reader market isn't exactly very known for documenting how screen reader accessibility works, in fact, it was amazing NVDA read and interacted on the way it did. Maybe on pure accident? Despite how much programs work with screen readers, it's quite A niche thing I agree. Development maybe a little slow, and me and @Remi aren't coders by any means, but I promise we'll help how ever we can. From what I know, certain programs, like retro arch, and even some software, come with a special dll file. From the little I know, it's to allow NVDA to be more exposed to the UI it's looking at. That dll file being NVDA controller client 32 or 64.dll. You will find this in the program files or program files x86\NVDA. The only bad part of that, is that You'll have to make functions so NVDA takes notice. I hope I've shed some small light on this, and I'll do my best to get resources to help.

a11cf0 commented 2 years ago

Hello. If you are still interested in improving accessibility, consider looking at how it's done in the latest version of OpenMPT. Its accessibility support is now very robust and is being constantly improved. As far as I know, today OpenMPT is the only tracker that's completely accessible for screen readers. Plus, it's also an MFC application with a custom pattern editor control. P. S. I'm also an experienced NVDA user, so I can help testing this thing out.