Millisecond Forums

unable to run project because pictures cannot be loaded

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

By Jo_Wlhlm - 5/27/2021

Good morning,

For a research project with in which participants get presented two face stimuli at the same time I tried to implement the script. It worked until suddenly the program wasn't able to load the pictures of the faces anymore. I made sure that the script file is saved in the exact same folder than the pictures (.png) but still it is not working. Most of the time it gives the following error message: Unable to load the picture ''. Network Error: Protocol "" is unknown. 

For the project we have 4 different faces with 2 different emotions and each picture is presented upright and inverted. Together this makes 16 different picture stimuli. I tried to implement the pictures like this: 

<picture face1>
/ items = ("F1_F_1.png","I_F1_F_1.png","F1_N_1.png","I_F1_N_1.png","F2_F_1.png","I_F2_F_1.png","F2_N_1.png","I_F2_N_1.png","M1_F_1.png","I_M1_F_1.png","M1_N_1.png","I_M1_N_1.png","M2_F_1.png","I_M2_F_1.png","M2_N_1.png","I_M2_N_1.png")
/ transparentcolor = black
/ hposition = 50-(values.Hpcent_per_VD*2)
/ vposition = 50+(values.Hpcent_per_VD*15)
/ size = (values.Hpcent_per_VD*2, values.Vpcent_per_VD*2)
</picture>

<picture face2>
/ items = ("F1_F_1.png","I_F1_F_1.png","F1_N_1.png","I_F1_N_1.png","F2_F_1.png","I_F2_F_1.png","F2_N_1.png","I_F2_N_1.png","M1_F_1.png","I_M1_F_1.png","M1_N_1.png","I_M1_N_1.png","M2_F_1.png","I_M2_F_1.png","M2_N_1.png","I_M2_N_1.png")
/ transparentcolor = black
/ hposition = 50+(values.Hpcent_per_VD*2)
/ vposition = 50+(values.Hpcent_per_VD*15)
/ size = (values.Hpcent_per_VD*2, values.Vpcent_per_VD*2)
</picture>

Depending on which picture is shown as picture face1 I want to have specific faces as picture face2. We do not want all possible combinations. For each possible face1 stimuli there are 12 different possible face stimuli that can be shown as picture face2. I tried to use lists and if statements for this but here I am completely not sure about the best way to do it. My script seems to have errors in it but I am not experienced enough with Inquisit to find/ correct them. What I want is that on trial begin a random picture is presented as face1. In the if statement I want to check which face stimuli is presented as face1 and depending on this a face from a specific list is randomly chosen as face two. 

<list faces>
/ items = ("F1_F_1.png","I_F1_F_1.png","F1_N_1.png","I_F1_N_1.png","F2_F_1.png","I_F2_F_1.png","F2_N_1.png","I_F2_N_1.png","M1_F_1.png","I_M1_F_1.png","M1_N_1.png","I_M1_N_1.png","M2_F_1.png","I_M2_F_1.png","M2_N_1.png","I_M2_N_1.png")
/ selectionmode = random
/ select = replace
</list>

<list face1_UFF>
/ items = ("F1_F_1.png","F2_F_1.png","M1_F_1.png","M2_F_1.png","F1_N_1.png","F2_N_1.png","M1_N_1.png","M2_N_1.png","I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png")
/ selectionmode = random
/ select = replace
</list>

<list face1_IFF>
/ items = ("F1_F_1.png","F2_F_1.png","M1_F_1.png","M2_F_1.png","I_F1_N_1.png", "I_F2_N_1.png","I_M1_N_1.png","I_M2_N_1.png", "I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png")
/ selectionmode = random
/ select = replace
</list>

<list face1_UNF>
/ items = ("F1_N_1.png","F2_N_1.png","M1_N_1.png","M2_N_1.png","F1_F_1.png","F2_F_1.png","M1_F_1.png","M2_F_1.png","I_F1_N_1.png", "I_F2_N_1.png","I_M1_N_1.png","I_M2_N_1.png" )
/ selectionmode = random
/ select = replace
</list>

<list face1_INF>
/ items = ("I_F1_N_1.png", "I_F2_N_1.png","I_M1_N_1.png","I_M2_N_1.png","I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png","F1_N_1.png","F2_N_1.png","M1_N_1.png","M2_N_1.png")
/ selectionmode = random
/ select = replace
</list>

<trial task>
/ pretrialpause = 100
/ ontrialbegin = [picture.face1 = list.faces.nextvalue]
/ ontrialbegin = [if(picture.face1 == list.face1_UFF.items) 
{
    picture.face2 = list.face1_UFF.nextvalue
}
else if(picture.face1 == list.face1_IFF.items)
{
    picture.face2 = list.face1_IFF.nextvalue
}
else if(picture.face1 == list.face1_UNF.nextvalue)
{
    picture.face2 = list.face1_UNF.nextvalue
}
else if(picture.face1 == list.face1_INF.nextvalue)
{
    picture.face2 = list.face1_INF.nextvalue
}
]    
/ stimulustimes = [0= fixationcross; 200=face1, face2; 3200=transient; 3250=blank, face1, face2, fixationcross; 5050 =blank]
/ validresponse = (200,203,208,205)
/ beginresponsetime = 5050
/ recorddata = true
/ timeout = 6000
/ posttrialpause = 100
</trial>

I hope it is more or less understandable what I want to implement. Maybe someone finds my error or can give me some hints how to implement what I just described. Thanks in advance!  
By Dave - 5/28/2021

Jo_Wlhlm - 5/28/2021
Good morning,

For a research project with in which participants get presented two face stimuli at the same time I tried to implement the script. It worked until suddenly the program wasn't able to load the pictures of the faces anymore. I made sure that the script file is saved in the exact same folder than the pictures (.png) but still it is not working. Most of the time it gives the following error message: Unable to load the picture ''. Network Error: Protocol "" is unknown. 

For the project we have 4 different faces with 2 different emotions and each picture is presented upright and inverted. Together this makes 16 different picture stimuli. I tried to implement the pictures like this: 

<picture face1>
/ items = ("F1_F_1.png","I_F1_F_1.png","F1_N_1.png","I_F1_N_1.png","F2_F_1.png","I_F2_F_1.png","F2_N_1.png","I_F2_N_1.png","M1_F_1.png","I_M1_F_1.png","M1_N_1.png","I_M1_N_1.png","M2_F_1.png","I_M2_F_1.png","M2_N_1.png","I_M2_N_1.png")
/ transparentcolor = black
/ hposition = 50-(values.Hpcent_per_VD*2)
/ vposition = 50+(values.Hpcent_per_VD*15)
/ size = (values.Hpcent_per_VD*2, values.Vpcent_per_VD*2)
</picture>

<picture face2>
/ items = ("F1_F_1.png","I_F1_F_1.png","F1_N_1.png","I_F1_N_1.png","F2_F_1.png","I_F2_F_1.png","F2_N_1.png","I_F2_N_1.png","M1_F_1.png","I_M1_F_1.png","M1_N_1.png","I_M1_N_1.png","M2_F_1.png","I_M2_F_1.png","M2_N_1.png","I_M2_N_1.png")
/ transparentcolor = black
/ hposition = 50+(values.Hpcent_per_VD*2)
/ vposition = 50+(values.Hpcent_per_VD*15)
/ size = (values.Hpcent_per_VD*2, values.Vpcent_per_VD*2)
</picture>

Depending on which picture is shown as picture face1 I want to have specific faces as picture face2. We do not want all possible combinations. For each possible face1 stimuli there are 12 different possible face stimuli that can be shown as picture face2. I tried to use lists and if statements for this but here I am completely not sure about the best way to do it. My script seems to have errors in it but I am not experienced enough with Inquisit to find/ correct them. What I want is that on trial begin a random picture is presented as face1. In the if statement I want to check which face stimuli is presented as face1 and depending on this a face from a specific list is randomly chosen as face two. 

<list faces>
/ items = ("F1_F_1.png","I_F1_F_1.png","F1_N_1.png","I_F1_N_1.png","F2_F_1.png","I_F2_F_1.png","F2_N_1.png","I_F2_N_1.png","M1_F_1.png","I_M1_F_1.png","M1_N_1.png","I_M1_N_1.png","M2_F_1.png","I_M2_F_1.png","M2_N_1.png","I_M2_N_1.png")
/ selectionmode = random
/ select = replace
</list>

<list face1_UFF>
/ items = ("F1_F_1.png","F2_F_1.png","M1_F_1.png","M2_F_1.png","F1_N_1.png","F2_N_1.png","M1_N_1.png","M2_N_1.png","I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png")
/ selectionmode = random
/ select = replace
</list>

<list face1_IFF>
/ items = ("F1_F_1.png","F2_F_1.png","M1_F_1.png","M2_F_1.png","I_F1_N_1.png", "I_F2_N_1.png","I_M1_N_1.png","I_M2_N_1.png", "I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png")
/ selectionmode = random
/ select = replace
</list>

<list face1_UNF>
/ items = ("F1_N_1.png","F2_N_1.png","M1_N_1.png","M2_N_1.png","F1_F_1.png","F2_F_1.png","M1_F_1.png","M2_F_1.png","I_F1_N_1.png", "I_F2_N_1.png","I_M1_N_1.png","I_M2_N_1.png" )
/ selectionmode = random
/ select = replace
</list>

<list face1_INF>
/ items = ("I_F1_N_1.png", "I_F2_N_1.png","I_M1_N_1.png","I_M2_N_1.png","I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png","F1_N_1.png","F2_N_1.png","M1_N_1.png","M2_N_1.png")
/ selectionmode = random
/ select = replace
</list>

<trial task>
/ pretrialpause = 100
/ ontrialbegin = [picture.face1 = list.faces.nextvalue]
/ ontrialbegin = [if(picture.face1 == list.face1_UFF.items) 
{
    picture.face2 = list.face1_UFF.nextvalue
}
else if(picture.face1 == list.face1_IFF.items)
{
    picture.face2 = list.face1_IFF.nextvalue
}
else if(picture.face1 == list.face1_UNF.nextvalue)
{
    picture.face2 = list.face1_UNF.nextvalue
}
else if(picture.face1 == list.face1_INF.nextvalue)
{
    picture.face2 = list.face1_INF.nextvalue
}
]    
/ stimulustimes = [0= fixationcross; 200=face1, face2; 3200=transient; 3250=blank, face1, face2, fixationcross; 5050 =blank]
/ validresponse = (200,203,208,205)
/ beginresponsetime = 5050
/ recorddata = true
/ timeout = 6000
/ posttrialpause = 100
</trial>

I hope it is more or less understandable what I want to implement. Maybe someone finds my error or can give me some hints how to implement what I just described. Thanks in advance!  

Provide the complete code (or at least something that's self-contained and complete enough to run) as well as all files required. Your question is not answerable based on isolated code snippets.

The only thing I can tell you without that is that this condition here

ontrialbegin = [if(picture.face1 == list.face1_UFF.items)

returns absolutely nothing. It's not clear what it's intended to do.
By Jo_Wlhlm - 5/28/2021

Ok, so what I want to achieve is that two face stimuli out of 16 possible face stimuli get presented at the same time. But I don't want to have all possible combinations. The face that is presented as face1 should be selected randomly out of the 16 possibilities. Depending on which face is shown as face 1 there are only 12 possible faces that can be shown as face 2. The 16 face stimuli can be divided into 4 groups (UNF, UFF, IFF, INF) each containing 4 face stimuli. If face1 is taken from group UFF, face two should be randomly taken out of group UFF, UNF, or IFF. The four pictures of group INF shouldn't be an option in that case. The following summarizes the possibilities: 

Face1    Possible faces for face2
UFF       UFF, UNF, IFF
UNF      UNF, UFF, INF
IFF        IFF, INF, UFF
INF        INF, UNF, IFF

I tried to solve this with different lists out of which stimuli are taken and with an if statement, but it did not work. The following link contains a script that is kinda working, but does not include this specific selection of stimuli for face2: https://drive.google.com/drive/folders/1HzFZhw_5S1IBriZXb3BuLoj4DWpp24eI?usp=sharing

I hope now it is a little bit clearer what my question is. 

I'd be glad if you have a solution for my problem or some hints how to solve it. Wasted quite some time on it now. Thanks in advance!
By Dave - 5/28/2021

Jo_Wlhlm - 5/28/2021
Ok, so what I want to achieve is that two face stimuli out of 16 possible face stimuli get presented at the same time. But I don't want to have all possible combinations. The face that is presented as face1 should be selected randomly out of the 16 possibilities. Depending on which face is shown as face 1 there are only 12 possible faces that can be shown as face 2. The 16 face stimuli can be divided into 4 groups (UNF, UFF, IFF, INF) each containing 4 face stimuli. If face1 is taken from group UFF, face two should be randomly taken out of group UFF, UNF, or IFF. The four pictures of group INF shouldn't be an option in that case. The following summarizes the possibilities: 

Face1    Possible faces for face2
UFF       UFF, UNF, IFF
UNF      UNF, UFF, INF
IFF        IFF, INF, UFF
INF        INF, UNF, IFF

I tried to solve this with different lists out of which stimuli are taken and with an if statement, but it did not work. The following link contains a script that is kinda working, but does not include this specific selection of stimuli for face2: https://drive.google.com/drive/folders/1HzFZhw_5S1IBriZXb3BuLoj4DWpp24eI?usp=sharing

I hope now it is a little bit clearer what my question is. 

I'd be glad if you have a solution for my problem or some hints how to solve it. Wasted quite some time on it now. Thanks in advance!

Which item numbers belong to which group? Also, there seems to be nothing in your description that rules out the same item being selected for both face 1 and face 2 in a single trial. Is that intentional?
By Jo_Wlhlm - 5/28/2021

<list UFF>
/ items = ("F1_F_1.png","F2_F_1.png","M1_F_1.png","M2_F_1.png")
/ selectionmode = random
/ select = replace
</list>

<list IFF>
/ items = ("I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png")
/ selectionmode = random
/ select = replace
</list>

<list INF>
/ items = ("I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png")

/ selectionmode = random
/ select = replace
</list>

<list UNF>
/ items = ("F1_N_1.png","F2_N_1.png","M1_N_1.png","M2_N_1.png")
/ selectionmode = random
/ select = replace
</list>


Yes, face1 and face2 can also be the same faces. 
By Dave - 5/28/2021

Jo_Wlhlm - 5/28/2021
<list UFF>
/ items = ("F1_F_1.png","F2_F_1.png","M1_F_1.png","M2_F_1.png")
/ selectionmode = random
/ select = replace
</list>

<list IFF>
/ items = ("I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png")
/ selectionmode = random
/ select = replace
</list>

<list INF>
/ items = ("I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png")

/ selectionmode = random
/ select = replace
</list>

<list UNF>
/ items = ("F1_N_1.png","F2_N_1.png","M1_N_1.png","M2_N_1.png")
/ selectionmode = random
/ select = replace
</list>


Yes, face1 and face2 can also be the same faces. 

I was asking about item numbers, not separate lists.

<list faces>
/ items = ("F1_F_1.png","I_F1_F_1.png","F1_N_1.png","I_F1_N_1.png","F2_F_1.png","I_F2_F_1.png","F2_N_1.png","I_F2_N_1.png","M1_F_1.png","I_M1_F_1.png","M1_N_1.png","I_M1_N_1.png","M2_F_1.png","I_M2_F_1.png","M2_N_1.png","I_M2_N_1.png")
/ selectionmode = random
/ select = replace
</list>

Which of the item numbers in the above are UFF, which are UNF, which are IFF, which are INF?

By Jo_Wlhlm - 5/28/2021

item numbers 1,5,9,,13 are UFF       ("F1_F_1.png","F2_F_1.png","M1_F_1.png","M2_F_1.png")
numbers 2,6,10,14 are IFF                ("I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png")
numbers 3,7,11,15 are UNF               ("F1_N_1.png","F2_N_1.png","M1_N_1.png","M2_N_1.png")
numbers 4,8,12,16 are INF                ("I_F1_N_1.png","I_F2_N_1.png","I_M1_N_1.png","I_M2_N_1.png")

I hope that's what you meant! 
By Dave - 5/28/2021

Jo_Wlhlm - 5/28/2021
item numbers 1,5,9,,13 are UFF       ("F1_F_1.png","F2_F_1.png","M1_F_1.png","M2_F_1.png")
numbers 2,6,10,14 are IFF                ("I_F1_F_1.png","I_F2_F_1.png","I_M1_F_1.png","I_M2_F_1.png")
numbers 3,7,11,15 are UNF               ("F1_N_1.png","F2_N_1.png","M1_N_1.png","M2_N_1.png")
numbers 4,8,12,16 are INF                ("I_F1_N_1.png","I_F2_N_1.png","I_M1_N_1.png","I_M2_N_1.png")

I hope that's what you meant! 

Take a look at the attached.
By Jo_Wlhlm - 5/29/2021

Thank you so much! It is working. I was wondering if there is a simple way in this script to balance the occurrence of the different combinations of face stimuli in such a way that each group combination occurs 18 times but still in a random order. 

18* UFF - UFF
18* UFF - IFF
18* UFF - UNF

18* IFF - IFF
18* IFF - INF
18* IFF - UFF

18* INF - INF
18* INF - UNF
18* INF - IFF

18* UNF - UNF
18* UNF - INF
18* UNF - UFF

I would then end up with my 216 task trials. The only thing that is important is a balanced group combination. For now it dosen't matter which face stimuli of the groups are presented together.
By Dave - 5/31/2021

Jo_Wlhlm - 5/29/2021
Thank you so much! It is working. I was wondering if there is a simple way in this script to balance the occurrence of the different combinations of face stimuli in such a way that each group combination occurs 18 times but still in a random order. 

18* UFF - UFF
18* UFF - IFF
18* UFF - UNF

18* IFF - IFF
18* IFF - INF
18* IFF - UFF

18* INF - INF
18* INF - UNF
18* INF - IFF

18* UNF - UNF
18* UNF - INF
18* UNF - UFF

I would then end up with my 216 task trials. The only thing that is important is a balanced group combination. For now it dosen't matter which face stimuli of the groups are presented together.

You should have mentioned this before. No, there is no easy way. First, you'll have to go back having separate lists, specifically you'll need four lists -- UFF, UNF, IFF, INF -- each containing the item numbers for the respective condition. Then you need two lists pairing your conditions as desired (i.e. 18 x the combination UFF-UFF, 18 x the combination UFF-IFF, etc.). At the start of each trial, sample the condition combination from those two paired lists. Then sample item numbers for face 1 and face 2 from the applicable one or two of the four item number lists (UFF, UNF, IFF, INF) accordingly.
By Jo_Wlhlm - 5/31/2021

Dave - 5/31/2021
Jo_Wlhlm - 5/29/2021
Thank you so much! It is working. I was wondering if there is a simple way in this script to balance the occurrence of the different combinations of face stimuli in such a way that each group combination occurs 18 times but still in a random order. 

18* UFF - UFF
18* UFF - IFF
18* UFF - UNF

18* IFF - IFF
18* IFF - INF
18* IFF - UFF

18* INF - INF
18* INF - UNF
18* INF - IFF

18* UNF - UNF
18* UNF - INF
18* UNF - UFF

I would then end up with my 216 task trials. The only thing that is important is a balanced group combination. For now it dosen't matter which face stimuli of the groups are presented together.

You should have mentioned this before. No, there is no easy way. First, you'll have to go back having separate lists, specifically you'll need four lists -- UFF, UNF, IFF, INF -- each containing the item numbers for the respective condition. Then you need two lists pairing your conditions as desired (i.e. 18 x the combination UFF-UFF, 18 x the combination UFF-IFF, etc.). At the start of each trial, sample the condition combination from those two paired lists. Then sample item numbers for face 1 and face 2 from the applicable one or two of the four item number lists (UFF, UNF, IFF, INF) accordingly.

Thanks for your reply! I think I managed it in the meantime. I created trials for each possible group combination and then used the block element to make sure they are balanced. Looks like this:

<block faces>
/ trials = [1-39, 41-79, 81-119, 121-159, 161-199, 201-239 = noreplace(UFFUFF,UFFUNF,UFFIFF,IFFIFF,IFFINF,IFFUFF,INFIFF,INFINF,INFUNF,UNFINF,UNFUFF,UNFUNF,catch); 40,80,120,160,200 = break]
</block>

If I am correct each of the group combinations and also the catch trials should be selected an equal amount of times separated by breaks after every 39th trial. So as I understood some comments in the forum regarding similar topics in trials 1-39 each of the different grouping trials and the catch trials should be taken 3 times (13 possible trials; 39 trial -> 39/13 = 3) followed by a break and so on. Might not be the nicest solution but I hope it'll work. 

But I have another question. I now implemented the experiment in such a way that the participants have 5 practice trials. After those 5 trials the participants get a text message telling them they can chose whether to go on and start the experiment or to go back to the instructions and have another 5 practice trials. I used the branch element for that. I want them to have the chance to repeat the instructions and 3 times. After the 3rd time they shouldn't get the text that they can go back to instructions anymore but a text telling them that the experiment will start now. I tried it the following way but it did not work as I hoped. It always presented the text about going back to instructions or to continue.


<trial repeat>
/ stimulustimes = [0= blank, text.repeat]
/ timeout = 10000
/ validresponse = (19,57)
/ correctresponse = (19,57)
/ stop = [
    trial.repeat.correct == true;
]
/ ontrialbegin = [
    values.nottext1 = 2;
    //values.practiceblocks = block.practice.count;
    if (values.practiceblocks < 3 == true){
        values.textrepeatnumber = list.textrepeatnumbers.nextvalue;
    } else if (values.practiceblocks = 3 == true){
        values.nottext1 = 1;
        values.textrepeatnumber = list.textrepeatnumbers.nextvalue;
    }
]
</trial>

<text repeat>
/ items = ("If you want to go back to the instruction page and repeat the practice trials press 'R'. If you want to start the experiment press 'Space'." , "The experiment will start now. Press space to continue. After 1 minute the experiment starts automatically." )
/ size = (100%, 50%)
/ position = (50%, 60%)
/ hjustify = center
/ select = values.textrepeatnumber
</text>

<block practice>
/ preinstructions = (htmlpage.visualinstruction, page.pinst)
/ trials = [1-5 = noreplace(practice); 6 = repeat]
/ stop = [
    trial.repeat.count >3;
]
/ branch = [
    if (trial.repeat.response == 19){
        block.practice
    }
]    
/ skip = [
    trial.repeat.response == 57
]
/ onblockbegin = [
    values.practiceblocks = block.practice.count;
</block>

Do you see my mistake? I thought maybe because due to the branch element the block starts over again and with it also the count of blocks which makes it alway 1. I hope I provided enough code for you to know what I am talking about.
By Dave - 5/31/2021

Jo_Wlhlm - 5/31/2021
Dave - 5/31/2021
Jo_Wlhlm - 5/29/2021
Thank you so much! It is working. I was wondering if there is a simple way in this script to balance the occurrence of the different combinations of face stimuli in such a way that each group combination occurs 18 times but still in a random order. 

18* UFF - UFF
18* UFF - IFF
18* UFF - UNF

18* IFF - IFF
18* IFF - INF
18* IFF - UFF

18* INF - INF
18* INF - UNF
18* INF - IFF

18* UNF - UNF
18* UNF - INF
18* UNF - UFF

I would then end up with my 216 task trials. The only thing that is important is a balanced group combination. For now it dosen't matter which face stimuli of the groups are presented together.

You should have mentioned this before. No, there is no easy way. First, you'll have to go back having separate lists, specifically you'll need four lists -- UFF, UNF, IFF, INF -- each containing the item numbers for the respective condition. Then you need two lists pairing your conditions as desired (i.e. 18 x the combination UFF-UFF, 18 x the combination UFF-IFF, etc.). At the start of each trial, sample the condition combination from those two paired lists. Then sample item numbers for face 1 and face 2 from the applicable one or two of the four item number lists (UFF, UNF, IFF, INF) accordingly.

Thanks for your reply! I think I managed it in the meantime. I created trials for each possible group combination and then used the block element to make sure they are balanced. Looks like this:

<block faces>
/ trials = [1-39, 41-79, 81-119, 121-159, 161-199, 201-239 = noreplace(UFFUFF,UFFUNF,UFFIFF,IFFIFF,IFFINF,IFFUFF,INFIFF,INFINF,INFUNF,UNFINF,UNFUFF,UNFUNF,catch); 40,80,120,160,200 = break]
</block>

If I am correct each of the group combinations and also the catch trials should be selected an equal amount of times separated by breaks after every 39th trial. So as I understood some comments in the forum regarding similar topics in trials 1-39 each of the different grouping trials and the catch trials should be taken 3 times (13 possible trials; 39 trial -> 39/13 = 3) followed by a break and so on. Might not be the nicest solution but I hope it'll work. 

But I have another question. I now implemented the experiment in such a way that the participants have 5 practice trials. After those 5 trials the participants get a text message telling them they can chose whether to go on and start the experiment or to go back to the instructions and have another 5 practice trials. I used the branch element for that. I want them to have the chance to repeat the instructions and 3 times. After the 3rd time they shouldn't get the text that they can go back to instructions anymore but a text telling them that the experiment will start now. I tried it the following way but it did not work as I hoped. It always presented the text about going back to instructions or to continue.


<trial repeat>
/ stimulustimes = [0= blank, text.repeat]
/ timeout = 10000
/ validresponse = (19,57)
/ correctresponse = (19,57)
/ stop = [
    trial.repeat.correct == true;
]
/ ontrialbegin = [
    values.nottext1 = 2;
    //values.practiceblocks = block.practice.count;
    if (values.practiceblocks < 3 == true){
        values.textrepeatnumber = list.textrepeatnumbers.nextvalue;
    } else if (values.practiceblocks = 3 == true){
        values.nottext1 = 1;
        values.textrepeatnumber = list.textrepeatnumbers.nextvalue;
    }
]
</trial>

<text repeat>
/ items = ("If you want to go back to the instruction page and repeat the practice trials press 'R'. If you want to start the experiment press 'Space'." , "The experiment will start now. Press space to continue. After 1 minute the experiment starts automatically." )
/ size = (100%, 50%)
/ position = (50%, 60%)
/ hjustify = center
/ select = values.textrepeatnumber
</text>

<block practice>
/ preinstructions = (htmlpage.visualinstruction, page.pinst)
/ trials = [1-5 = noreplace(practice); 6 = repeat]
/ stop = [
    trial.repeat.count >3;
]
/ branch = [
    if (trial.repeat.response == 19){
        block.practice
    }
]    
/ skip = [
    trial.repeat.response == 57
]
/ onblockbegin = [
    values.practiceblocks = block.practice.count;
</block>

Do you see my mistake? I thought maybe because due to the branch element the block starts over again and with it also the count of blocks which makes it alway 1. I hope I provided enough code for you to know what I am talking about.

See the documentation of the count property

https://www.millisecond.com/support/docs/v6/html/language/properties/count.htm

versus the totalcount property

https://www.millisecond.com/support/docs/v6/html/language/properties/totalcount.htm