Hank, <div><br></div><div>In practice, there is no trigger which can be sent on the exact complete onset of the stimulus. Only thing is that the trigger can best be written out when the stimulus is started to be written on the screen. In LCD monitors this is a bit different but lets come to the main issue.</div>
<div><br></div><div>There are some strategies that you can follow in order to minimize the trigger jitters between the trials in e-prime. I will list these for you. But beforehand you need to know i) what the refresh rate of your monitor is ii) what your digital loading (on the digital card) is on your LCD monitor (if you are using one). </div>
<div><br></div><div>Try to set the duration of the object (which I will can Y)  preceding the main object (which I will call X, that you will send trigger to be marked for the onset) to be the multiples of the refresh rate.</div>
<div><br></div><div>First option: Maybe the best option is to use something like:</div><div><br></div><div><span class="Apple-style-span" style="font-family: Verdana, Geneva, sans-serif; font-size: 12px; color: rgb(51, 51, 51); line-height: 18px; "><span class="red" style="color: rgb(255, 0, 0); font-weight: bold; "><b>X.OnsetSignalEnabled</b><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">
<b>X.OnsetSignalPort<br>X.OnsetSignalData</b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><b><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-weight: normal; "> </span></b></p>
</span><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><b>where</b><span class="red" style="color: rgb(255, 0, 0); font-weight: bold; "> "X" </span><b>is the </b><span class="red" style="color: rgb(255, 0, 0); font-weight: bold; ">actual name of the object </span><b>on which the </b><span class="red" style="color: rgb(255, 0, 0); font-weight: bold; ">property is being set.</span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span class="red" style="color: rgb(255, 0, 0); font-weight: bold; "><br>
</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Write an inline at the beginning of the experiment/trial and set these. You can read more about this at <a href="http://www.pstnet.com/eprimelegFAQ.cfm">http://www.pstnet.com/eprimelegFAQ.cfm</a>.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">
If you want to control the length of the trigger, you either write the following lines in the same on-line object:</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">
<br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span class="Apple-style-span" style="color: rgb(255, 0, 0); font-weight: bold; "><b>X.OffsetSignalEnabled<br>
X.OffsetSignalPort<br>X.OffsetSignalData</b></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><b><br>
</b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Or, use WRitePort and prepare another in-line object, put this inline after the X object and set X object's PreRelease to [X duration minus length of the trigger you desire]. In e-prime PreRelease "releases" (or executes) the inline objects coming after right away. It does not wait. Then, it prepares the next object to be shown as soon as the offset of X. But, make sure that Pre-release did not alter the length of the X object, because if you keep PreRelease very long it can act weird (at very long prereleases compared to the object's original duration). So this option is great if you have stimuli with very short durations. Almost exact onset time is caught. But you go with a long trigger as long as the X object if this does not bother you. </p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">
Second option: (Offset correction/consideration needed, but no jitters).   Set Y's PreRelease to a value which will be good enough to cover up for  i) vertical blank time ii) trigger length. I assume you loaded your images/sounds at the beginning of the trial. If you did not,  you need to include iii) loading time of the stimulus. For example: You have an image shown in X which takes 40-50ms to load (you can find this in e-prime output when you are designing your experiment and testing some dummy experiment. Look at the onset latency).  </p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">
<span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial; line-height: normal; font-size: small; "></span>You know your monitor's refresh rate is 100Hz, and you want your trigger to be 5ms (for some other reasons).  Total time required for the image to be ready to be displayed is minimum 40+10+5=55ms maximum 65ms. Use Pre-release in Y and set it to 70ms (or if you want to be safer, set it to 100ms). Then write the in-line to send the trigger after Y. This will ensure that all your triggers will be sent exactly 70 or 100ms before time the stimulus is started to be written to the screen. If you load your images at the beginning of the trial or you are showing text, you can make the PrRelase shorter, 20ms.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">
You also factor in if there are some LCD digital preparation duration latencies in the digital card of the LCD monitor. For instance for Samsung 100Hz LCD I found this to be 10ms. But it is, at least, presenting the image as a whole once (I think), not bit by bits consecutively as in CRT.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">
Third Option: Use Canvas object like things and write your code.  You can have full control. There were some nice scripts on this list written by some others. Or use something like WaitForVerticaBlank after you load your images and make them ready. WaitForVerticalBlank makes the object ready to be shown, then you can send the trigger, and the object is shown in the next refresh time. This option will make sure you fix the latency between the trigger and the stimulus just one refresh rate. Don't make the length of the trigger longer than the refresh rate.</p>
</span><div><br></div>If you know how earlier the triggers were sent, then you can use this information to adjust for time windows or other statistics later.</div><div><br></div><div>Best</div><div>Baris</div><div><br><div class="gmail_quote">
On Tue, Mar 29, 2011 at 5:37 PM, Hank Jedema <span dir="ltr"><<a href="mailto:Jedema@pitt.edu">Jedema@pitt.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi All,<br>
<br>
I am trying to run a stop signal response task while recording<br>
electrophysiological activity on another setup. In order to get<br>
synchronization of behavior with the timing of my recordings, I have E-<br>
prime sent out event markers via the parallel port to an input of my<br>
recording device. It seems that this works well responses, but it<br>
seems that E-prime sends out the event markers for the display of<br>
stimuli before the stimulus actually appears on the screen: the<br>
eventmarker/timestamp is sent when the code issues the request for the<br>
stimulus to appear, rather than when the stimulus actually appears on<br>
the screen (i.e at the vertical blank/screen refresh after the<br>
stimulus.onset delay). Is there a way to get the event marker signal<br>
to synchronize with the actual appearance of the stimulus or is this<br>
something that can only be corrected offline by correcting the<br>
timestamps for stimulus appearance with their onset delay ?<br>
<br>
Thanks very much for your help.<br>
<br>
Hank<br>
<font color="#888888"><br>
--<br>
You received this message because you are subscribed to the Google Groups "E-Prime" group.<br>
To post to this group, send email to <a href="mailto:e-prime@googlegroups.com">e-prime@googlegroups.com</a>.<br>
To unsubscribe from this group, send email to <a href="mailto:e-prime%2Bunsubscribe@googlegroups.com">e-prime+unsubscribe@googlegroups.com</a>.<br>
For more options, visit this group at <a href="http://groups.google.com/group/e-prime?hl=en" target="_blank">http://groups.google.com/group/e-prime?hl=en</a>.<br>
<br>
</font></blockquote></div><br><br clear="all"><br>-- <br>SB Demiral, PhD.<br>Department of Psychology <br>7 George Square<br>The University of Edinburgh<br>Edinburgh, EH8 9JZ<br>UK<br>Phone: +44 (0131) 6503063<br>
</div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups "E-Prime" group.<br />
To post to this group, send email to e-prime@googlegroups.com.<br />
To unsubscribe from this group, send email to e-prime+unsubscribe@googlegroups.com.<br />

For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.<br />