How to configure stimuli to be learned with times below 20 milliseconds

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

OS : Win10
PsychoPy version: 2022.2.0
Standard Standalone? (y/n) If not then what?:
What are you trying to achieve?:

I’m trying to program a Useful Visual Field task using Builder and for that I need to present the stimuli with different presentation times based on their eccentricity (0.10 and 0.20 ms).

I’m using a monitor with 144Hz and I calculated the time from the duration of each frame. So taking into account a 1 frame presentation, the duration of my stimulus with the lowest eccentricity should last 0.007 ms and my second stimulus should last 0.021 ms. I tried to configure it from n of frames and duration in seconds, but the data output has shown me that the presentation time has a duration of 0.07 ms for all presentations, including how it should last 0.021.

How to set the duration of a stimulus so that it lasts exactly 1/3 frames?
How can I be sure my stimuli are being presented at the correct duration?

Screen refreshes on a 144Hz monitor occur ~every 7ms. I think you meant .007 seconds.
You will be unable to present a stimulus that lasts less than one frame because frames are discrete.

In the experiment log files, you can see when a stimulus was presented and when it stopped. There’s automatic rounding/syncing to actual screen refreshes. Sometimes these are not exactly) what you specified. If your program asked too much and dropped frame(s), you will notice that the difference between .started and .stopped is not what it ought to be. You know your stimuli are being presented for the correct duration if the log files say they are.
There’s an alert for dropped frames in the runner. You can probably do something with that alert if occurrences of dropped frames are valuable to you.
I only usually get dropped frames at the beginning of the experiment, when loading lots of files, or when I mash keys on the keyboard.

(not someone please correct me if the bit about automatic syncing/rounding is wrong. Not an expert on that bit)

Crewis, thank you very much for the reply.

Exactly. I was checking this time using the data output, subtracting the value of .stopped and started and I realized that the stimuli that should be being presented at 0.007, were actually being presented at 0.07. A time 7 times greater than what I had configured.

I liked your tip when looking at the missed stimulus warnings on the console, but it didn’t give me any alerts. The only alert I received was that the monitor’s specifications were not identified and a temporary one was created. Would psychopy not automatically identify the specifications of the monitor used? Would I need to calibrate the monitor?


what does the timing look like when you set everything to frames and number of frames? In your screenshot you have set everything to seconds.


Best wishes Jens

I thank the help of all you!

The solution I found was to use an ISI component and set the set during? ISI for the stimulus you wanted to be presented between 7ms and 21ms. I also followed the suggestion of using the number of frames in the "duration (frames) condition. However, it only worked well when I defined the time I wanted for each frame in the “Expected duration (s)”.


does setting a start time (start frame) help?

Best wishes Jens