AceCentre / pasco

Phrase Auditory Scanning COmmunicator - AAC App for iOS and the Web
https://app.pasco.chat
GNU General Public License v3.0
14 stars 6 forks source link

New Option - Minimum cue: Minimum time | All cue always | Off #133

Closed willwade closed 5 years ago

willwade commented 5 years ago

We are seeing a problem with some people new to auditory scanning and switching. They press the accept (right arrow) switch repeatedly and are not hearing the cue.. I've been thinking how to solve this. The debounce setting sort of helps but also doesnt.

I'm wondering if we could put in a new setting:

"Minimum Cue" Where there are three Options:

NB: Presses won't be buffered if in the first two options. I.e. if you press your forward key whilst the cue is playing - ignore the key press.

hosseinzoda commented 5 years ago

NB: Presses won't be buffered if in the first two options. I.e. if you press your forward key whilst the cue is playing - ignore the key press.

For option two, How would one get when to press? Ignoring key press may not be a good practice. We already have ignore second key press. Maybe that can help.

willwade commented 5 years ago

NB: Presses won't be buffered if in the first two options. I.e. if you press your forward key whilst the cue is playing - ignore the key press.

For option two, How would one get when to press? Ignoring key press may not be a good practice. We already have ignore second key press. Maybe that can help.

Thats a good point. Maybe its just Option 1 or Off.

willwade commented 5 years ago

OK.. Finally getting 5 minutes to look at this! Looks great. I do think the Min quick time isnt working on iOS (& maybe web too now I take a closer look)

So I have it on "Minimum Cue time" 1300 and Manual. If I keep pressing the right arrow it will select the main on all items - I dont hear the cue. Expected: It should play the cue for a min of 1300 before moving on.

Below is what might happen if a cue starts playing at 0 ms.. and lasts for 180ms. This is what I'm imagining..

screenshot 2019-01-21 at 22 20 09

But what if the sound is < 100ms? I expect the min time = Sound Len in this situation.

And what about scan time. Lets imagine that it is 100ms scan rate. It should cut the cue off at 100ms.. and move on. Currently it doesn't (I haven't flagged this as a problem but maybe I should). In this case though Min Scan time (maximum amount) would = Max Cue time available in settings.

so in settings maybe the answer is when a user changes the Scan time it affects the range of the Min Cue time. Lets say Automatic scan time they set to 100ms - Min Cue time - The maximum element on the slider is = 100ms. Or - we just ignore it and set it in the code to be that. What do you think?

MinCueTime.Max = scan_time

hosseinzoda commented 5 years ago

OK.. Finally getting 5 minutes to look at this! Looks great. I do think the Min quick time isnt working on iOS (& maybe web too now I take a closer look)

So I have it on "Minimum Cue time" 1300 and Manual. If I keep pressing the right arrow it will select the main on all items - I dont hear the cue. Expected: It should play the cue for a min of 1300 before moving on.

Below is what might happen if a cue starts playing at 0 ms.. and lasts for 180ms. This is what I'm imagining..

screenshot 2019-01-21 at 22 20 09

But what if the sound is < 100ms? I expect the min time = Sound Len in this situation.

And what about scan time. Lets imagine that it is 100ms scan rate. It should cut the cue off at 100ms.. and move on. Currently it doesn't (I haven't flagged this as a problem but maybe I should). In this case though Min Scan time (maximum amount) would = Max Cue time available in settings.

so in settings maybe the answer is when a user changes the Scan time it affects the range of the Min Cue time. Lets say Automatic scan time they set to 100ms - Min Cue time - The maximum element on the slider is = 100ms. Or - we just ignore it and set it in the code to be that. What do you think?

MinCueTime.Max = scan_time

When cue finishes it cancels "Min Cue Time" as well. So it won't be an issue.

I think the problem we have is the program is not counting from the time the audio has played. So it won't be enough to play the sound. For example web version is sending a http request to a server to get audio. Which adds to delay on play time.

I can try to get the timing more accurate. And adding some profiling on what is happening will help.

hosseinzoda commented 5 years ago

Here is the code responsible for disabling move at that time. https://github.com/AceCentre/pasco/pull/132/commits/94812858c1eaa1e9427ed3df7910850740ce7e9a#diff-20af0266d0281a9270b2139d42dfc5d9R886

willwade commented 5 years ago

This seems to be fine actually in iOS.. closing for now. Cheers @hosseinamin