OK. To do this you need a two-loop arrangement. Presumably you currently have a loop that is connected to your conditions file and that gets a variable from that file that I’ll call
sentence. i.e. this loop will run once per trial, presenting one sentence. Insert another loop inside that trial loop. This will run once per word (i.e. multiple times per trial). Below I’ll refer to this loop as being named
word_loop. Give this loop an
nReps number that will safely exceed the number of words in any possible sentence (e.g.
Insert two text stimuli in your trial routine. One contains just a space character and is set to display from t == 0.3s until t == 0.5 s (i.e. to be your blank inter-stimulus interval).
The other is the one to display the word. Set it to last from 0 to 0.3 s and to contain a variable called, say,
$current_word, set to update on every repeat.
Above the text components, insert a code component. In its “begin routine” tab, put something like this:
# at the beginning of each trial, extract the
# individual words:
if word_loop.thisN == 0:
word_list = sentence.split()
num_words = len(word_list)
# check if the sentence has ended. If so,
# go on to the next trial
if word_loop.thisN == num_words:
word_loop.finished = True
continueRoutine = False
else: # display this word:
current_word = word_list[word_loop.thisN]
I don’t know how you want to save your data. If you want a row of data associated with each word, make sure that
Is trials selected. If you want just one row of data per trial, de-select that.