Thanks much for gathering together this info!
Thoughts on your current case ...
Looking at the original design of your Procedure:
1. Target stimulus (permit response until end of proc)
2. Fixation (duration controlled by stimulus list feature)
3. InLine script to sum accuracies for a subset of conditions
With PreRelease of Fixation set to "(same as duration)", your InLine
code will start running as soon as Fixation finishes its onset. So if
Target does not get a response, then Fixation will appear and the InLine
will run before any response comes during Fixation.
Adding another Fixation (or a Wait) with a Duration of 0 right after the
Fixation does indeed fix this, as it essentially does the same thing as
setting the PreRelease of Fixation to 0. I have used that trick myself
in the past, before I better understood how timing in E-Prime works :).
But try removing the second Fixation and setting Fixation PreRelease
to 0 and see if I know what I am talking about.
This of course holds up everything until Fixation reaches its Duration
no matter when a response comes. Probably good enough in most cases,
but if you really wanted to let the program start processing the next
thing after presenting Fixation and seeing a response, then you could do
something like this in your InLine:
Do While Target.InputMasks.IsPending
' Proceed with code to sum accuracies, etc. ...
-- David McFarlane
On 2021-09-21 Tue 4:17 PM, Chris Brozdowski wrote:
> Hi all,
> I had a problem recently that I'll describe below. I think I've found
> the solution, but I'd also welcome alternatives. First, I still wanted
> to gather the resources I used in the process. David has some great
> posts about timing, but the pstnet links from years back don't always work.
> 1. Steps to reduce onset delay
> 2. Prerun/postrun
> 3. Input mask time limits: End of proc
> Until feedback
> 4. David on Prerun + Prerelease + Inline
> 5. David on Inline unexpectedly after object with prerun
> 6. David on Prerelease + Inline
> In my own case, I have a proc with all cumulative timing and prerelease
> set to 'same as duration' for an fMRI experiment where I care about
> small timing delays. I have a target object with a response that permits
> input until the end of the proc. I then have a fixation of variable
> length before an InLine that selectively gathers accuracy.
> 1. Target stimulus (permit response until end of proc)
> 2. Fixation (duration controlled by stimulus list feature)
> 3. InLine script to sum accuracies for a subset of conditions, not
> triggering for responses during fixation above.
> Even with pre-run generation set to BeforeObjectRun, my InLine was only
> able to access accuracy if the response was given during the target, not
> during the fixation. For participants with delayed responses, the InLine
> script was falsely collecting 'no response' and showing me "00" for
> cumulative accuracy. By adding a 0ms duration secondary fixation, I now
> get better accuracy collection.
> 1. Target (still end of proc)
> 2. Fixation (variable duration)
> 3. Fixation (0 ms, causing some permissible timing delays)
> 4. InLine script that does trigger for the first fixation above.