Millisecond Forums

Creating all combinations of stimuli and correct feedback

https://forums.millisecond.com/Topic31244.aspx

By SilvioM - 4/4/2021

Dear all, 
I am just developing my first Inquisit task and I would need your support. The task I would like to create is the following:
- Fixation cross - Display a "manikin" picture and two word stimuli, either in the upper part and the lower part of the screen - Display a feedback, depending on participant' response (correct; incorrect; or too slow response).
In this example, I have four different "target" stimuli which are displayed at the top of screen and four "distracting" stimuli which are displayed at the bottom of the screen. Using this post (https://www.millisecond.com/forums/Topic2273.aspx), I have created a counter to generate all possible combinations between my 4 "target" stimuli and my 4 "distracting" stimuli (i.e., 16 trials). 

The problem is: when the participant gives the correct answer, I would like to display a feedback in which the manikin gets closer from the "target" stimulus and in which the same "target" and "distracting" stimuli remain displayed on screen. However, using my actual code, the "target" and "distracting" stimuli change between the "trial" and the feedback.

When I do not create the possible combinations using a counter, I manage to display the same stimuli between the trial and the feedback, using this post (https://www.millisecond.com/forums/Topic20934.aspx#21189). Specifically, I was using:

<list itemnumbers_PA_top>                                
/ items = (1,4) 
</list>

<values>
/ myvalue = 1
</values>

<list itemnumbers_SED_bottom>          
/ items = (1,4)
</list>

<values>
/ myvalue = 1
</values>

<trial PA_top>
/ ontrialbegin = [values.itemnumber_PA_top = list.itemnumbers_PA_top.nextvalue;]
/ ontrialbegin = [values.itemnumber_SED_bottom = list.itemnumbers_SED_bottom.nextvalue;]   
/ stimulusframes = [1= focuspoint; 250 = PA_top, SED_bottom, moi]                         
/ validresponse = ("t", "b")
/ correctresponse = ("t")
/ timeout = 10000
/ branch = [if (trial.PA_top.response == 0) trial.tooslowfb]                            
/ branch = [if (trial.PA_top.error) trial.errorfb]                                        
/ branch = [if (trial.PA_top.correct) trial.correctfb_PA_top]                            
</trial>

<trial correctfb_PA_top>
/ stimulusframes = [1= FB_top, PA_top, SED_bottom]
/ validresponse = (0)
/ trialduration = 750
</trial>
 
However, up to now, adding these lines does not change anything when I previously create all possible combinations of trials. 
Do you think that we could mix these two approaches? Please find my code attached.

Thank you very much for your help,
Silvio
By Dave - 4/5/2021

SilvioM - 4/4/2021
Dear all, 
I am just developing my first Inquisit task and I would need your support. The task I would like to create is the following:
- Fixation cross - Display a "manikin" picture and two word stimuli, either in the upper part and the lower part of the screen - Display a feedback, depending on participant' response (correct; incorrect; or too slow response).
In this example, I have four different "target" stimuli which are displayed at the top of screen and four "distracting" stimuli which are displayed at the bottom of the screen. Using this post (https://www.millisecond.com/forums/Topic2273.aspx), I have created a counter to generate all possible combinations between my 4 "target" stimuli and my 4 "distracting" stimuli (i.e., 16 trials). 

The problem is: when the participant gives the correct answer, I would like to display a feedback in which the manikin gets closer from the "target" stimulus and in which the same "target" and "distracting" stimuli remain displayed on screen. However, using my actual code, the "target" and "distracting" stimuli change between the "trial" and the feedback.

When I do not create the possible combinations using a counter, I manage to display the same stimuli between the trial and the feedback, using this post (https://www.millisecond.com/forums/Topic20934.aspx#21189). Specifically, I was using:

<list itemnumbers_PA_top>                                
/ items = (1,4) 
</list>

<values>
/ myvalue = 1
</values>

<list itemnumbers_SED_bottom>          
/ items = (1,4)
</list>

<values>
/ myvalue = 1
</values>

<trial PA_top>
/ ontrialbegin = [values.itemnumber_PA_top = list.itemnumbers_PA_top.nextvalue;]
/ ontrialbegin = [values.itemnumber_SED_bottom = list.itemnumbers_SED_bottom.nextvalue;]   
/ stimulusframes = [1= focuspoint; 250 = PA_top, SED_bottom, moi]                         
/ validresponse = ("t", "b")
/ correctresponse = ("t")
/ timeout = 10000
/ branch = [if (trial.PA_top.response == 0) trial.tooslowfb]                            
/ branch = [if (trial.PA_top.error) trial.errorfb]                                        
/ branch = [if (trial.PA_top.correct) trial.correctfb_PA_top]                            
</trial>

<trial correctfb_PA_top>
/ stimulusframes = [1= FB_top, PA_top, SED_bottom]
/ validresponse = (0)
/ trialduration = 750
</trial>
 
However, up to now, adding these lines does not change anything when I previously create all possible combinations of trials. 
Do you think that we could mix these two approaches? Please find my code attached.

Thank you very much for your help,
Silvio

What you need to do is

<values>
/ PA_top = 1
/ SED_bottom = 1
</values>

with

<trial PA_top>
/ ontrialbegin = [
    values.PA_top = counter.counter_PA_top.selectedvalue;
    values.SED_bottom = counter.counter_SED_bottom.selectedvalue;
]


/ stimulusframes = [1=focuspoint; 100 = PA_top, SED_bottom, moi]
/ validresponse = ("t", "b")
/ correctresponse = ("t")
/ timeout = 10000
/ branch = [if (trial.PA_top.response == 0) trial.tooslowfb]                            
/ branch = [if (trial.PA_top.error) trial.errorfb]                                        
/ branch = [if (trial.PA_top.correct) trial.correctfb_PA_top]
</trial>

and

<text PA_top>
/ items = PA_top
/ position = (50%, 10%)    
/ select = values.PA_top
</text>

<text SED_bottom>
/ items = SED_bottom
/ position = (50%, 90%)    
/ select = values.sed_bottom
</text>
By SilvioM - 4/6/2021

Thank you very much Dave, it worked wonders!
Best regards,
Silvio