Millisecond Forums

Stimuli timings inaccuracy

https://forums.millisecond.com/Topic29460.aspx

By peter - 7/18/2020

I am having a few issues with timings for my current task.

The task is a Flash beep illusion.

The following stimuli are presented.

1.    Fixation cross for 1000 ms
2.    Then 2 stimuli are presented simultaneously, (1) a ‘Ball’ for 12ms (covered by the ‘Grey’ picture) and (2) a ‘Beep’ (7                  seconds in duration).
3.    36 seconds after the end of the first ‘Beep’ a second ‘Beep’ should then sound.

Below is the script for a trial with a 36 ms delay between the end of the first ‘Beep’ and the start of the second ‘Beep’.

<trial Delay_36>
/ stimulustimes = [0=Fix; 1000=Ball; 1000=Beep; 1012=Grey; 1012=Fix; 1043=Beep]
/ trialduration = 2000
/ branch = [trial.Agency]
/ recorddata = false
/ ontrialend =[values.delay=36]
</trial>

I have monitored timings via the audit option. Unfortunately, my stimuli times are out by around 10-12 milliseconds. This error varies across trials and machines. I am not currently erasing stimuli.

My question then is this, is my programming approach wrong or am I asking for too much accuracy from a humble PC?
Many thanks for your help
Peter
By Dave - 7/20/2020

peter - 7/18/2020
I am having a few issues with timings for my current task.

The task is a Flash beep illusion.

The following stimuli are presented.

1.    Fixation cross for 1000 ms
2.    Then 2 stimuli are presented simultaneously, (1) a ‘Ball’ for 12ms (covered by the ‘Grey’ picture) and (2) a ‘Beep’ (7                  seconds in duration).
3.    36 seconds after the end of the first ‘Beep’ a second ‘Beep’ should then sound.

Below is the script for a trial with a 36 ms delay between the end of the first ‘Beep’ and the start of the second ‘Beep’.

<trial Delay_36>
/ stimulustimes = [0=Fix; 1000=Ball; 1000=Beep; 1012=Grey; 1012=Fix; 1043=Beep]
/ trialduration = 2000
/ branch = [trial.Agency]
/ recorddata = false
/ ontrialend =[values.delay=36]
</trial>

I have monitored timings via the audit option. Unfortunately, my stimuli times are out by around 10-12 milliseconds. This error varies across trials and machines. I am not currently erasing stimuli.

My question then is this, is my programming approach wrong or am I asking for too much accuracy from a humble PC?
Many thanks for your help
Peter

Whether timings can be achieved depends on the display's refresh rate. This is chiefly true for visual stimuli, i.e. stuff that needs to be drawn to the screen, but Inquisit locks all timings to the refresh rate so that visual and non-visual stimuli remain in sync (e.g. an image and a soud displayed at the same time). A display running at 100Hz has a 10ms refresh cycle, a display running at 60Hz has a 16.67ms refresh cycle, and a display running at 50Hz has a 20ms refresh cycle. Stimuli can only be drawn to the screen beginning with the start of a new refresh cycle, so that is (a)  why you're seeing timing discrepancies, and (b) why those differ across machines (their displays are running at different rates).
By peter - 7/20/2020

Dave - 7/20/2020
peter - 7/18/2020
I am having a few issues with timings for my current task.

The task is a Flash beep illusion.

The following stimuli are presented.

1.    Fixation cross for 1000 ms
2.    Then 2 stimuli are presented simultaneously, (1) a ‘Ball’ for 12ms (covered by the ‘Grey’ picture) and (2) a ‘Beep’ (7                  seconds in duration).
3.    36 seconds after the end of the first ‘Beep’ a second ‘Beep’ should then sound.

Below is the script for a trial with a 36 ms delay between the end of the first ‘Beep’ and the start of the second ‘Beep’.

<trial Delay_36>
/ stimulustimes = [0=Fix; 1000=Ball; 1000=Beep; 1012=Grey; 1012=Fix; 1043=Beep]
/ trialduration = 2000
/ branch = [trial.Agency]
/ recorddata = false
/ ontrialend =[values.delay=36]
</trial>

I have monitored timings via the audit option. Unfortunately, my stimuli times are out by around 10-12 milliseconds. This error varies across trials and machines. I am not currently erasing stimuli.

My question then is this, is my programming approach wrong or am I asking for too much accuracy from a humble PC?
Many thanks for your help
Peter

Whether timings can be achieved depends on the display's refresh rate. This is chiefly true for visual stimuli, i.e. stuff that needs to be drawn to the screen, but Inquisit locks all timings to the refresh rate so that visual and non-visual stimuli remain in sync (e.g. an image and a soud displayed at the same time). A display running at 100Hz has a 10ms refresh cycle, a display running at 60Hz has a 16.67ms refresh cycle, and a display running at 50Hz has a 20ms refresh cycle. Stimuli can only be drawn to the screen beginning with the start of a new refresh cycle, so that is (a)  why you're seeing timing discrepancies, and (b) why those differ across machines (their displays are running at different rates).

I conclude from your response that my programming approach is sound and that PC refresh rate issues are the main obstacle to accurate timings. I will re jig the experimental design in the light of your advice, probably by increasing the durations and adjusting display timings to commonly encountered refresh rates. Many thanks for your help.