First, in *principle*, at 60 Hz, you could specify durations exactly in
steps of 50 ms (3 cycles/50 ms = 60 cycles/s). In *practice* however,
monitors may vary ever so slightly from 60 Hz (see the number that
E-Prime automatically measures & reports for you in any of your .edat2
files). So it's best not to base your settings exactly on that 60 Hz.
Second, I do not think that getting OnsetDelay exactly to 0 is in & of
itself a worthwhile goal. What you really care about is getting your
stimuli to last for a well controlled duration; thought of another way,
you really care about stimulus onset-to-onset times, and the Durations
are just a proxy for that.
So let's take your example. You have already translated your stimulus
durations to numbers of video frames, so all good there. Of course, for
any given monitor, 18 frames may not come out exactly to 300 ms. Given
such a monitor we could not get any closer to 300 ms than 18 frames, so
how can we make sure that we always get our 18 frames for any given monitor?
The trick is to deliberately add in a bit of slop, and take advantage of
E-Prime's Onset Sync, Refresh Alignment, PreRelease, and Generate
PreRun. Instead of setting the stimulus Duration exactly to 300, set it
to something shy of 300, but still within one video frame of 300. Some
people suggest subtracting 1/2 frame time from the desired duration, so
in this case you would use 300-8 = 292 Others suggest subtracting some
suitable fixed amount like 5, so in this case you would use 295 (this is
my approach because I am too lazy to figure out the frame rate for a
given lab monitor and then calculate 1/2 of that).
Now, with Onset Sync set to "vertical blank" when E-Prime reaches 292 or
295 ms or whatever with the stimulus, it allows the next stimulus to
proceed. But that visual stimulus will have to wait until the next
video frame starts. So you will see an OnsetDelay of 8 or 5 ms or
whatever, but now that is *exactly* what you want! Instead, look at the
onset-to-onset times between the stimuli, and you should see that they
come consistently within 1 ms of the 300 ms that you want, and really
that's all that you can ask for.
(BTW, in some programming platforms such as PsychoPy, you may specify
stimulus durations directly in terms of video frames, which can simplify
all of this.)
Good question. I hope this helps.
---------------
David McFarlane
E-Prime training online:
http://psychology.msu.edu/Workshops_Courses/eprime.aspx
Twitter: @EPrimeMaster (
https://twitter.com/EPrimeMaster)