Libet Clock


Author
Message
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: 109K
> I have doubled the amount of clockfaces as a test, their required values, and entered them as /stimulus times

Yes, but you are not actually setting those values:

<trial AudioP>
/ ontrialbegin = [values.c1item = list.libetframes.nextindex; values.c2item = list.libetframes.nextindex; values.c3item = list.libetframes.nextindex; values.c4item = list.libetframes.nextindex; values.c5item = list.libetframes.nextindex]
/ ontrialend = [values.rotationcount += 6]
...
</trial>

You stop with values.c5item (i.e., the 5th clock face). You have forgotten to set values.c6item to values.c10item -- which are responsible for displaying the proper 6th to 10th clock face in the trial. You've also forgotten to adjust the rotationcount increase accordingly. To sum up:

<trial AudioP>
/ ontrialbegin = [values.c1item = list.libetframes.nextindex;
    values.c2item = list.libetframes.nextindex;
    values.c3item = list.libetframes.nextindex;
    values.c4item = list.libetframes.nextindex;
    values.c5item = list.libetframes.nextindex;
    values.c6item = list.libetframes.nextindex;
    values.c7item = list.libetframes.nextindex;
    values.c8item = list.libetframes.nextindex;
    values.c9item = list.libetframes.nextindex;
    values.c10item = list.libetframes.nextindex;
    ]
/ ontrialend = [values.rotationcount += 10]
/ stimulustimes = [0 = possounds, clock1; 50 = clock2; 100 = clock3; 150 = clock4; 200 = clock5; 250 = clock6; 300 = clock7; 350 = clock8; 400 = clock9; 450 = clock10]
/ validresponse = (0)
/ trialduration = 500
/ branch = [if (values.rotationcount < values.keep_rotating_for_n_trials) {trial.rotateP} else {trial.postlibetP}]
</trial>

is what the <trial> ought to look like.

Beyond that, the AudioP trial is *still* too short to accommodate some of your sounds: They are *longer* than 500ms (see e.g. "FemLaugh.wav" which lasts close to a second). You either need to extend the <trial> further or allow it to terminate the sound early by setting

<sound possounds>
/items = possounds
/playthrough = false
</sound>


Psych_Josh
Psych_Josh
Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)
Group: Forum Members
Posts: 85, Visits: 397
Hi Dave,

Sorry - I was mistaken, I thought you had put:
/branch = [if (values.rotationcount < values.keep_rotating_for_n_trials) {trial.AudioP} else {trial.RotateP}]

as the solution, not the issue causing the problem. The multiple sounds issue has been resolved, thank you!

I have doubled the amount of clockfaces as a test, their required values, and entered them as /stimulus times, but a strange effect occurs:
The sound is still played at the same point it was anyway before the additional clockfaces, and the dot rapidly moves to, and stops at, the top-most clockface point (where 0/60 would be), before reversing back to where it was previously when the sound was played, and then carrying on forward for the remaining time. 

I have attached the script - thanks a lot for your time - I confess this current task was, in hindsight, probably beyond my current Inquisit ability.
Thanks again,
Josh
Attachments
Study 3.zip (435 views, 2.00 MB)
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: 109K
If you are still stuck, do the following: Put the current revision of your script as well as all the other files it requires (images, sound files) in a ZIP archive and attach it to this thread. I can then fix the remaining issues (there shouldn't be many) for you.

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: 109K
> I actually meant to say the dot, not the trial, stops half-way through the sound.

Comes down to not quite the same, but a similar thing:
- The trial is too short. Make it as long as your sound lasts plus a little bit.
- Increase the number of clock faces you display during the trial. If your sound lasts, say, 400ms, you need to set up additional clock face stimuli and display them via /stimulustimes just like the ones that are already there.

> On noticing the second error, I tried that exact same fix myself, but alas this didn't fix either of the errors I mentioned previously.

I'm having trouble believing that (no offense intended).

<trial RotateP>
/ontrialbegin = [values.rotationcount += 1; values.c1item = list.libetframes.nextindex]
/stimulustimes = [1 = libetclock]
/validresponse = (0)
/trialduration = 50
/ branch = [if (values.rotatecount == values.beep) trial.AudioP]
/branch = [if (values.rotationcount < values.keep_rotating_for_n_trials) trial.rotateP else trial.postlibetp]
/recorddata = false
</trial> 

The first /branch will invoke <trial AudioP> if -- and only if -- the rotationcount is equal to values.beep (i.e., the chosen delay).

<trial AudioP>
/ ontrialend = [values.rotationcount += 6]
...
/ branch = [if (values.rotationcount < values.keep_rotating_for_n_trials) trial.rotateP else trial.postlibetP]
</trial>

<trial AudioP> displays the sound and then goes back to trial.rotateP if -- and only if -- the randomly chosen amount of post-response-rotations has not been completed yet. Critically, <trial AudioP> increases the rotation count by the number of clock faces displayed during <trial AudioP>. That means when <trial rotateP> is invoked again

<trial RotateP>
/ontrialbegin = [values.rotationcount += 1; values.c1item = list.libetframes.nextindex]
/stimulustimes = [1 = libetclock]
/validresponse = (0)
/trialduration = 50
/ branch = [if (values.rotatecount == values.beep) trial.AudioP]
/branch = [if (values.rotationcount < values.keep_rotating_for_n_trials) trial.rotateP else trial.postlibetp]
/recorddata = false
</trial>

the 1st /branch *cannot* fire again. The rotation count is not equal to values.beep anymore. Instead the 2nd /branch applies, i.e., <trial rotateP> is looped until the selected amount of post-response-rotations is reached. Once it has been reached, <trial postlibetP> is invoked.

Psych_Josh
Psych_Josh
Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)
Group: Forum Members
Posts: 85, Visits: 397
Hi Dave,

No worries. I apologise - I actually meant to say the dot, not the trial, stops half-way through the sound. The sound will play, the dot continues briefly, but stops before the sound ends.

On noticing the second error, I tried that exact same fix myself, but alas this didn't fix either of the errors I mentioned previously.

Sorry for taking up so much of your time on this!
Josh
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: 109K
NOTE: I accidentally deleted your last post. Sorry about that. My response to that now missing post is below:

> 1 - The trial stops around half-way through sound, instead.

Then your trial is not long enough. You've set it to 250ms. If your sounds are longer than that, you need to extend it.

> 2 - Multiple sounds (or trials) are now played in succession, randomly between 4-7, before the whole sequence transitions to
> postLibetP.

The 2nd /branch is wrong

<trial RotateP>
/ontrialbegin = [values.rotationcount += 1; values.c1item = list.libetframes.nextindex]
/stimulustimes = [1 = libetclock]
/validresponse = (0)
/trialduration = 50
/branch = [if (values.rotationcount == values.beep) trial.AudioP]
/branch = [if (values.rotationcount < values.keep_rotating_for_n_trials) {trial.AudioP} else {trial.RotateP}]
/recorddata = false
</trial>

and will invoke <trial AudioP> repeatedly. Note that in the example I gave you, the /branch reads differently:

<trial RotateP>
/ontrialbegin = [values.rotationcount += 1; values.c1item = list.libetframes.nextindex]
/stimulustimes = [1 = libetclock]
/validresponse = (0)
/trialduration = 50
/ branch = [if (values.rotatecount == values.beep) trial.AudioP]
/branch = [if (values.rotationcount < values.keep_rotating_for_n_trials) trial.rotateP else trial.postlibetp]
/recorddata = false
</trial>                               

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: 109K
WARNING: A proper implementation should look something along the following lines. BUT: Since I don't have your stimuli, etc. I cannot test this.

<values>
/completed = 0
/intervalestimation = 0
/currentlistnumber = 0
</values>

<values>
/onset = 0
</values>

<values>
/sound = 0
</values>

<values>
/keep_rotating_for_n_trials = 0
/rotationcount = 0
/beep = 5
</values>

<list targetduration>
/items = (100, 200, 300, 400, 500, 600, 700, 800, 900)
/replace = false
</list>

<list targetdurationh>
/items = (100, 400, 700)
/poolsize = 42
/replace = false
</list>

<list targetdurations>
/items = (100, 400, 700)
/poolsize = 42
/replace = false
</list>

<list libetframes>
/selectionmode = sequence
/ selectionrate = always
/poolsize = 24
</list>

*******************************************************************************************************************
*******************************************************************************************************************
STIMULI
*******************************************************************************************************************
*******************************************************************************************************************

**********
Clock
**********

<item libetclock>
/1 = "Libet_clock1.jpg"
/2 = "Libet_clock2.jpg"
/3 = "Libet_clock3.jpg"
/4 = "Libet_clock4.jpg"
/5 = "Libet_clock5.jpg"
/6 = "Libet_clock6.jpg"
/7 = "Libet_clock7.jpg"
/8 = "Libet_clock8.jpg"
/9 = "Libet_clock9.jpg"
/10 = "Libet_clock10.jpg"
/11 = "Libet_clock11.jpg"
/12 = "Libet_clock12.jpg"
/13 = "Libet_clock13.jpg"
/14 = "Libet_clock14.jpg"
/15 = "Libet_clock15.jpg"
/16 = "Libet_clock16.jpg"
/17 = "Libet_clock17.jpg"
/18 = "Libet_clock18.jpg"
/19 = "Libet_clock19.jpg"
/20 = "Libet_clock20.jpg"
/21 = "Libet_clock21.jpg"
/22 = "Libet_clock22.jpg"
/23 = "Libet_clock23.jpg"
/24 = "Libet_clock24.jpg"
</item>

<picture libetclock>
/items = libetclock
/position = (50, 50)
/select = values.c1item
/erase = false
</picture>

**********
Sounds
**********

<item possounds>
/1 = "FemCheer.wav"
/2 = "FemLaugh.wav"
/3 = "MaleCheer.wav"
/4 = "MaleLaugh.wav"
</item>

<sound possounds>
/items = possounds
/playthrough = true
</sound>

**********
Extra stimuli:
**********

<text cross>
/items = ("+")
/color = (0,0,0)
</text>

*******************************************************************************************************************
*******************************************************************************************************************
TRIALS
*******************************************************************************************************************
*******************************************************************************************************************
<values>
/c1item = 1
/c2item = 1
/c3item = 1
/c4item = 1
/c5item = 1
</values>

<picture clock1>
/ items = libetclock
/ select = values.c1item
/ erase = false
</picture>

<picture clock2>
/ items = libetclock
/ select = values.c2item
/ erase = false
</picture>

<picture clock3>
/ items = libetclock
/ select = values.c3item
/ erase = false
</picture>

<picture clock4>
/ items = libetclock
/ select = values.c4item
/ erase = false
</picture>

<picture clock5>
/ items = libetclock
/ select = values.c5item
/ erase = false
</picture>

*********
Libet trials - Positive sounds
*********
<trial positive>
/ontrialbegin = [{values.c1item = list.libetframes.nextindex}]
/ontrialbegin = [values.keep_rotating_for_n_trials = round(rand(20,50)); values.rotationcount = 0]
/stimulustimes = [0 = cross; 500 = libetclock]
/correctresponse = (" ")
/pretrialpause = 500
/trialduration = 1050
/branch = [trial.LibetP]
/recorddata = false
</trial>

<trial LibetP>
/ontrialbegin = [values.c1item = list.libetframes.nextindex]
/stimulustimes = [1 = libetclock]
/correctresponse = (57)
/trialduration = 50
/branch = [if (trial.LibetP.response == 57) {trial.rotateP} else {trial.LibetP}]
/recorddata = false
/ontrialend = [values.sound = sound.possounds.currentitem]
/ontrialend = [values.onset = values.c1item]
</trial>

<trial RotateP>
/ontrialbegin = [values.rotationcount += 1; values.c1item = list.libetframes.nextindex]
/stimulustimes = [1 = libetclock]
/validresponse = (0)
/trialduration = 50
/ branch = [if (values.rotatecount == values.beep) trial.AudioP]
/branch = [if (values.rotationcount < values.keep_rotating_for_n_trials) trial.rotateP else trial.postlibetp]
/recorddata = false
</trial>

<trial AudioP>
/ ontrialbegin = [values.c1item = list.libetframes.nextindex; values.c2item = list.libetframes.nextindex; values.c3item = list.libetframes.nextindex; values.c4item = list.libetframes.nextindex; values.c5item = list.libetframes.nextindex; values.c5item = list.libetframes.nextindex; ]
/ ontrialend = [values.rotationcount += 6]
/ stimulustimes = [0 = possounds, clock1; 50 = clock2; 100 = clock3; 150 = clock4; 200 = clock5]
/ validresponse = (0)
/ trialduration = 250
/ branch = [if (values.rotationcount < values.keep_rotating_for_n_trials) trial.rotateP else trial.postlibetP]
</trial>

<trial postLibetP>
/stimulustimes = [1 = cross]
/trialduration = 500
/branch = [surveypage.tep]
/recorddata = false
</trial>

Psych_Josh
Psych_Josh
Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)
Group: Forum Members
Posts: 85, Visits: 397
Hi Dave,

Thanks for your help! I had a bit of trouble implementing your example into my script (I need these specific sounds as the length that they are) - It runs without errors, but the clock face (i.e. trial) still pauses whilst the sound is played, and don't carry on afterwards, and the text name appears in front of the clock (although this is probably because they are text items in your example). I apologise if I made some glaring errors in my translation. I have acquired the correct stimuli, so I've added those in, which are positive and negative sounds. I've pasted the script below with just the positive sounds to share what I managed to do (or not do, as is the case):

<values>
/completed = 0
/intervalestimation = 0
/currentlistnumber = 0
</values>

<values>
/onset = 0
</values>

<values>
/sound = 0
</values>

<values>
/keep_rotating_for_n_trials = 0
/rotationcount = 0
/beep = 5
</values>

<list targetduration>
/items = (100, 200, 300, 400, 500, 600, 700, 800, 900)
/replace = false
</list>

<list targetdurationh>
/items = (100, 400, 700)
/poolsize = 42
/replace = false
</list>

<list targetdurations>
/items = (100, 400, 700)
/poolsize = 42
/replace = false
</list>

<list libetframes>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
/selectionmode = sequence
/poolsize = 24
</list>

*******************************************************************************************************************
*******************************************************************************************************************
STIMULI
*******************************************************************************************************************
*******************************************************************************************************************

**********
Clock
**********

<item libetclock>
/1 = "Libet_clock1.jpg"
/2 = "Libet_clock2.jpg"
/3 = "Libet_clock3.jpg"
/4 = "Libet_clock4.jpg"
/5 = "Libet_clock5.jpg"
/6 = "Libet_clock6.jpg"
/7 = "Libet_clock7.jpg"
/8 = "Libet_clock8.jpg"
/9 = "Libet_clock9.jpg"
/10 = "Libet_clock10.jpg"
/11 = "Libet_clock11.jpg"
/12 = "Libet_clock12.jpg"
/13 = "Libet_clock13.jpg"
/14 = "Libet_clock14.jpg"
/15 = "Libet_clock15.jpg"
/16 = "Libet_clock16.jpg"
/17 = "Libet_clock17.jpg"
/18 = "Libet_clock18.jpg"
/19 = "Libet_clock19.jpg"
/20 = "Libet_clock20.jpg"
/21 = "Libet_clock21.jpg"
/22 = "Libet_clock22.jpg"
/23 = "Libet_clock23.jpg"
/24 = "Libet_clock24.jpg"
</item>

<picture libetclock>
/items = libetclock
/position = (50, 50)
/select = list.libetframes.currentvalue
/erase = false
</picture>

**********
Sounds
**********

<item possounds>
/1 = "FemCheer.wav"
/2 = "FemLaugh.wav"
/3 = "MaleCheer.wav"
/4 = "MaleLaugh.wav"
</item>

<sound possounds>
/items = possounds
/playthrough = true
</sound>

**********
Extra stimuli:
**********

<text cross>
/items = ("+")
/color = (0,0,0)
</text>

*******************************************************************************************************************
*******************************************************************************************************************
TRIALS
*******************************************************************************************************************
*******************************************************************************************************************
<values>
/c1item = 1
/c2item = 1
/c3item = 1
/c4item = 1
/c5item = 1
/delay = 4
</values>

<text clock1>
/ items = libetclock
/ select = values.c1item
/ erase = false
</text>

<text clock2>
/ items = libetclock
/ select = values.c2item
/ erase = false
</text>

<text clock3>
/ items = libetclock
/ select = values.c3item
/ erase = false
</text>

<text clock4>
/ items = libetclock
/ select = values.c4item
/ erase = false
</text>

<text clock5>
/ items = libetclock
/ select = values.c5item
/ erase = false
</text>

*********
Libet trials - Positive sounds
*********
<trial positive>
/ontrialbegin = [{values.currentlistnumber = list.libetframes.nextvalue}]
/ontrialbegin = [values.keep_rotating_for_n_trials = round(rand(20,50)); values.rotationcount = 0]
/stimulustimes = [1 = cross; 500 = libetclock]
/correctresponse = (" ")
/pretrialpause = 500
/trialduration = 600
/branch = [trial.LibetP]
/recorddata = false
</trial>

<trial LibetP>
/ontrialbegin = [{values.currentlistnumber = list.libetframes.nextvalue}]
/ontrialbegin = [values.c1item = list.libetframes.nextindex]
/stimulustimes = [1 = libetclock]
/correctresponse = (57)
/trialduration = 50
/branch = [if (trial.LibetP.response == 57) {trial.rotateP} else {trial.LibetP}]
/recorddata = false
/ontrialend = [values.sound = sound.possounds.currentitem]
/ontrialend = [values.onset = list.libetframes.currentvalue]
</trial>

<trial RotateP>
/ontrialbegin = [{values.currentlistnumber = list.libetframes.nextvalue}]
/ontrialbegin = [values.rotationcount += 1; values.c1item = list.libetframes.nextindex]
/stimulustimes = [1 = libetclock]
/validresponse = (0)
/trialduration = 50
/ontrialend = [trial.rotateP.resetstimulusframes(0)]
/branch = [if (values.rotationcount >= values.keep_rotating_for_n_trials) {trial.AudioP} else {trial.rotateP}]
/recorddata = false
</trial>

<trial AudioP>
/ ontrialbegin = [values.c1item = list.libetframes.nextindex; values.c2item = list.libetframes.nextindex; values.c3item = list.libetframes.nextindex; values.c4item = list.libetframes.nextindex; values.c5item = list.libetframes.nextindex; values.c5item = list.libetframes.nextindex; ]
/ ontrialend = [values.rotationcount += 6]
/ stimulustimes = [0 = possounds, clock1; 50 = clock2; 100 = clock3; 150 = clock4; 200 = clock5]
/ validresponse = (0)
/ trialduration = 250
/ branch = [if (values.rotationcount < values.keep_rotating_for_n_trials) trial.rotateP else trial.postlibetP]
</trial>

<trial postLibetP>
/stimulustimes = [1 = cross]
/trialduration = 500
/branch = [surveypage.tep]
/recorddata = false
</trial>

Many thanks in advance,
Josh
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: 109K
To illustrate, here's a quick example implementing the gist of the latter option:

<block myblock>
/ onblockbegin = [systembeep.frequency = 440; systembeep.duration = 300; ]
/ trials = [1-10=start]
</block>

<values>
/ c1item = 1
/ c2item = 1
/ c3item = 1
/ c4item = 1
/ c5item = 1
/ c6item = 1
/ delay = 4
/ keeprotatingfor = 0
/ rotatecount = 0
</values>

<trial start>
/ ontrialbegin = [list.clocksteps.reset(); values.rotatecount = 0; values.keeprotatingfor = round(rand(20,50)); ]
/ stimulusframes = [1=fixation]
/ trialduration = 600
/ branch = [trial.libet]
</trial>

<trial libet>
/ ontrialbegin = [values.c1item = list.clocksteps.nextindex; ]
/ stimulusframes = [1=clock1]
/ trialduration = 60
/ validresponse = (57, -57, 0)
/ branch = [if (trial.libet.response != 0) trial.rotate else trial.libet]
</trial>

<trial rotate>
/ ontrialbegin = [values.c1item = list.clocksteps.nextindex; values.rotatecount += 1; ]
/ stimulusframes = [1=clock1]
/ validresponse = (0)
/ trialduration = 60
/ branch = [if (values.rotatecount == values.delay) trial.audio]
/ branch = [if (values.rotatecount < values.keeprotatingfor) trial.rotate else trial.end]
</trial>

<trial audio>
/ ontrialbegin = [values.c1item = list.clocksteps.nextindex; values.c2item = list.clocksteps.nextindex;
    values.c3item = list.clocksteps.nextindex; values.c4item = list.clocksteps.nextindex;
    values.c5item = list.clocksteps.nextindex; values.c5item = list.clocksteps.nextindex; ]
/ ontrialend = [values.rotatecount += 6]
/ stimulustimes = [0=systembeep, clock1; 60=clock2; 120=clock3; 180=clock4; 240=clock5; 300=clock6]
/ validresponse = (0)
/ trialduration = 360
/ branch = [if (values.rotatecount < values.keeprotatingfor) trial.rotate else trial.end]
</trial>

<trial end>
/ stimulusframes = [1=end]
/ validresponse = (57)
</trial>

<list clocksteps>
/ poolsize = 24
/ selectionmode = sequence
/ selectionrate = always
</list>

<text clock1>
/ items = clockfaceitems
/ select = values.c1item
/ erase = false
</text>

<text clock2>
/ items = clockfaceitems
/ select = values.c2item
/ erase = false
</text>

<text clock3>
/ items = clockfaceitems
/ select = values.c3item
/ erase = false
</text>

<text clock4>
/ items = clockfaceitems
/ select = values.c4item
/ erase = false
</text>

<text clock5>
/ items = clockfaceitems
/ select = values.c5item
/ erase = false
</text>

<text clock6>
/ items = clockfaceitems
/ select = values.c6item
/ erase = false
</text>

<item clockfaceitems>
/ 1 = "01.jpg"
/ 2 = "02.jpg"
/ 3 = "03.jpg"
/ 4 = "04.jpg"
/ 5 = "05.jpg"
/ 6 = "06.jpg"
/ 7 = "07.jpg"
/ 8 = "08.jpg"
/ 9 = "09.jpg"
/ 10 = "10.jpg"
/ 11 = "11.jpg"
/ 12 = "12.jpg"
/ 13 = "13.jpg"
/ 14 = "14.jpg"
/ 15 = "15.jpg"
/ 16 = "16.jpg"
/ 17 = "17.jpg"
/ 18 = "18.jpg"
/ 19 = "19.jpg"
/ 20 = "20.jpg"
/ 21 = "21.jpg"
/ 22 = "22.jpg"
/ 23 = "23.jpg"
/ 24 = "24.jpg"
</item>

<text fixation>
/ items = ("+")
/ erase = false
</text>

<text end>
/ items = ("End of round.")
</text>


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: 109K
> However, there is one glaring problem - when the sound is played in the following trial, the rotating dot pauses in place whilst the sound
> is played. I assume this is because the .jpeg of whatever clock-face + dot is bound to the sound stimulus.

Yes and no. The clock-face is not bound to the sound stimulus; both are bound to the *trial*. You are essentially working in 60ms intervals (duration of a single instance of the relevant <trial>). Thus your options are:

- Make sure the sound you play is substantially shorter than 60ms, so that it "fits" within a single instance of the <trial>.
- You've also forced the <trial> to play the sound to completion by setting /playthrough = true in the respective <sound> elements, i.e., the <trial> that plays the sound will not terminate and cut off the sound after 60ms before moving on to the next <trial>.
- If making the sounds sufficiently short is not an option, you need to set up and run yet another <trial> element, one that lasts longer than 60ms (how long depends on the actual length of your sounds; I have no way of knowing what it is) and displays *more* than a single clock-face via its /stimulustimes.

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search