I am testing timing accuracy for display and EEG trigger via parallel port.
I thought that this will be an easy thing because the EEG trigger can be bound to / or send immediately after the win.flip() command, and sending the trigger should occurr in practically no time.
It turned out, however, that i was wrong.
- Couriosly, the parallel port signal arrives at the EEG recording maschine actually earlier than the signal for the visual image, which was measured via photoelectrode (using a device calles StimTrack, developed by Brain Products).
- The delay between the visual signal and the trigger signal is huge amounting to 18-28 ms (i.e., there is an offset plus some variability). With a CRT Monitor refresh rate of 85 Hz you would probably expect a delay of around 6-8 ms for a stimulus that is presented at screen center, but this is much lower than the observed delay. Furthermore, there should be almost no variability).
The same results can be reproduced using a Matlab script, such that it is probably not the presentation software that is causing the problem
We use a very good computer on which we replaced the onboard graphics with an NVIDIA Quadro K620 (this was a convenience choice, a gaming card might be better). The machine is new and almost unused before. Windows 10 is installed.
I suspect that the StimTrack is introducing both part of the delay and part of the variance, but I am not sure. The support guy suggested a graphics card issue. Any other Ideas?
The code I used is this
from psychopy import core from psychopy import parallel from psychopy import visual win = visual.Window() rect=visual.Rect(win, width=200, height=200, fillColor='white', units='pix') def initialize(): visual.TextStim(win, 'Init').draw() win.flip() core.wait(1) initialize() parallel.setPortAddress(address=0xDFF8) parallel.setData(0) for i in range (10): rect.draw() win.flip() parallel.setData(1) core.wait(0.1) parallel.setData(0) core.wait(0.4) win.flip() core.wait(0.5) print '...finished'