Fast response


Author
Message
ylyl27
ylyl27
Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)
Group: Forum Members
Posts: 10, Visits: 84
Hi!

I'm trying to make an experiment where participants see a flash on the screen and indicate where it's on the left side (press A key) or right side (press L key) of the screen. On each trial, a name is presented, followed by a mask and a mask eraser. It works fine, but I notice that in some trials, when I respond very fast, it doesn't go to the next trial, I have to press the key twice or three times to move on to the next trial. Do you have any idea on what the problem might be and how to solve it? Thanks!!

<item names>
/1 = "Alice"
/2 = "Bob"
/3 = "John"
/4 = "Jack"
/5 = "Mary"
</item>

<item mask>
/1 = "QWEREWEROSXFF"
</item>

<text namesleft>
/ items = names
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text maskleft>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text eraserleft>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = black
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text namesright>
/ items = names
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (80%,50%)
</text>

<text maskright>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (80%,50%)
</text>

<text eraserright>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = black
/ txbgcolor = black
/ position = (80%,50%)
</text>

<trial left>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesleft; 62 = maskleft; 124 = eraserleft]
/ validresponse = (30,38)
/ correctresponse = (30)
/ inputdevice = keyboard
</trial>

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ inputdevice = keyboard
</trial>


<block task>
/ screencolor = black
/ trials = [1-10 = noreplace(left,right)]
</block>

<expt task>
/ blocks = [1=task]
</expt>

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
ylyl27 - 10/4/2020
Hi!

I'm trying to make an experiment where participants see a flash on the screen and indicate where it's on the left side (press A key) or right side (press L key) of the screen. On each trial, a name is presented, followed by a mask and a mask eraser. It works fine, but I notice that in some trials, when I respond very fast, it doesn't go to the next trial, I have to press the key twice or three times to move on to the next trial. Do you have any idea on what the problem might be and how to solve it? Thanks!!

<item names>
/1 = "Alice"
/2 = "Bob"
/3 = "John"
/4 = "Jack"
/5 = "Mary"
</item>

<item mask>
/1 = "QWEREWEROSXFF"
</item>

<text namesleft>
/ items = names
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text maskleft>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text eraserleft>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = black
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text namesright>
/ items = names
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (80%,50%)
</text>

<text maskright>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (80%,50%)
</text>

<text eraserright>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = black
/ txbgcolor = black
/ position = (80%,50%)
</text>

<trial left>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesleft; 62 = maskleft; 124 = eraserleft]
/ validresponse = (30,38)
/ correctresponse = (30)
/ inputdevice = keyboard
</trial>

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ inputdevice = keyboard
</trial>


<block task>
/ screencolor = black
/ trials = [1-10 = noreplace(left,right)]
</block>

<expt task>
/ blocks = [1=task]
</expt>

By default, trials won't accept responses until after their entire stimulus presentation sequence has been completed, here after the the "eraser" stimulus has been displayed.

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ inputdevice = keyboard
</trial>

If you want to start accepting responses and measure latency relative to the "mask" stimulus, you ought to define

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ beginresponsetime = 62
/ responseinterrupt = frames
/ inputdevice = keyboard
</trial>

and if you want to accept responses / measure latency relative to the onset of the "names" stimulus, you ought to do

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ beginresponsetime = 0
/ responseinterrupt = frames

/ inputdevice = keyboard
</trial>

Edited 4 Years Ago by Dave
ylyl27
ylyl27
Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)
Group: Forum Members
Posts: 10, Visits: 84
Dave - 10/5/2020
ylyl27 - 10/4/2020
Hi!

I'm trying to make an experiment where participants see a flash on the screen and indicate where it's on the left side (press A key) or right side (press L key) of the screen. On each trial, a name is presented, followed by a mask and a mask eraser. It works fine, but I notice that in some trials, when I respond very fast, it doesn't go to the next trial, I have to press the key twice or three times to move on to the next trial. Do you have any idea on what the problem might be and how to solve it? Thanks!!

<item names>
/1 = "Alice"
/2 = "Bob"
/3 = "John"
/4 = "Jack"
/5 = "Mary"
</item>

<item mask>
/1 = "QWEREWEROSXFF"
</item>

<text namesleft>
/ items = names
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text maskleft>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text eraserleft>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = black
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text namesright>
/ items = names
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (80%,50%)
</text>

<text maskright>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (80%,50%)
</text>

<text eraserright>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = black
/ txbgcolor = black
/ position = (80%,50%)
</text>

<trial left>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesleft; 62 = maskleft; 124 = eraserleft]
/ validresponse = (30,38)
/ correctresponse = (30)
/ inputdevice = keyboard
</trial>

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ inputdevice = keyboard
</trial>


<block task>
/ screencolor = black
/ trials = [1-10 = noreplace(left,right)]
</block>

<expt task>
/ blocks = [1=task]
</expt>

By default, trials won't accept responses until after their entire stimulus presentation sequence has been completed, here after the the "eraser" stimulus has been displayed.

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ inputdevice = keyboard
</trial>

If you want to start accepting responses and measure latency relative to the "mask" stimulus, you ought to define

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ beginresponsetime = 62
/ responseinterrupt = frames
/ inputdevice = keyboard
</trial>

and if you want to accept responses / measure latency relative to the onset of the "names" stimulus, you ought to do

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ beginresponsetime = 0
/ responseinterrupt = frames

/ inputdevice = keyboard
</trial>

Hi Dave, thank you so much!! Just one more question. After I changed it to "/ beginresponsetime = 0", in the raw data, the stimulusonset1 for the "names" stimulus changed into 16, instead of 0, and the the stimulusonset2 for the "mask" stimulus changed into 83 accordingly. I wonder why that's the case. These didn't happen when I changed it into "/ beginresponsetime = 62".

Thanks!!
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
ylyl27 - 10/5/2020
Dave - 10/5/2020
ylyl27 - 10/4/2020
Hi!

I'm trying to make an experiment where participants see a flash on the screen and indicate where it's on the left side (press A key) or right side (press L key) of the screen. On each trial, a name is presented, followed by a mask and a mask eraser. It works fine, but I notice that in some trials, when I respond very fast, it doesn't go to the next trial, I have to press the key twice or three times to move on to the next trial. Do you have any idea on what the problem might be and how to solve it? Thanks!!

<item names>
/1 = "Alice"
/2 = "Bob"
/3 = "John"
/4 = "Jack"
/5 = "Mary"
</item>

<item mask>
/1 = "QWEREWEROSXFF"
</item>

<text namesleft>
/ items = names
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text maskleft>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text eraserleft>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = black
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text namesright>
/ items = names
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (80%,50%)
</text>

<text maskright>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (80%,50%)
</text>

<text eraserright>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = black
/ txbgcolor = black
/ position = (80%,50%)
</text>

<trial left>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesleft; 62 = maskleft; 124 = eraserleft]
/ validresponse = (30,38)
/ correctresponse = (30)
/ inputdevice = keyboard
</trial>

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ inputdevice = keyboard
</trial>


<block task>
/ screencolor = black
/ trials = [1-10 = noreplace(left,right)]
</block>

<expt task>
/ blocks = [1=task]
</expt>

By default, trials won't accept responses until after their entire stimulus presentation sequence has been completed, here after the the "eraser" stimulus has been displayed.

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ inputdevice = keyboard
</trial>

If you want to start accepting responses and measure latency relative to the "mask" stimulus, you ought to define

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ beginresponsetime = 62
/ responseinterrupt = frames
/ inputdevice = keyboard
</trial>

and if you want to accept responses / measure latency relative to the onset of the "names" stimulus, you ought to do

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ beginresponsetime = 0
/ responseinterrupt = frames

/ inputdevice = keyboard
</trial>

Hi Dave, thank you so much!! Just one more question. After I changed it to "/ beginresponsetime = 0", in the raw data, the stimulusonset1 for the "names" stimulus changed into 16, instead of 0, and the the stimulusonset2 for the "mask" stimulus changed into 83 accordingly. I wonder why that's the case. These didn't happen when I changed it into "/ beginresponsetime = 62".

Thanks!!

Initializing the response listener takes some time, so that can lead to a delay on the order of one display refresh cycle. In the case where /beginresponsetime = 62, the initialization can happen while stimuli are already being displayed, so you're not seeing any drift in that case. The temporal distance between the onset of the "name" stimulus (16ms) and the "mask" stimulus (83ms), however, should still be as close to the specified 62ms as circumstances will allow (83 - 16 = 67ms in the concrete example). Not sure there's any good way to entirely avoid this kind of drift, at least not in a way that will generalize across different systems with different refresh cycles in a satisfactory way.

ylyl27
ylyl27
Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)
Group: Forum Members
Posts: 10, Visits: 84
Dave - 10/6/2020
ylyl27 - 10/5/2020
Dave - 10/5/2020
ylyl27 - 10/4/2020
Hi!

I'm trying to make an experiment where participants see a flash on the screen and indicate where it's on the left side (press A key) or right side (press L key) of the screen. On each trial, a name is presented, followed by a mask and a mask eraser. It works fine, but I notice that in some trials, when I respond very fast, it doesn't go to the next trial, I have to press the key twice or three times to move on to the next trial. Do you have any idea on what the problem might be and how to solve it? Thanks!!

<item names>
/1 = "Alice"
/2 = "Bob"
/3 = "John"
/4 = "Jack"
/5 = "Mary"
</item>

<item mask>
/1 = "QWEREWEROSXFF"
</item>

<text namesleft>
/ items = names
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text maskleft>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text eraserleft>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = black
/ txbgcolor = black
/ position = (20%,50%)
</text>

<text namesright>
/ items = names
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (80%,50%)
</text>

<text maskright>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = white
/ txbgcolor = black
/ position = (80%,50%)
</text>

<text eraserright>
/ items = mask
/ fontstyle = ("Courier",5%, false, false, false, false, 5, 0)
/ txcolor = black
/ txbgcolor = black
/ position = (80%,50%)
</text>

<trial left>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesleft; 62 = maskleft; 124 = eraserleft]
/ validresponse = (30,38)
/ correctresponse = (30)
/ inputdevice = keyboard
</trial>

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ inputdevice = keyboard
</trial>


<block task>
/ screencolor = black
/ trials = [1-10 = noreplace(left,right)]
</block>

<expt task>
/ blocks = [1=task]
</expt>

By default, trials won't accept responses until after their entire stimulus presentation sequence has been completed, here after the the "eraser" stimulus has been displayed.

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ inputdevice = keyboard
</trial>

If you want to start accepting responses and measure latency relative to the "mask" stimulus, you ought to define

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ beginresponsetime = 62
/ responseinterrupt = frames
/ inputdevice = keyboard
</trial>

and if you want to accept responses / measure latency relative to the onset of the "names" stimulus, you ought to do

<trial right>
/ posttrialpause = 1000
/ stimulustimes = [0 = namesright; 62 = maskright; 124 = eraserright]
/ validresponse = (30,38)
/ correctresponse = (38)
/ beginresponsetime = 0
/ responseinterrupt = frames

/ inputdevice = keyboard
</trial>

Hi Dave, thank you so much!! Just one more question. After I changed it to "/ beginresponsetime = 0", in the raw data, the stimulusonset1 for the "names" stimulus changed into 16, instead of 0, and the the stimulusonset2 for the "mask" stimulus changed into 83 accordingly. I wonder why that's the case. These didn't happen when I changed it into "/ beginresponsetime = 62".

Thanks!!

Initializing the response listener takes some time, so that can lead to a delay on the order of one display refresh cycle. In the case where /beginresponsetime = 62, the initialization can happen while stimuli are already being displayed, so you're not seeing any drift in that case. The temporal distance between the onset of the "name" stimulus (16ms) and the "mask" stimulus (83ms), however, should still be as close to the specified 62ms as circumstances will allow (83 - 16 = 67ms in the concrete example). Not sure there's any good way to entirely avoid this kind of drift, at least not in a way that will generalize across different systems with different refresh cycles in a satisfactory way.

Thanks for the explanation! This is very helpful!
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search