participants´ control over video repetition


Author
Message
rouge
rouge
Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)
Group: Forum Members
Posts: 32, Visits: 73
Dear all,

for an experiment I would like to design a program that consisits of two blocks.
The first block consists of video presentation followed by a question the participant is asked to answer.
Within a second block - the participant is again presented videos - but this time - the participant shall be allowed to watch the video as often es he/she wants. After the participant decides that he has watched the video often enough he shall be forwarded to the same question as in block one.
I interpreted "repetetion" as wrong answer, and "non repetetion" as correct answer. The aim was to program the trial in a way that as soon as the participant gives the "correct" answer - the repetition of the video scene stops and the question appears. However, I am not sure about the "name tag" of my branch. I tried it with "correctstreak" but that does not work. 
Does anybody know the solution to this problem? thank you very very much in advance!


experimental trial without repetition

<trial playvideo_kein_Tor>
/ stimulustimes = [0=fixation; 1000 = Videos_kein_Tor]
/ timeout = 10
/ validresponse = (noresponse)
/ branch = [trial.showquestionaboutmyvideo]
</trial>

<trial playvideo_Tor>
/ stimulustimes = [0=fixation; 1000 = Videos_Tor]
/ timeout = 10
/ validresponse = (noresponse)
/ branch = [trial.showquestionaboutmyvideo]
</trial>

<trial showquestionaboutmyvideo>
/ stimulustimes = [0=Entscheidung_Manipulation; 0=Zeichen_Tor; 0=Zeichen_Tor_II; 0=Zeichen_kein_Tor; 0=Zeichen_kein_Tor_II]
/ validresponse = ("a", "l")
/ correctresponse = ("a", "l")
</trial>

<block experimentblock_ohne_wiederholung>
/ trials = [1 - 44=noreplace(playvideo_kein_Tor, playvideo_Tor)]
</block>




Experimental-Block with repetition

<trial repeat_trial>
/ stimulustimes = [0=Entscheidung_Wiederholung; 0=Zeichen_Wiederholung; 0=Zeichen_Wiederholung_II; 0=Zeichen_keine_Wiederholung; 0=Zeichen_keine_Wiederholung_II]
/ validresponse = ("a", "l")
/ correctresponse = ("a")
/ branch =  [if (trial.mytrial.correctstreak = 1) trial.showquestionaboutmyvideo]
/ branch =  [if (trial.mytrial.correctstreak < 1) trial.repeat_trial]
</trial>

<block experimentblock_mit_wiederholung>
/ trials = [1 - 44=noreplace(playvideo_kein_Tor, playvideo_Tor)]
</block>


<expt>
/blocks=[1=testblock; 2=experimentblock_ohne_wiederholung; 3=experimentblock_mit_wiederholung; 4=Fußballerfahrung; 5=soccerexperience; 6=demographics]
/postinstructions = (thank_you)
</expt>




Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 104K
I'm not sure why you would want or need correctstreak here  Also,

trial.mytrial.correctstreak

doesn't seem to make any sense as there is no <trial> element called "mytrial" in your code. Finally, you are not using the proper operators in your /branch conditions. '=' is the *assignment* operator, what you need, however, is the *logical* operator '=='.

Simply have the trial /branch according to either the trial's response or correct property. Here's an example using <text> elements instead of <video> (it works the same when using <video> stimuli):

<text repeat_question>
/ items = ("Press L to repeat the video. Press A to move on.")
</text>

<text question_about_video>
/ items = ("Imagine question about the video here...")
</text>

<values>
/ kein_tor_item = 1
/ tor_item = 1
</values>

<text Videos_kein_Tor>
/ items = ("Kein Tor 1", "Kein Tor 2", "Kein Tor 3", "Kein Tor 4")
/ select = values.kein_tor_item
</text>

<list kein_tor>
/ poolsize = 4
</list>

<text Videos_Tor>
/ items = ("Tor 1", "Tor 2", "Tor 3", "Tor 4")
/ select = values.tor_item
</text>

<list tor>
/ poolsize = 4
</list>

<trial playvideo_kein_Tor>
/ ontrialbegin = [if (trial.repeat_kein_tor.response!=38) values.kein_tor_item=list.kein_tor.nextindex]
/ stimulustimes = [0=Videos_kein_Tor]
/ timeout = 1000
/ validresponse = (noresponse)
/ branch = [if(script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_kein_Tor else trial.showquestionaboutmyvideo]
</trial>

<trial repeat_kein_Tor>
/ stimulusframes = [1=repeat_question]
/ validresponse = (30,38)
/ branch = [if(trial.repeat_kein_tor.response==30) trial.showquestionaboutmyvideo else trial.playvideo_kein_tor]
</trial>

<trial playvideo_Tor>
/ ontrialbegin = [if (trial.repeat_tor.response!=38) values.tor_item=list.tor.nextindex]
/ stimulustimes = [0=Videos_Tor]
/ timeout = 1000
/ validresponse = (noresponse)
/ branch = [if(script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_Tor else trial.showquestionaboutmyvideo]
</trial>

<trial repeat_Tor>
/ stimulusframes = [1=repeat_question]
/ validresponse = (30,38)
/ branch = [if(trial.repeat_tor.response==30) trial.showquestionaboutmyvideo else trial.playvideo_tor]
</trial>

<trial showquestionaboutmyvideo>
/ stimulustimes = [0=question_about_video]
/ validresponse = ("a", "l")
/ correctresponse = ("a", "l")
</trial>

<block experimentblock_ohne_wiederholung>
/ trials = [1-8=noreplace(playvideo_kein_Tor, playvideo_Tor)]
</block>

<block experimentblock_mit_wiederholung>
/ trials = [1-8=noreplace(playvideo_kein_Tor, playvideo_Tor)]
</block>

<expt>
/blocks=[1=experimentblock_ohne_wiederholung; 2=experimentblock_mit_wiederholung; ]
</expt>


rouge
rouge
Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)
Group: Forum Members
Posts: 32, Visits: 73
Hello Dave,

thank you very much for your kind help. As you might anticipated I am not a "branch-expert" . I tried to derive the elements from the Inquisit 4 Documentation, but still - the branch feature is a big question mark to me.

I am working on it :-) ! Again: Thank you very much!

rouge
rouge
Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)
Group: Forum Members
Posts: 32, Visits: 73
Hello Dave - I have one question in regard to your programmed text. What is the "value" option? Does it count the number of repetitions the participant chooses? Thank you very much in advance for your anser! Best regards.

rouge
rouge
Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)
Group: Forum Members
Posts: 32, Visits: 73
and what does following mean? is that for structuring the values of the repetions? sorry for those questions - still an absolute beginner.

<list kein_tor>
/ poolsize = 4
</list>



Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 104K
A <values> entry is a global variable. In this case, it is used to store an item number. The item number is retrieved from the <list>. Because there are four items in the example code at hand ("Tor 1" to "Tor 4"), the list has a poolsize of 4.

rouge
rouge
Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)
Group: Forum Members
Posts: 32, Visits: 73
Dear Dave, thank you very much for your fast answer! Maybe it´s a language barrier. Or my minor experiences in programming. I am still not understanding why I need the values entry. Or is it just the program which needs this definition?
If I have 50 videos with 25 goals, and 25 no goals - do I have to define the poolsize as "25" ?
Because of your help my program works! Just to make sure - did I oversee any mistakes in my text? Thank you very much in advance for your answer! And best greetings from Germany


Test-Block:

<item test_video_1>
/1="Trialvideo1.mp4"
</item>

<item test_video_2>
/1="Trialvideo2.mp4"
</item>

<video test_video_1>
/ items = test_video_1
/ size = (60%, 60%)
/ playthrough = true
/ valign = center
</video>

<video test_video_2>
/ items = test_video_2
/ size = (60%, 60%)
/ playthrough = true
/ valign = center
</video>

<values>
/ test_video_1_item = 1
/ test_video_2_item = 1
</values>

<list test_video_1_item>
/ poolsize = 1 
</list>

<list test_video_2_item>
/ poolsize = 1 
</list>

<trial playvideo_test_video_1>
/ ontrialbegin = [if (trial.repeat_test_video_1.response!=38) values.test_video_1_item=list.test_video_1_item.nextindex]
/ stimulustimes = [0=fixation; 1000 = test_video_1]
/ timeout = 1000
/ validresponse = (noresponse)
/ branch = [if (script.currentblock=="testblock")trial.repeat_test_video_1 else trial.showquestionaboutmyvideo]
</trial>

<trial repeat_test_video_1>
/stimulusframes=[1=repeat_question]
/validresponse = (30, 38)
/ branch = [if(trial.repeat_test_video_1.response==30) trial.showquestionaboutmyvideo else trial.playvideo_test_video_1]
</trial>

<trial playvideo_test_video_2>
/ ontrialbegin = [if (trial.repeat_test_video_2.response!=38) values.test_video_2_item=list.test_video_2_item.nextindex]
/ stimulustimes = [0=fixation; 1000 = test_video_2]
/ timeout = 1000
/ validresponse = (noresponse)
/ branch = [if (script.currentblock=="testblock")trial.repeat_test_video_2 else trial.showquestionaboutmyvideo]
</trial>

<trial repeat_test_video_2>
/stimulusframes=[1=repeat_question]
/validresponse = (30, 38)
/ branch = [if(trial.repeat_test_video_2.response==30) trial.showquestionaboutmyvideo else trial.playvideo_test_video_2]
</trial>

<block testblock>
/ trials = [1-2=noreplace (playvideo_test_video_1, playvideo_test_video_2)]
/ postinstructions = (posttest)
/preinstructions = (Instruktion_1, Instruktion_2, Instruktion_3, Instruktion_4)
</block>


Experimental-Block

<video Videos_kein_Tor>
/ items = Videos_kein_Tor
/ size = (60%, 60%)
/ playthrough = true
/ valign = center
/ select = values.kein_tor_item
</video>

<video Videos_Tor>
/ items = Videos_Tor
/ size = (60%, 60%)
/ playthrough = true
/ valign = center
/ select = values.tor_item
</video>

<values>
/ kein_tor_item = 1
/ tor_item = 1
</values>

<list kein_tor>
/ poolsize = 25
</list>

<list tor>
/ poolsize = 25
</list>

<trial playvideo_kein_Tor>
/ ontrialbegin = [if (trial.repeat_kein_Tor.response!=38) values.kein_tor_item=list.kein_tor.nextindex]
/ stimulustimes = [0=fixation; 1000 = Videos_kein_Tor]
/ timeout = 1000
/ validresponse = (noresponse)
/ branch = [if (script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_kein_Tor else trial.showquestionaboutmyvideo]
</trial>

<trial repeat_kein_Tor>
/stimulusframes=[1=repeat_question]
/validresponse = (30, 38)
/ branch = [if(trial.repeat_kein_tor.response==30) trial.showquestionaboutmyvideo else trial.playvideo_kein_tor]
</trial>

<trial playvideo_Tor>
/ ontrialbegin = [if (trial.repeat_tor.response!=38) values.tor_item=list.tor.nextindex]
/ stimulustimes = [0=Videos_Tor]
/ timeout = 1000
/ validresponse = (noresponse)
/ branch = [if(script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_Tor else trial.showquestionaboutmyvideo]
</trial>

<trial repeat_Tor>
/ stimulusframes = [1=repeat_question]
/ validresponse = (30,38)
/ branch = [if(trial.repeat_tor.response==30) trial.showquestionaboutmyvideo else trial.playvideo_tor]
</trial>

<trial showquestionaboutmyvideo>
/ stimulustimes = [0=Entscheidung_Manipulation; 0=Zeichen_Tor; 0=Zeichen_Tor_II; 0=Zeichen_kein_Tor; 0=Zeichen_kein_Tor_II]
/ validresponse = ("a", "l")
/ correctresponse = ("a", "l")
</trial>

<block experimentblock_mit_wiederholung>
/ trials = [1 - 5=noreplace(playvideo_kein_Tor, playvideo_Tor)]
</block>

<expt>
/blocks=[1=testblock; 2=experimentblock_mit_wiederholung; 3=Fußballerfahrung; 4=soccerexperience; 5=demographics]
/postinstructions = (thank_you)
</expt>


Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 104K
You need the variables (<values> entries) because you must prevent a *new / different* item from being selected *if* a participant responds with "repeat". That's what the /ontrialbegin logic ensures. Only if the response was *not repeat* a new item number is selected from the respective <list>. And yes, if you have 25 items per category ("Tor" and "Kein Tor"), the poolsize needs to be 25.

rouge
rouge
Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)
Group: Forum Members
Posts: 32, Visits: 73
Ah great! Thank you very much for the explanation! All the best!

rouge
rouge
Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)Distinguished Member (3.4K reputation)
Group: Forum Members
Posts: 32, Visits: 73
Dear Dave, in regard to my experiment there is one little mistake I cannot solve.
After each video presentation the participant can decide weather to repeat the video or not. As soon as the participants does not want to see the video again, he/she decides about the video outcome.
If the participant does not want to repeat the video, she/he can immediately can jump to the decision outcome.
What I tried is following: I always jumped directly to the decision task and always decided for a "goal". After some videos, however, the programm starts to repeat the same video as long as I decide for "goal" until I decide for "no-goal".
By any chance, do you know what I did program wrong?
Thank you very much in advance for your answer!
Best greetings!


Experimental-Block

<video Videos_kein_Tor>
/ items = Videos_kein_Tor
/ size = (60%, 60%)
/ playthrough = true
/ valign = center
/ select = values.kein_tor_item
</video>

<video Videos_Tor>
/ items = Videos_Tor
/ size = (60%, 60%)
/ playthrough = true
/ valign = center
/ select = values.tor_item
</video>

<values>
/ kein_tor_item = 24
/ tor_item = 24
</values>

<list kein_tor>
/ poolsize = 24
</list>

<list tor>
/ poolsize = 24
</list>

<trial playvideo_kein_Tor>
/ ontrialbegin = [if (trial.repeat_kein_Tor.response!=38) values.kein_tor_item=list.kein_tor.nextindex]
/ stimulustimes = [0=fixation; 1000 = Videos_kein_Tor]
/ timeout = 1000
/ validresponse = (noresponse)
/ branch = [if (script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_kein_Tor else trial.showquestionaboutmyvideo_kein_Tor]
</trial>

<trial repeat_kein_Tor>
/stimulusframes=[1=repeat_question; 1=Zeichen_Wiederholung; 1=Zeichen_Wiederholung_II; 1=Zeichen_keine_Wiederholung; 1=Zeichen_keine_Wiederholung_II]
/validresponse = (30, 38)
/ branch = [if(trial.repeat_kein_tor.response==30) trial.showquestionaboutmyvideo_kein_Tor else trial.playvideo_kein_Tor]
</trial>

<trial playvideo_Tor>
/ ontrialbegin = [if (trial.repeat_tor.response!=38) values.tor_item=list.tor.nextindex]
/ stimulustimes = [0=fixation; 1000 = Videos_kein_Tor]
/ timeout = 1000
/ validresponse = (noresponse)
/ branch = [if(script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_Tor else trial.showquestionaboutmyvideo_Tor]
</trial>

<trial repeat_Tor>
/ stimulusframes = [1=repeat_question; 1=Zeichen_Wiederholung; 1=Zeichen_Wiederholung_II; 1=Zeichen_keine_Wiederholung; 1=Zeichen_keine_Wiederholung_II]
/ validresponse = (30,38)
/ branch = [if(trial.repeat_tor.response==30) trial.showquestionaboutmyvideo_Tor else trial.playvideo_tor]
</trial>

<trial showquestionaboutmyvideo_kein_Tor>
/ stimulustimes = [0=Entscheidung_Manipulation; 0=Zeichen_Tor; 0=Zeichen_Tor_II; 0=Zeichen_kein_Tor; 0=Zeichen_kein_Tor_II]
/ validresponse = (30, 38)
/ correctresponse = (38)
</trial>

<trial showquestionaboutmyvideo_Tor>
/ stimulustimes = [0=Entscheidung_Manipulation; 0=Zeichen_Tor; 0=Zeichen_Tor_II; 0=Zeichen_kein_Tor; 0=Zeichen_kein_Tor_II]
/ validresponse = (30, 38)
/ correctresponse = (30)
</trial>

<block experimentblock_mit_wiederholung>
/ trials = [1 - 20=noreplace(playvideo_kein_Tor, playvideo_Tor)]
</block>

<expt>
/blocks=[1=testblock; 2=experimentblock_mit_wiederholung; 3=Fußballerfahrung; 4=soccerexperience; 5=demographics]
/postinstructions = (thank_you)
</expt>

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search