Logarithmic adaptive staicase

If this template helps then use it. If not then just delete and start from scratch.

OS Win 10
PsychoPy version 2020.2.2
Standard Standalone? (y/n) y

What are you trying to achieve?:
As a preliminary exercise, I am making an adaptive staircase for tone detection where sound level is adapted to absolute threshold in quiet. It is a 2-interval forced-choice so the target interval is selected with a code snipet.

What did you try to make it work?:

I am using the staircase loop. I have set the step type to dB, “N up” to 1 and “N down” to 2, for a 2-down/1-up staircase. Start value is 1.

What specifically went wrong when you tried that?:

The trial seems to work fine, with a tone presented in one interval. The sound level did reduce as I identified the correct interval, but the level changes sounded wrong. In order to check them, I put in a routine to display the value of $level after each trial. It was reducing by the correct number of dB, but on every trial, not after two consecutive correct responses. Changing “N down” to 3 altered the behaviour, but it seemed to become quite unpredictable.

I have finally worked out what’s happening here. The staircase algorithm is not using the adaptive rule (e.g. 2-down/1-up) until the first error is made. Until then, the value of $level is reduced by $stepSize after every correct response. It happens with linear steps as well as logarithmic and dB.

This is surely not a standard implementation.