I can do that. Note that you can simply attach the script to this thread (see the 'Options' tab for upload controls). Also, please indicate clearly where you see delays (i.e., include data to illustrate the issue) and what you expect the code to do (i.e., include comments in the relevant portions of your script).
Still having problems with extra ms intervals. Would you be willing to look at the code via email?
Cleanup, stimulus erasing. You should read the help topic mentioned previously ("How to control trial duration..."), the topic for the /erase attribute as well as the "How to erase stimuli" topic. Also: It is useful to think about timing strictly in terms of (display) frames and make proper use of /pretrialpause and /posttrialpause.
I am getting ranges between the ~88ms to ~146ms still.
I have multiple trials for breaks in the beginning. What factors usually cause the trials to get extra ms added on?
Yes.
So what would be the best way to eliminate the extra delay? Setting stims to erase=false?
As far as I can see, the instructions trial has no fixed duration. Also, as the marker depends on the time of response submission, there is no way to predict when exactly it will occur. Once it does occur, you've specified it to last 50 ms. Presumably, you also haven't set the respective <port> or other stims to /erase=false in <trial instructions>, thus introducing a frame between trials for cleanup / stimulus erasing. In sum, you may get a variable delay of a couple of frames.
Whoops. Put it in there. But there is still a delay of about ~88ms from beginning of instruction marker to the beginning of the break marker.
And why is that a problem? Also, why are you running the instructions trial in a separate block? Note that there'll be at least a single frame between <block>s for cleanup.
Here is the trials and blocks:<trial instructions>/ stimulustimes = [1=instructions]/ validresponse = ("0")/ errormessage = false/ recorddata = false/ responsemessage = ("0", tPort, 50)</trial>
<trial break>/ stimulustimes = [1=blank, bPort; 50=zeroPort]/ trialduration = values.break/ errormessage = false/ recorddata = false</trial>
<trial warnsound>/ stimulustimes = [0=warnsound]/ trialduration = 500/ errormessage = false/ recorddata = false</trial>
<block instructions>/ screencolor = (0, 0, 0)/ trials = [1=instructions]</block><block warning>/ onblockbegin = [values.break=200]/ screencolor = (0, 0, 0)/ trials = [1=break; 2=warnsound; 3=break; 4=warnsound; 5=break; 6=warnsound]</block>
When I run this there is a gap of 100ms between Instructions and the first break in warning block.