-
|
|
blind programmer with accessibility question on the xact tool in xna v3
|
Hi,
I originally replied to a post over at this thread:
http://forums.xna.com/forums/p/10051/86492.aspx#86492
Please consider skimming that thread and posting follow-up thoughts/suggestions to this thread. Everyones input will be greatly appreciated! I wanted to start a new thread on this situation with a more meaningful subject line to raise awareness and hopefully find some viable options from the community and developers of the xact tool.
I own a games company BSC Games - www.bscgames.com - and create audio games for the blind. I am trying v3 of XNA studio to see if it is a viable development tool for my company. I came across this post googeling and wanted to offer some very easy suggestions for increasing accessibility in the XACT tool to make it useful for me and other audio game developers. They would not take allot of time to put in place.
One thing that would be helpful is being able to right click a wav file in the wav bank and selecting "add to sound bank". The sound bank option could have a sub menu listing all the sound banks we currently have - where we want to place the wav file. This way we'd not have to use the mouse to drag/drop wavs from the wav bank to the sound bank. You could also add this to the wav bank menu item on the menu bar.
Three other keystrokes would be helpful: ctrl+b moves focus to the sound bank form, ctrl+w moves focus to the wav bank form, and ctrl+l moves to the main tree control for selecting items - wav bank, sound bank, and the other main items in the tree. I.E sort of like solution explorer.
Also having the ability to tab through all controls on any form which it looks like is in place in v3 but am not sure if there are items I am not able to tab onto. If you could get these few items in version 3 we should be able to use the xact tool perfectly fine.
A blissful feature would be to have the ability to use copy/paste commands in the list boxes between the wav bank and sound bank forms. That is, if I'm on the wav list in my wav bank, for example on gun.wav, I can press ctrl+c while on the gun.wav item in the list and then press, for example, ctrl+b to jump to the sound bank form and tab to the list box of sounds there and press ctrl+v to paste in the sound from the sound bank. This would give us an accessible way of drag/dropping wav files from the wav bank to the sound bank.
Also, being able to use ctrl+a to select all wav files in the list in the wav bank and then going to the sound bank and pressing ctrl+v to paste them all over would be helpful too. I noticed there is a select all option in the wav bank list of wav files already so just adding ctrl+v to the sound bank list is all that is necessary.
I must admit, I am MCAD and program professionally as a MS .net developer. I would think that these feature requests could be put in place pretty easily. May I ask that you please do this for us blind game developers so we can efficiently use the XNA studio as a viable dev platform?
So to recap, the few features that we'd need to increase accessibility are:
1. r-c wav file in wav bank list with sub menu item sound bank listing all sound banks we want to send the wav file to
2. ctrl+b - move focus to the sound bank form
3. ctrl+w move focus to the wav bank form
4. ctrl+l move focus to main tree (solution explorer)
5. ability to tab through all controls on any form in the tool
6. ability to ctrl+c/or ctrl+a the list of wav files in wav bank and then ctrl+v the sounds into the sound bank list of sounds
points 2 through 5 would take me roughly 15 minutes to put in place.
point 1 would take me 30 minutes.
point 6 would take me 30 minutes.
So these enhancements would take me roughly 1:15 to 1:30 to put in place as a .net programmer. Point 1 could be completely skipped if we had copy/paste keystrokes from the wav bank to the sound bank.
Hopefully you guys can please do this for us so we can use the tool.
Thanks if you can help!
|
|
-
|
|
Re: blind programmer with accessibility question on the xact tool in xna v3
|
JustinFromBSCGames:
1. r-c wav file in wav bank list with sub menu item sound bank listing all sound banks we want to send the wav file to
2. ctrl+b - move focus to the sound bank form
3. ctrl+w move focus to the wav bank form
4. ctrl+l move focus to main tree (solution explorer)
5. ability to tab through all controls on any form in the tool
6. ability to ctrl+c/or ctrl+a the list of wav files in wav bank and then ctrl+v the sounds into the sound bank list of sounds
Item 1 identifies a major problem with items 2 and 3: when you press Control+B, which sound bank form do you want?
Item 3 also represents a conflict with the wave bank object, where Control+W already means "insert wave files".
It is worth noting that items 2 and 3 have an existing solution in the Window menu. Alt+W opens this standard interface menu which lists available sound and wave banks at the bottom, with numeric accelerators. Trouble is, this list only includes the five most recent windows, so if you have more than that you'll need to close some... and lose them forever...
Item 4 is a definite problem with no real solution. The only way to move focus to the selection tree is to save, close, and reopen the project, which closes all wavebank and soundbank windows. This is not a solution because there is no way to open an existing soundbank or wavebank from the keyboard unless the focus is on the selection tree. Without the ability to shift focus to the selection tree, the entire project must be completed in one sitting.
Wait, I just found a way to do this. Create a new wave bank or sound bank, and hit "enter". The focus will remain on the selection tree. When you're done with the selection tree, simply delete the new wave bank you created, and focus will move out of the selection tree.
Actually, this is not a solution. You can arrow down all the way out of the selection tree's focus, and then nothing has the focus. How did that get past QA? I suppose it's possible that focus moves to the properties window, but since nothing is selected, there are no properties to display and you just end up in no-man's-land.
I guess you could just delete all the unnecessary empty wave banks from the XAP file, except that the file stores ordinals, so you'd have to count the remaining wave banks and fix the ordinals.
(For those who have never worked with visually impaired users before, yes, it is reasonably common to have an application which requires such users to jump through this many hoops. It's been getting better over the years, but it's still not where it needs to be.)
Item 5 is an extension of Item 4. Accessibility in XACT is really pretty bad; there are a great many important things that simply can't be done from the keyboard at all. You cannot change from the Soundbank or Wavebank window to the properties window, even if it is undocked. It is in neither the Control-Tab window order, nor the Alt-Tab window order. As far as the keyboard interface is concerned, it simply does not exist.
I like item 6. It seems like the best simple solution to the drag/drop paradigm we already have in XACT, although items 4 and 5 remain intractable problems.
|
|
-
|
|
Re: blind programmer with accessibility question on the xact tool in xna v3
|
CDarklock:
Item 1 identifies a major problem with items 2 and 3: when you press Control+B, which sound bank form do you want?
I was unaware that there were more than one. I was basing this off of this situation:
1. while in the solution tree, add a new sound bank
2. the sound bank form opens on my end and I can tab through a few list boxes
3. there is no way to ctrl+tab back to the solution tree
CDarklock:
Item 3 also represents a conflict with the wave bank object, where Control+W already means "insert wave files".
I was unaware of that existing keystroke, perhaps ctrl+shift+w could be used then.
CDarklock:
It is worth noting that items 2 and 3 have an existing solution in the Window menu. Alt+W opens this standard interface menu which lists available sound and wave banks at the bottom, with numeric accelerators. Trouble is, this list only includes the five most recent windows, so if you have more than that you'll need to close some... and lose them forever...
I found alt+w to be lacking *grin*. Specifically, I am able to go to the wave bank window using alt+w then selecting the window, but then am unable to ctrl+tab through any other windows which is pretty standard in any MDI environment. This is why I am suggesting to toss in a fe quick/dirty keystrokes to just shift focus to the forms. However, the cleaner solution is to make all forms/windows in the tool be in the ctrl+tab and ctrl+shift+tab tabbing sequence as in vs 2008.
CDarklock:
Item 4 is a definite problem with no real solution. The only way to move focus to the selection tree is to save, close, and reopen the project, which closes all wavebank and soundbank windows. This is not a solution because there is no way to open an existing soundbank or wavebank from the keyboard unless the focus is on the selection tree. Without the ability to shift focus to the selection tree, the entire project must be completed in one sitting.
It should be simple to add a keystroke to shift focus back to the selection tree or ideally, make it part of the ctrl+tab and ctrl+shift+tab MDI tabbing sequence.
CDarklock:
Item 5 is an extension of Item 4. Accessibility in XACT is really pretty bad; there are a great many important things that simply can't be done from the keyboard at all. You cannot change from the Soundbank or Wavebank window to the properties window, even if it is undocked.
This should be in the design of the product. Since we are using vs 2008, then the xact tool should use the same design considerations that vs 2008 has in place and follow many of the same accessibility guidelines and/or keystrokes to minimize the learning curve for everyone, just not blind programmers.
In the options dialog in the tool, there should be an option to "undock" all windows so that for screen reader users, windows can remain undocked so we can ctrl+tab through them in the MDI environment. Sorry if this is alrady in place, I cannot seem to locate it anywhere in v3 of the tool. Actually, looking at the version number on the xact tool main screen, it states v 2.0 and not v 3.0 so on the surface, it looks like xact is still v2.0 being bundled with the xna 3.0 tools.
I am sure time is limited on the xact team to work on accessibility features. That is why I am trying to offer very quick/dirty solutions that are not very time consuming to put in place. However, I'd be willing to program these features in the product if anyone would want to bring me on as an accessibility consultant/programmer to the xact project. I've been programming for 10 years as a blind person and can send off my resume to whomever is in charge of the xact project.
I am certain that the accessibility features we could put in place every single person using the tool would appreciate them, not just blind programmers. In fact, the sighted folk that I work with mostly use the keyboard to program with and not the mouse. They find it quicker to use the keyboard. It's pretty funny in or ms .net shop... frequently coders are yelling out across the room "Justin, what keystroke to collapse a region of code?" or... "What keystroke to set a bookmark?" *grin*.
|
|
-
|
|
Re: blind programmer with accessibility question on the xact tool in xna v3
|
JustinFromBSCGames:
1. while in the solution tree, add a new sound bank
Now press Alt-S, and select the "New Sound Bank" menu item. You will then have two sound banks, each in its own window, each completely independent. When you press Control-B, which sound bank window do you want? How could Control-B offer a superior experience to Control-Tab, which will already quite happily switch among all your sound and wave banks?
JustinFromBSCGames:I found alt+w to be lacking *grin*.
You'll get no argument from me on that one. ;)
JustinFromBSCGames:In the options dialog in the tool, there should be an option to "undock" all windows so that for screen reader users, windows can remain undocked so we can ctrl+tab through them in the MDI environment.
There is a toolbar button for undocking the properties window... fat lot of good that does, though. Under "View", selecting "Properties" will undock the properties window - you can also press Control-P (normally "Print"... so much for non-confusing accelerators) - but it is still not in the MDI child window stack, focus is not placed in the window, and it is inaccessible without the mouse. The good news (for sufficiently limited values of "good") is that no matter where you had it last time it was undocked, undocking it places it in the top left corner of the desktop, where it can be relatively easily located without sight.
Still no good way to switch to the treeview.
I looked on the Connect site, and this issue was reported and closed in January of this year: https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=320304&SiteID=226. It's listed as "Closed (External)" which generally means Microsoft are interested in resolving the issue, and tracking it internally. Once something good shows up on Connect, it tends to get snapped up and stuffed away in the confidential Microsoft-only space where we don't get to look at it anymore - but this is a Good Thing, because it means something confidential is probably being said about it. ;)
I would speculate that there is potential for the XNA 3 release to include a much-improved XACT, given that this has been on the radar inside Microsoft for over six months, but there's no way for us to know - and I'm pretty sure none of the FTEs are going to say anything about it until the actual release, if at all. The new audio features of Song and SoundEffect are being pretty strongly pushed as an alternative, though, so I'm unsure what the future really holds for XACT.
I've zipped up a basic XACT project with one WAV file in it, which you can download from http://www.darklock.com/xna/Wilhelm.zip to take a look at the XAP file. Besides, everyone doing audio of any sort should have at least one Wilhelm scream in their collection.
|
|
-
|
|
Re: blind programmer with accessibility question on the xact tool in xna v3
|
Hello Justin,
As a blind game developer myself I do think the suggestions you made are certainly helpful, but not all that is required to make xact fully functional for a totally blind programmer. Using Window Eyes 6.1 I did manage to construct some wav banks and sound banks with extreme difficulty, and the suggestions you outlined would certainly minimize the effort required to build wav banks and sound banks in xact.
More importantly here is the serious accessibility issues I have found with xact in general. I've tried every version from 1.0 to current, and all seam to have this single flaw. If you want to set properties for a sound such as if it will be looped, set up 3D effects, etc the properties are totally inaccessible with a screen reader. To date I have tried Jaws 9, Window Eyes 6.1, NVDA 0.5, and absolutely no dice with any of them. I noticed even if the mouse is focused on the properties for the sound in question the screen readers will not announce the property that has focus, and trying to tab/shift+tab through the properties does not appear to work either.
To add to your list of accessibility suggestions here is what I think Microsoft needs to work on to improve equal access for xact for programmers such as you and I.
- Use standard Windows controls for buttons, check boxes, radio buttons, sliders, etc in the sound properties.
- Allow the tab and shift+tab keys to navigate through the property controls.
Hth.
|
|
-
|
|
Re: blind programmer with accessibility question on the xact tool in xna v3
|
Hi,
I know that Justin is interested in using the XNA Framework using XACT, but one way of improving accessibility is if Microsoft would consider adding Xaudio2 to its list of managed .Net XNA libraries. As a blind game developer myself I too am having a miserable time trying to get anything constructive done using XACT. As a result I have been looking at other options such as using C++ with Xaudio2. I have personally written a couple of demo applications using C++ and Xaudio2 and I really like it, and better yet it is totally accessible. Problem is I have thousands of lines of code written in C# that would have to totally be rewritten in C++ to take advantage of what Xaudio2 has to offer. I would rather just be able to remove my managed DirectSound code from the existing games written in C# and convert them to Xaudio2. Does anyone know if Microsoft has a managed Xaudio2 library in the works for C# and VB .NET developers?
Adding Xaudio2 to the XNA Framework wouldn’t just be more accessible, but would be more desirable for former DirectSound developers who liked managed DirectSound, and want something that is equal or similar to it for C# and VB developers. I also like Xaudio2 for the simple fact I can load and play music tracks in wma format which is a nice thing to have when a game has lengthy ambience and music tracks.
Thanks.
|
|
-
|
|
Re: blind programmer with accessibility question on the xact tool in xna v3
|
CDarklock:
When you press Control-B, which sound bank window do you want? How could Control-B offer a superior experience to Control-Tab, which will already quite happily switch among all your sound and wave banks?
I actually thought there was only one sound bank window and one wav bank window. With this explanation in place, there is no benefit to ctrl+b.
CDarklock:
There is a toolbar button for undocking the properties window... fat lot of good that does, though.
true that! *grin*.
CDarklock:
The new audio features of Song and SoundEffect are being pretty strongly pushed as an alternative, though, so I'm unsure what the future really holds for XACT.
I've tinkered some with the new SoundEffect option in v3. Does the new SoundEffect option permit us to use 3d positioning and effects such as reverb and so on? So far, I have not came across that ability.
CDarklock:
thanks much!
|
|
-
|
|
Re: blind programmer with accessibility question on the xact tool in xna v3
|
USA Games:
More importantly here is the serious accessibility issues I have found with xact in general. I've tried every version from 1.0 to current, and all seam to have this single flaw. If you want to set properties for a sound such as if it will be looped, set up 3D effects, etc the properties are totally inaccessible with a screen reader.
Thanks for the post. I wonder if we use the sample xact project fileCDarklock posted and reviewed it if we could simply program an accessible gui interface to perform the persistance to the xact project file? I'm not sure if that option is permitted under any licensing terms of xact but we could probably see what settings are being persisted to the project file and create our own .net forms with accessible controls on it to permit us to perform all the required tasks and then persist the data to the project file?
|
|
-
|
|
Re: blind programmer with accessibility question on the xact tool in xna v3
|
Hi Justin,
I started looking into sound/audio for use with XNA recently and it appears that if you are using the XNA 3.0 CTP, you do not necessarily have to use XACT.
From http://letskilldave.com/blog/the-best-kept-secret-about-the-xna-game-studio-3-0-ctp/ :
Well, the big announcement about the Game Studio 3.0 CTP went out an hour ago. Everybody is excited about the built-in Zune support, and that's cool, but there's another feature that's in there that I think is more exciting than that. It's called SoundEffect, and it lurks in your Microsoft.Xna.Framework.Audio library.
Why is it special? Remember all that stuff you had to do with XACT to create the WavBank/SoundBank stuff just to get sounds loaded into the content pipeline? Try this instead:
-
Drop the WAV file into your Content area (let's say it's "shipexplode.wav" file)
-
Create a SoundEffect instance (i.e., "Microsoft.Xna.Framework.Audio.SoundEffect spaceShipExplosion;")
-
Load the content: "spaceShipExplosion = Content.Load<SoundEffect>("shipexplode.wav");"
-
In your update area (or wherever): "spaceShipExplosion.Play();"
What this means is that XACT would only be used for more advanced sound processing needs. But for the majority of you, you will find the SoundEffects API is very satisfactory, and probably all you need.
Here are some other resources I found: XNA 3.0: MP3/WMA/WAV support! http://www.kyleschouviller.com/uncategorized/xna-30-mp3wmawav-support/
Using Audio in XNA 3.0: http://geekswithblogs.net/bitburner/archive/2008/06/22/123061.aspx
Speech Recognition and Synthesis in XNA: http://www.ziggyware.com/readarticle.php?article_id=143
I have not played with these features myself but I ran across this thread and thought to share what I had found. Hope this is helpful.
Kamal
http://www.sciencesquare.com
|
|
-
|
|
Re: blind programmer with accessibility question on the xact tool in xna v3
|
Thanks Kamalfor your post and information... very helpful! I've been using the SoundEffect class in my XNA v3 windows game project and it does play simple wav effect/sound effects very well. However, it appears to only use the stereo field with panning and I've yet to find any information that the new SoundEffect object/class supports 3d audio positioning as DirectX 8/9/10 provides via the 3d audio buffers and listeners and so on. 3d positioning of audio is very important to audio game developers, obviously *grin*. Do you, or anyone, know if 3d positioning of audio will be integrated into the SoundEffect object in XNA v3 or if it is already there?
|
|
-
|