+xHi Dave,
We have used your code in our experiment and it has been running perfectly!
Unfortunately, our current categorization is too hard for the participants and we are trying to add feedback (correct/incorrect with the stimuli) to the responses. The stimuli are an amalgamation of many random features (taken from several picture lists) so we are unable know what to reproduce on the timed out feedback trials.
Possible Solutions:
Is there a way to keep track of the images shown from the picture list and then be able to reproduce all of them on the feedback trials?
Is there a way to prevent the screen from clearing the image after every trial, more specifically between the response trial and the feedback trial?
Thanks again!
> Is there a way to keep track of the images shown from the picture list and then be able to reproduce all of them on the feedback trials?
Surely. You can store the respective item numbers in global variables (<values>) and use the value(s) in /select attributes to reproduce the selection in the previous trial.
<block myblock>
/ trials = [1-3 = jupiteraa]
</block>
// three items
<list itemnumbers>
/ items = (1,2,3)
</list>
// here we store the item number
<values>
/ itemnumber = 1
</values>
// here we perform the selection of an the item number from the list
<trial jupiterAA>
/ ontrialbegin = [
values.itemnumber = list.itemnumbers.nextvalue;
]/ stimulustimes = [0=fixation; 500= stimulus]
/ validresponse = ("j", "s", " ")
/ correctresponse = ("j")
/ timeout = 2500
/ beginresponsetime = 550
/ branch = [if (trial.jupiteraa.response == 0) trial.tooslowfb]
/ branch = [if (trial.jupiteraa.error) trial.errorfb]
/ branch = [if (trial.jupiteraa.correct) trial.correctfb]
</trial>
// no selection of item number, i.e. displays same item
<trial correctfb>
/ stimulustimes = [0=stimulus, correctstim]
/ validresponse = (0)
/ trialduration = 2000
</trial>
// no selection of item number, i.e. displays same item
<trial errorfb>
/ stimulustimes = [0=stimulus, errorstim]
/ validresponse = (0)
/ trialduration = 2000
</trial>
// no selection of item number, i.e. displays same item
<trial tooslowfb>
/ stimulustimes = [0=stimulus, tooslowstim]
/ validresponse = (0)
/ trialduration = 2000
</trial>
<text fixation>
/ items = ("+")
</text>
// selects item indicated by values.itemnumber
<text stimulus>
/ items = ("Stim A", "Stim B", "Stim C")
/ select = values.itemnumber</text>
<text correctstim>
/ items = ("correct")
/ position = (50%, 70%)
</text>
<text errorstim>
/ items = ("error")
/ position = (50%, 70%)
</text>
<text tooslowstim>
/ items = ("too slow")
/ position = (50%, 70%)
</text>
> Is there a way to prevent the screen from clearing the image after every trial, more specifically between the response trial and the feedback trial?
Yes. If you want to prevent a stimulus from being automatically erased at the end of a trial, set the stimulus element's /erase attribute to false.
<block myblock>
/ trials = [1-3 = jupiteraa]
</block>
<trial jupiterAA>
/ stimulustimes = [0=fixation; 500= stimulus]
/ validresponse = ("j", "s", " ")
/ correctresponse = ("j")
/ timeout = 2500
/ beginresponsetime = 550
/ branch = [if (trial.jupiteraa.response == 0) trial.tooslowfb]
/ branch = [if (trial.jupiteraa.error) trial.errorfb]
/ branch = [if (trial.jupiteraa.correct) trial.correctfb]
</trial>
<trial correctfb>
/ stimulustimes = [0=correctstim]
/ validresponse = (0)
/ trialduration = 2000
</trial>
<trial errorfb>
/ stimulustimes = [0=errorstim]
/ validresponse = (0)
/ trialduration = 2000
</trial>
<trial tooslowfb>
/ stimulustimes = [0=tooslowstim]
/ validresponse = (0)
/ trialduration = 2000
</trial>
<text fixation>
/ items = ("+")
/ size = (100%, 100%)
/ erase = false
/ hjustify = center
/ vjustify = center
</text>
<text stimulus>
/ items = ("Stim A", "Stim B", "Stim C")
/ erase = false
</text>
<text correctstim>
/ items = ("correct")
/ position = (50%, 70%)
</text>
<text errorstim>
/ items = ("error")
/ position = (50%, 70%)
</text>
<text tooslowstim>
/ items = ("too slow")
/ position = (50%, 70%)
</text>