Hi Tenri,
Apologies for the delay in responding.
The plot I sent to you depicts the difference between the command in MWorks using Start Timer-Timer Expires, with what actually happened, as indicated by VPixx.
Ok. My understanding is that the change from the first stimulus to the second proceeds as follows:
- Dequeue first stimulus
- Update display
- Start timer (using a randomized time interval)
- Wait for timer to expire
- Queue second stimulus
- Update display
Also, you’re comparing the timer duration with the interval between TTL low and TTL high from the VPixx. Is that all correct?
The difficultly here (which I tried to explain in my previous response) is that the completion of an update display action does not imply that the display has been updated. Instead, it only indicates that the display will be updated in the near future (ideally, less than one refresh period in the future, but that isn’t guaranteed). Again, I suggest reading Understanding Display Updates.
As a first step toward figuring out what’s happening here, I suggested (and still suggest) that, instead of comparing the time interval inferred from the VPix output with the timer duration, you instead compare the VPix low/high times with the time stamps of the #stimDisplayUpdate events when (1) stimulus #1 disappears from the list of displayed stimuli and (2) stimulus #2 appears in the list of displayed stimuli. By doing this, you’ll be able to compare when the operating system (and, hence, MWorks) thinks the display will be updated with when the VPixx detects it being updated.
As I noted previously, those times should match pretty well: I wouldn’t expect differences of more than a couple milliseconds. If there are big differences (i.e. a full refresh period or more), then the next thing to consider is whether MWorks and/or the graphics hardware isn’t keeping up with the display. If this is happening, you should be seeing warnings in the MWServer console window of the form:
WARNING: Skipped x display refresh cycles
where x
is 1, 2, etc. To confirm that MWServer will issue these warnings, check that the system variable #warnOnSkippedRefresh is set to 1 (or, equivalently, that “Warn if stimulus presentation skips a display refresh cycle” is checked in MWServer’s preferences window).
If skipped refresh warnings are enabled, and MWServer isn’t issuing any… well, then we have a genuine mystery on our hands. But we can address that if/when we get to it.
Cheers,
Chris