Millisecond Forums

how to add a break in the middle of self paced reading items

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

By azizaltamimi - 8/5/2018

Hello guys, 
 I managed to add a rest in my Lexical judgement task by running a different <trial> in a an assigned <block>. However, I am still struggling into how to modify the existing script for self paced reading, such that it would allow a rest break  after a particular item number. I would really appreciate if you can help me with this issue. 



<item mwstims>
/ 1 ="|FLYWHEELS

|Flywheels |are |one |of |the |oldest |mechanical |devices |known |to |man. |"

/ 2 = "|One |type |of |flywheel |consists |of |round |sandwiches |"
</item>


<text mwstims>
/ items = mwstims
</text>


**************************************************************************************************************
**************************************************************************************************************
LISTS
**************************************************************************************************************
**************************************************************************************************************

**************************************************************************************************************
List Elements (Item Selection)
Adapt as needed by modifying the settings in the '/ select' attribute.
**************************************************************************************************************
<list mwstims>
/ items = (1, 2)
/ selectionmode = sequence
</list>


TRIALS


<trial getstim>
/ ontrialbegin = [
if(list.mwstims.unselectedcount==0)
values.stopblock=1;

values.inputstring=getitem(text.mwstims, list.mwstims.nextvalue);
values.maskstring=values.inputstring;

list.uppercase.reset();
list.lowercase.reset();
expressions.maskuppercase;
expressions.masklowercase;
values.maskstringhl=values.maskstring;
expressions.maskuppercasehl;
expressions.masklowercasehl;

values.wincount=0;
values.winstart=0;
values.winend=0;
]
/ validresponse = (noresponse)
/ trialduration = 0
/ branch = [trial.MWtrial]
/ recorddata = false
</trial>


<trial MWtrial>
/ ontrialbegin = [expressions.movingwindow]
/ stimulusframes = [1=background, mywindow, mywindowhl]
/ validresponse = (57)
/ branch = [if(values.winend==expressions.inputend)trial.getstim else trial.MWtrial]
</trial>


BLOCKS

<block cumulative>
/ preinstructions = (cumulative)
/ onblockbegin = [
parameters.cumulative=true;
list.mwstims.reset();
]
/ stop = [values.stopblock==1]
/ trials = [1=getstim]
/ onblockend = [values.stopblock=0]
</block>

**************************************************************************************************************
Noncumulative Moving Window Condition
**************************************************************************************************************

<block noncumulative>
/ preinstructions = (noncumulative)
/ onblockbegin = [
parameters.cumulative=false;
list.mwstims.reset();
]
/ stop = [values.stopblock==1]
/ trials = [1=getstim]
/ onblockend = [values.stopblock=0]
</block>

**************************************************************************************************************
**************************************************************************************************************
EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt MovingWindow>
/ preinstructions = (intro)
/ postinstructions = (end)
/ blocks = [1=cumulative; 2=noncumulative]
/onexptend = [values.completed = 1]
</expt>

**************************************************************************************************************
End of File

By Dave - 8/6/2018

azizaltamimi - Monday, August 6, 2018
Hello guys, 
 I managed to add a rest in my Lexical judgement task by running a different <trial> in a an assigned <block>. However, I am still struggling into how to modify the existing script for self paced reading, such that it would allow a rest break  after a particular item number. I would really appreciate if you can help me with this issue. 



<item mwstims>
/ 1 ="|FLYWHEELS

|Flywheels |are |one |of |the |oldest |mechanical |devices |known |to |man. |"

/ 2 = "|One |type |of |flywheel |consists |of |round |sandwiches |"
</item>


<text mwstims>
/ items = mwstims
</text>


**************************************************************************************************************
**************************************************************************************************************
LISTS
**************************************************************************************************************
**************************************************************************************************************

**************************************************************************************************************
List Elements (Item Selection)
Adapt as needed by modifying the settings in the '/ select' attribute.
**************************************************************************************************************
<list mwstims>
/ items = (1, 2)
/ selectionmode = sequence
</list>


TRIALS


<trial getstim>
/ ontrialbegin = [
if(list.mwstims.unselectedcount==0)
values.stopblock=1;

values.inputstring=getitem(text.mwstims, list.mwstims.nextvalue);
values.maskstring=values.inputstring;

list.uppercase.reset();
list.lowercase.reset();
expressions.maskuppercase;
expressions.masklowercase;
values.maskstringhl=values.maskstring;
expressions.maskuppercasehl;
expressions.masklowercasehl;

values.wincount=0;
values.winstart=0;
values.winend=0;
]
/ validresponse = (noresponse)
/ trialduration = 0
/ branch = [trial.MWtrial]
/ recorddata = false
</trial>


<trial MWtrial>
/ ontrialbegin = [expressions.movingwindow]
/ stimulusframes = [1=background, mywindow, mywindowhl]
/ validresponse = (57)
/ branch = [if(values.winend==expressions.inputend)trial.getstim else trial.MWtrial]
</trial>


BLOCKS

<block cumulative>
/ preinstructions = (cumulative)
/ onblockbegin = [
parameters.cumulative=true;
list.mwstims.reset();
]
/ stop = [values.stopblock==1]
/ trials = [1=getstim]
/ onblockend = [values.stopblock=0]
</block>

**************************************************************************************************************
Noncumulative Moving Window Condition
**************************************************************************************************************

<block noncumulative>
/ preinstructions = (noncumulative)
/ onblockbegin = [
parameters.cumulative=false;
list.mwstims.reset();
]
/ stop = [values.stopblock==1]
/ trials = [1=getstim]
/ onblockend = [values.stopblock=0]
</block>

**************************************************************************************************************
**************************************************************************************************************
EXPERIMENT
**************************************************************************************************************
**************************************************************************************************************

<expt MovingWindow>
/ preinstructions = (intro)
/ postinstructions = (end)
/ blocks = [1=cumulative; 2=noncumulative]
/onexptend = [values.completed = 1]
</expt>

**************************************************************************************************************
End of File


Not sure what you mean by "after specific item number" -- I assume you mean after X amount of items (e.g. half). What you do is create a variable (a <values> entry) to count the trials.

<values>
/ trialcount = 0
</values>

Increase it by one in /ontrialbegin in <trial getstim>

<trial getstim>
/ ontrialbegin = [values.trialcount += 1]
...
</trial>

Then create a "break" trial

<trial break>
/ stimulsframes = [1=breaktext]
/ validresponse = (57)
/ branch = [trial.getstim]
</trial>

<text breaktext>
/ items = ("Take a break")
</text>

and then /branch to the break trial as needed from <trial mwstim>

<trial MWtrial>
/ ontrialbegin = [expressions.movingwindow]
/ stimulusframes = [1=background, mywindow, mywindowhl]
/ validresponse = (57)
/ branch = [if(values.winend==expressions.inputend && values.trialcount == 5)trial.breaktrial]
/ branch = [if(values.winend==expressions.inputend)trial.getstim else trial.MWtrial]
</trial>

The above would run a break after 5 trials.

By azizaltamimi - 8/6/2018

Thank you so much Dave for your kind reply and informative instructions. I followed your kind instructions and it worked fine when I tried it for  the simple self-paced reading version posted in the website . 
1.) However, when I tried to follow the same instructions using my modified version of the script, the break text appears in the middle of trial, instead of being post it (as shown by the pic attached it was overwritten in the trial). Do you think it is because the trial are  passages and not single sentences. 
2.) Also, after branching the break trial from MWtrial, the questions that use to appear after the sentences disappeared. I think it has something to do with the fact that questiontrial  branched from the MWtrial too. 
Attached is my script, and I would really appreciate your time and advice on how to solve this issue, Dave. 


By Dave - 8/6/2018

azizaltamimi - Monday, August 6, 2018
Thank you so much Dave for your kind reply and informative instructions. I followed your kind instructions and it worked fine when I tried it for  the simple self-paced reading version posted in the website . 
1.) However, when I tried to follow the same instructions using my modified version of the script, the break text appears in the middle of trial, instead of being post it (as shown by the pic attached it was overwritten in the trial). Do you think it is because the trial are  passages and not single sentences. 
2.) Also, after branching the break trial from MWtrial, the questions that use to appear after the sentences disappeared. I think it has something to do with the fact that questiontrial  branched from the MWtrial too. 
Attached is my script, and I would really appreciate your time and advice on how to solve this issue, Dave. 



If you inserted another trial (here: the question trial), then that's where the /branch logic for the break ought to reside. To clear the screen during the break, use clearscreen in the break trial's /stimulusframes. See attached.