Seeking feedback on possible accessibility improvements to AudioStretch
Hi Gerry, We always appreciate it when developers visit this site -- even more so when they ask for suggestions! I'll just quickly say that I noticed some unlabeled buttons under iOS 6, that are labeled under iOS 5. These are the buttons for changing speed and pitch that get announced as "Increment" and "Decrement" on my iPhone 4, with iOS 5.1.1. But on my iPhone 5, which is running the most recent version of iOS 6, when I flick to these controls, they just get announced as "button" with no labels. You can check what a VoiceOver user will hear by enabling VoiceOver. Go to Settings > General > Accessibility. Set the behavior of "Triple-click Home" to "VoiceOver", which will let you toggle VoiceOver on and off by triple-clicking the home button. Then lauch your app, and triple click the home button. To hear the screen controls read out starting from the top of the page, flick up on the screen with two fingers. You can pause the announcements at any time by tapping with two fingers on the screen, and resume them with another two finger tap. For faster navigation, just flick right with one finger to move to the next control or flick left to move to the previous control. To activate a button or selection, double tap on the screen.
As for requests, it would be great if we could set up multiple bookmarks to choose loop points. They could be indicated both by time and a label. Most users are going to flick to controls, so the size of button doesn't matter unless they have to locate it by touch. Could you really set this up for voice control? Usually that requires dropping the background sound level to trigger a command, so we don't get audio feedback on our navigation, but it might be nice to have a setting where you could say "replay that".
What I'd really like to be able to do is have a feature called "Direct Touch" implemented for accessing the waveform part in the center of the screen. You can tell that most of the time, in order to let us use the touchscreen with VoiceOver, we have to double tap. Well, for music apps like GarageBand, Apple devised a way for us to use parts of the screen directly. Right now, I have to triple-click the home button to turn VoiceOver off if I want to scroll through the music with the waveform section. But I think you can make that section of the screen available to use through "Direct Touch", so we'd be able to scroll by touch without having to do this. I don't know how much work that would be to implement, though. Fixing button labeling is pretty simple, though. You're probably sorry you asked for suggestions now! *grin*.
Jessica, this is not Cliff, but I can tell you what the button labels should be, since most of these were present in an earlier version that I had on my iPhone until I read your post just now, and updated to the latest verision of AudioStretch (version 2.2, released September 6, 2013). If you have loaded a song, and do a two finger swipe up ("read all") gesture on the screen, you'll hear VoiceOver announce in succession the buttons for "Songs" and "Gear" (which is Settings), followed by the artist, song, and album, then the current time position of the play head in the track (if you have paused playback, otherwise it's 0 for the start). Then the waveform occupies about two thirds of the active screen, and the (currently) unlabeled buttons start just below this. They are the playback controls (from left to right): "Rewind", "Play/Pause", "Fast Forward", "Refresh", and "Action".
Below the row of playback controls are the information for "Speed" and "Pitch" (e.g., initially "Speed: 100%" and "Pitch: 0"). Then, below the Speed and Pitch values is a row of four unlabeled buttons that are the "decrement" and "increment" buttons for speed, and then a similar pair for pitch. In the current version of the app, each double tap to decrease or increase speed changes the speed by 5%, which will show up in the speed value that VoiceOver reads (e.g., 105%, 110%, etc.). Note that you can decrease the speed to make these negative values, all the way to -250%, where the track is p,aging backwards, as well as increase speed up to 250%. The pitch buttons increase and decrease by 1 cent (from -12 to 12). I suggest you relabel these buttons as "-5%" and "+5%" for the speed, and "-1" and "+1" for the pitch using the two finger double tap and hold, and inserting the label values for the text field once you hear the tritone indicating that you have brought up the "Label Element" window and are in the text field for changing the information. By the way, in the earlier version of the app that started the discussion, only these four buttons were unlabeled, and that was only in iOS 6, and not under iOS 5. Somehow, when the recent changes were made that changed the speed increments to 5% from 10%, and that changed the way looping behavior was selected, and also added the option to email a WAV version of the track with the "action" button, the playback control labels also disappeared.
A few more tips: when you stop the playback with the "Play" button and double tap the "Refresh" button, you mark the current position in your track as point "A". It's a bit tricky to note, but if you try to flick past the "Refresh" button or do a two finger flick to read past this information, you'll hear VoiceOver announce "Capital A" after the "Refresh" button, which now gets announced as "Selected". Flicking left back to the "Play" button, double tapping to start the playback again, and then double tapping to stop, so you can flick right to the "Refresh" button that is now announced as "Selected" and double tap, will add an entry "Capital B", after the "Capital A" to mark the second track point. this will allow you to continuously loop between these two points with your speed and pitch settings. Pausing playback and double tapping a third time on the "Refresh" button that is now announced as "Selected" will clear the playback point settings A and B.
Another thing I found handy here is to add "Vertical Navigation" as a rotor option under Settings > General > Accessibility > VoiceOver > Rotor. If you set the rotor to "Vertical Navigation", you can easily flick up and down from the playback controls and buttons for changing speed to check the track time.
Hope this helps,
I forgot to mention the option to mail a track using the "Action" button that is one flick left from where the current value of "Speed" is announced. This feature is new since the version I had been using, which had the other playback controls correctly labeled (just not the buttons to increase and decrease speed and pitch). The first time I tried the action button was a bit confusing, since I didn't know what it did. If you double tap this when you have a song selected, but you haven't selected a section of your track to loop though, it prepares the whole track as an attachment in .m4a audio file. (This is not WAV format, which was a typo in my earlier post.) For a long piece of music, this can be a short while (several seconds) while this is prepared. What happens is that a window pops up in the center of the screen with the message "Preparing file for email" and a "Cancel" button if you flick around or touch the center of the screen and flick before the attachment is finished. Then a mail screen appear with the named of the track and your speed/pitch selection in the screen heading, with the audio file as an attachment. If you selected looping points, the heading with be prefixed with "Extract:", and this track info from the heading will be the subject field of your email. You can fill in the "To:" field and type a note in the message body, or just send off the attachment. There are buttons at the top of the screen for "Cancel" (top left corner) or "Send" (top right corner). If you double tap the "Cancel" button you'll have options to "Delete Draft", "Save Draft", or "Cancel".
I've found that the AudioStretch app has good features, but it's not always obvious they're present and why they're useful. The only way I initially knew this app had Dropbox support is because I read a review that described this feature, which wasn't particularly called out in the earliest versions that implemented its support. This is similarly true for other features (such as selection of left minus right track, in addition to mono left and mono right track selection options in Settings). Similarly, I'd read reviews from people who pointed out that by using the 0% speed setting, you could fix on checking a specific note. (I'm not sure this is as easy to do for VoiceOver users.)
The other accessible app you can try for working with music tracks is Amazing Slow Downer by Roni Music. It has a different set of options, and is very accessible with VoiceOver, but also more expensive. It uses sliders instead of the buttons to make adjustments. Both AudioStretch and the Amazing Slow Downer apps have free, lite versions with more limited functionality that you can try out first.
Hi Gerry, I'll point you to the link for Developers at the bottom of each AppleVis web page. That will save me some copying and pasting of links, because the most readable article I've found, for both developers and VoiceOver users alike, is Matt Legend Gemmell's old blog article on accessibility in iOS apps, and that's one of the first links on that page. Or, you can simply Google for his post by searching for his name along with a phrase like "iOS accessibiility". This is probably the fastest way for a developer to get up to speed on solving simple accessibility problems, like making sure controls are labeled, because Matt describes what's involved from the developer's point of view using the vocabulary, concepts, and tools of interface builder. He also gives some common-sense advice about choosing short, descriptive names for labels.
The version 2 release removed the labeling of the player controls, so labeling needs to get fixed in order for a first time user AudioStretch to find the app usable with VoiceOver. Regarding the labels to increase and decrease speed and pitch, Cliff's suggestions of "Speed Up", "Speed Down", "Pitch Up", and "Pitch Down" are probably better than my personal labels of "+5%", "-5%", "+1", and "-1", which are based on knowing that the "increment" and "decrement" labels (announced in iOS 5) referred to 10% adjustments up and down in the earlier versions of the app, and that the pitch adjustments are in units of semi-tones. Most VoiceOver users are going to navigate to these controls by flicking left and right, so you can't assume they'll know which buttons are related to speed and which to pitch by their positional relation below the current speed and pitch values on the screen.
The "Action" label for sending stretched/shifted files by email is probably Apple's default label for that icon. It would help to have a label like "mail file" to clue the user about the nature of the action. IF you have time to go beyond basic labeling, you can add a VoiceOver hint associated with the control, that might be something like "email stretched/pitch shifted file or segment". You could also add a hint for the "Refresh" button like "double tap once to add start point A, twice to add end point B, and three times to clear points'.
I think those are the suggestions in order of priority and ease of fixing. Remember to apply the same changes to both Lite and regular versions of the app. If you want to find out more about Voice OVer than what's described in Matt's article or in my first post in this thread, there are a couple of apps that we recommend for new VoiceOver users. One is the LookTel VoiceOver Tutorial app (free) and another is the VO Starter app ($0.99). These explain basic VoiceOver actions to brand new users, and you might find at least the free LookTel app worth trying. You can always ask on the AppleVis forums for people to test out your new release versions for accessibility before you submit them to the Apple Store.
Finally, I'll just note that for you and for people like Cliff who are alrady using your app, and who may have upgraded to iOS 7, you can tell Siri to turn VoiceOver on and off. That's an easy way to get access to interactions with the waveform section of the app, where you can check notes by setting the speed to 0 and then using scrub gestures to move through different part of a track, or where you can swipe right or left on the waveform section while the track is playing to quickly move to another section of the track.
Hope this helps.
Thanks, Cliff. I should add that if you use the "Vertical Navigation" setting on the rotor, it's easier to minimize flicks to between the buttons for adjusting speed or pitch and checking the final values, because you can flick up and down for this. You can also then just flick up from the speed reading to the "Play" button and double tap. To check the time position in the track, flick right from the "Play" button to the "Rewind" button and then flick up to read the time. If there's a section I want to hear repeated as a loop, I start the track playing, and then use the "Refresh" button to set the repeat points. I find it easier to select the points by moving my index finger to touch the position of this button and then doing a split with another finger to mark the positions for the start ("Capital A") and end ("Capital B") of the loop. Of course, if you stop the track playing close to start or stop position you want, and then scrub left or right through the waveform section in the center of the screen, you can hear exactly where you want to start. Then when you turn VoiceOver on, flick to the "Refresh" button and double tap to set the start position. You can start this playing again, and similarly set the exact stop point with track scrubbing before double tapping the "Refresh" button again with VoiceOver on, and the track will loop between the set points "Capital A" and "Capital B". Note that when the track is not playing and the two points are set, that you cannot scrub to points earlier than "A" or later than "B", and that in play mode you continuously loop between these points.
I should have answered Ken's (comment #2) that if he wants the track to loop continuously, double tapping the "Refresh" button so that you hear "Selected" and mark the track position as "Capital A" when you are at the start of the track, playing through, and then double tapping the "Refresh" button a second time when you are at the end of the track will continuously loop through the music piece (or any section you've selected out with your start and stop points, while the selection is in effect.)
I tried selecting mp3 and wav files from both Dropbox and Phone Drive, and in both these cases I was able to use the "open in" function to choose "AudioStretch". In the case of the Dropbox app, I selected the file (and played it), and then double tapped the "Export" button in the bottom right corner. (Using a four finger tap on the bottom half of the screen to move to the last element, and then double tapping on the "Export" button immediately brought focus to the "Open in AudioStretch" button, which I double tapped. This opened the AudioStretch app with my selected music track loaded for playback. If you have several apps capable of performing the "open in" function for these file types (e.g., more than the 9 apps that can be displayed on a single page), you may have to do a three finger swipe to the right to move to the next page to display them all.
In Phone Drive I double tapped to select the music track from the Root file structure menu, and flicked to the "Menu View" button that is the third of 5 buttons at the bottom of the screen (just above the Home button), and I double tapped. Then I double tapped on the "Open In" option, which again gave me access to the "Open in AudioStretch" button.
Finally, I've never used UbiDisk before, but since you asked about this, I downloaded the app and then transferred a few music files from my computer to the "Local Files" location. (I'm using a Mac, and I gather people with Windows PC like the "Easy Push" feature that requires downloading a separate file on your PC, and which only works under Windows. I found the other file transfer methods slightly clunky compared to using DropBox or Phone Disk.) I navigated to the "More Info" button of a WAV file under the "Local" files and double tapped the "Action" button in the bottom left corner of the screen. Then I flicked past the "Send By Email" button to the "Open in…" button and double tapped. For the UbiDisk app, this put the focus on the "Cancel" button at the bottom of the list of "Open In" app options, unlike the Drop Box or Phone Disk apps, where focus goes to the first of the apps that you can select for the "Open In" operation, but you can either do a four finger tap on the top half of the screen to bring focus to the first of the available app selections, or you can flick left through the options Again, if you want to choose an "Open In" app that is not on the first page of 9 listed "Open In" options because you have more apps that can support opening this file type, you have to do a three finger swipe to the right to move to the next page. This gesture won't work when focus is on the "Cancel" button, so either flick left or do a four-finger tap to move to one of the app buttons before trying to scroll to another page.
I'm running iOS 6.1.4 on an iPhone 5, with the latest version of AudioStretch and Dropbox. I think my version of Phone Drive is the last version before the September iOS 7 release (meaning it's the version 3.0.3 with Dropbox support, but before the iOS 7 optimization versions). Did you check whehter AudioStretch might have been on another page of apps in your "Open In" options? (It shows up as the first button option for me, but I have more than one page of apps that will support "Open In" for these file formats.) Did you try restarting your iPhone after installing AudioStretch (e.g., shut it down and then bring it up again)? I think that I had to restart my iPhone the first time I wanted to get "open in" files to show up in Voice Dream Reader and in Read2Go, and it may be because the apps that are capable supporting "open in" for different file types are only identified by the system at the device's startup.
If none of this works, could you please give more information about exactly what steps you are taking to transfer the files? If your method is PC-specific or usies the "Easy Push" feature that works directly from a Windows PC I won't be able to test it, and maybe somebody else who regularly uses UbiDisk can help you. However, every app that I used with the "open in" function transfered files into AudioStretch, including UbiDisk, when I downloaded it to test this.
I've finally put in hints and labels for most of the controls in AudioStretch. You'll find them in AudioStretch version 3.3, which has just been released to the app store. I'm sure the accessibility can be improved still more, and I welcome any feedback you might have.