﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Millisecond Forums » Millisecond Forums » Inquisit 4  » Libet Clock</title><generator>InstantForum 2017-1 Final</generator><description>Millisecond Forums</description><link>https://forums.millisecond.com/</link><webMaster>Millisecond Forums</webMaster><lastBuildDate>Fri, 12 Jun 2026 13:36:46 GMT</lastBuildDate><ttl>20</ttl><item><title>Libet Clock</title><link>https://forums.millisecond.com/Topic18303.aspx</link><description>Dear Inquisit,&lt;br/&gt;&lt;br/&gt;I've run some successful scripts via Inquisit recently, mostly thanks to the extraordinary help offered by those on this forum.&lt;br/&gt;&lt;br/&gt;I'm running a new, but similar, time estimation study that involves a rotating dot around a clock, and on pressing the correct button, produces the appropriate sound. The participant's task to judge the time interval between their button press and the sound appearing.&lt;br/&gt;&lt;br/&gt;The clock-face(s) is essentially a set of images with a dot at a given position to indicate the time. Currently I'm using the /timeout expression = 60 to give the impression of a rotating dot at the desired rate (hence the requirement for the 'pretrial' so that the fixation cross only appears at the beginning - if there's an elegant way to not have a pretrial, that would be fantastic). However, this introduces a blinking effect - i.e., the continuous presentation of the appropriate .jpeg images (through continuous presentation of the trial) gives a strobe effect, instead of the continuous display of the images and the dot rotating around the clock. Is it possible to fix this? This also introduces the issue that, if the participant presses the button between the trials (i.e., the 'blink'), it naturally does not register a response.&amp;nbsp;&lt;br/&gt;&lt;br/&gt;Two other small queries are that I would like .jpegs to still continuously appear for a time (so that the dot rotates a random amount of time between 1000ms - 2500ms) after the participant presses the button. I've tried introducing a new trial, but this doesn't seem to work (and undesirably still requires a correctresponse, seeing as I am using the /timeout expression to rotate the dot around the clock). The other is that I would ideally like the /correctmessage sound to be delayed by 250ms. I've tried editing the physical sound, but either Inquisit plays the sound despite the 250ms gap, or doesn't play the sound at all. &lt;br/&gt;&lt;br/&gt;I'm aware these issues are largely caused by the use of the /timeout expression, so I apologise in advance for the trouble. I have attached my script and some of the clock-faces to help my issue seem clearer - I also apologise for my confusing description.&lt;br/&gt;&lt;br/&gt;Many thanks,&lt;br/&gt;Josh&amp;nbsp;</description><pubDate>Mon, 04 Apr 2016 07:01:11 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18760.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;Thanks for the info - I ended up using the simple calculation of:&lt;br/&gt;&lt;br/&gt;/ontrialend = [values.scorecorrected = values.score + ((values.clock_number-1) * 7) + 6], though I did take your suggestion and find it to be very helpful.&lt;br/&gt;&lt;br/&gt;Many thanks again,&lt;br/&gt;Josh</description><pubDate>Mon, 04 Apr 2016 07:01:11 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18696.aspx</link><description>I'd also add the following, perhaps it's helpful:&lt;br/&gt;&lt;br/&gt;(1) If you are unsure about the math you want to / need to do, work it out with paper and pencil first. (You've probably already done this, at least that's how I read your previous comments on the topic "[...] Trying this with some of the videos has confirmed this; i.e., values.difference (i.e., values.score (the computed position of the clock-hand) - values.response (the reported time of the participant)) is consistently out by 28 (give or take +1 or -1 for human error), when using the video "libet28.avi"".)&lt;br/&gt;&lt;br/&gt;(2) Before implementing that math into the "full" script, make a small demo that does *just* the math. Take &lt;a href="https://www.millisecond.com/forums/FindPost18581.aspx"&gt;https://www.millisecond.com/forums/FindPost18581.aspx&lt;/a&gt; and extend it to deal with the correction factors associated with the various clock item start positions.&lt;br/&gt;&lt;br/&gt;(3) Once you have (2) working as you want / need, implement the changes in the full script.&lt;br/&gt;</description><pubDate>Wed, 23 Mar 2016 05:55:16 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18695.aspx</link><description>/ontrialend = [if (&lt;strong&gt;list.clock&lt;/strong&gt; == 2) ...&lt;br/&gt;&lt;br/&gt;does not access any list-property and will thus never evaluate to true and the logic will never be executed.&lt;br/&gt;&lt;br/&gt;It would have to read something along the lines of &lt;br/&gt;&lt;br/&gt;/ontrialend = [if (&lt;strong&gt;list.clock.currentvalue&lt;/strong&gt; == 2) ...&lt;br/&gt;&lt;br/&gt;Why don't you simply store the "correction factor" associated with each itemnumber in a &amp;lt;list&amp;gt; tied to the itemnumber &amp;lt;list&amp;gt;. Pull that correction from the list after you've selected the itemnumber /onblockbegin and store it in a value. Subtract that value from the score, etc. at the appropriate point in time.&lt;br/&gt;</description><pubDate>Wed, 23 Mar 2016 05:39:35 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18694.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Thanks for the info. In an attempt to adjust the calculations, I think I might be committing an error, as I acquire variously wrong results.&amp;nbsp;&lt;br/&gt;&lt;br/&gt;I have tried both&amp;nbsp;I have tried both:&lt;br/&gt;&lt;br/&gt;&lt;title&gt;&lt;/title&gt;/ontrialend = [if (list.clock == 2) {values.score = values.score - 7} else if (list.clock == 3) {values.score = values.score - 14} else if (list.clock == 4) {values.score = values.score - 21} else if (list.clock == 5) {values.score = values.score - 28} else if (list.clock == 6) {values.score = values.score - 35} else if (list.clock == 7) {values.score = values.score - 48} else if (list.clock == 8) {values.score = values.score - 54} else if (list.clock) = 1 {true}] &amp;nbsp;&lt;br/&gt;&lt;br/&gt;within:&lt;br/&gt;&lt;br/&gt;&amp;lt;trial audio_p_aa&amp;gt;&lt;br/&gt;/ontrialbegin = [values.audiotrial_starttime = block.rotate_p_block_aa.elapsedtime]&lt;br/&gt;/ontrialbegin = [trial.audio_p_aa.insertstimulustime(sound.possounds, values.delay = 258)]&lt;br/&gt;/ontrialend = [values.sound_starttime = values.audiotrial_starttime + sound.possounds.stimulusonset]&lt;br/&gt;/ontrialend = [trial.audio_p_aa.resetstimulusframes(0)]&lt;br/&gt;/ontrialend = [values.onset = values.sound_starttime - values.response_time]&lt;br/&gt;/ontrialend = [values.sound = sound.possounds.currentitem]&lt;br/&gt;/ontrialend = [values.score = (mod(values.sound_starttime,2500) - values.responsetrial_starttime)/41.6667]&lt;br/&gt;/ontrialend = [values.valence = "Positive"]&lt;br/&gt;/ontrialend = [values.elapsed_time = block.rotate_p_block_aa.elapsedtime; values.actual_time = values.sound_starttime + values.keep_rotating_for]&lt;br/&gt;/validresponse = (0)&lt;br/&gt;/trialduration = values.delay + values.keep_rotating_for + 1000&lt;br/&gt;/recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;, as well as:&lt;br/&gt;&lt;br/&gt;/ontrialbegin = [if (list.clock == 2) {values.difference = values.difference + 7} else if (list.clock == 3) {values.difference = values.difference + 14} else if (list.clock == 4) {values.difference = values.difference + 21} else if (list.clock == 5) {values.difference = values.difference + 28} else if (list.clock == 6) {values.difference = values.difference + 35} else if (list.clock == 7) {values.difference = values.difference + 48} else if (list.clock == 8) {values.difference = values.difference + 54} else if (list.clock) = 1 {true}]  &lt;br/&gt;&lt;br/&gt;within:&lt;br/&gt;&lt;br/&gt;&amp;lt;openended action&amp;gt;&lt;br/&gt;/stimulusframes = [1 = action]&lt;br/&gt;/position = (50, 50)&lt;br/&gt;/buttonlabel = "Click here to advance"&lt;br/&gt;/linelength = 50&lt;br/&gt;/charlimit = 30&lt;br/&gt;/numlines = 1&lt;br/&gt;/size = (500, 50)&lt;br/&gt;/recorddata = true&lt;br/&gt;/required = true&lt;br/&gt;/ontrialend = [values.response = openended.action.response]&lt;br/&gt;/ontrialend = [values.question = "Action"]&lt;br/&gt;/ontrialend = [values.difference = expressions.score]&lt;br/&gt;&amp;lt;/openended&amp;gt;&lt;br/&gt;&lt;br/&gt;These take their information from:&lt;br/&gt;&lt;br/&gt;&amp;lt;video clock&amp;gt;&lt;br/&gt;/items = ("libet0.avi", "libet7.avi", "libet14.avi", "libet21.avi", "libet28.avi", "libet35.avi", "libet48.avi", "libet54.avi")&lt;br/&gt;/select = values.clockitem&lt;br/&gt;/playthrough = false&lt;br/&gt;/loop = true&lt;br/&gt;/erase = false&lt;br/&gt;/size = (20%, 20%)&lt;br/&gt;&amp;lt;/video&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;list clock&amp;gt;&lt;br/&gt;/items = (1,2,3,4,5,6,7,8)&lt;br/&gt;/replace = false&lt;br/&gt;/selectionmode = random&lt;br/&gt;&amp;lt;/list&amp;gt;&lt;br/&gt;&lt;br/&gt;I don't profess to be anywhere near proficient at conditional logic, but I don't receive an error message when coding either into the script. Essentially, they are not modifying value.score nor values.difference in any way that I can observe, and certainly not towards acquiring the correct results. If you have the time (and the energy left for this script, as I know mine is significantly waning), please tell me where I've gone wrong.&lt;br/&gt;&lt;br/&gt;Many thanks,&lt;br/&gt;Josh</description><pubDate>Wed, 23 Mar 2016 05:26:38 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18692.aspx</link><description>Typo on my part -- I meant &lt;br/&gt;&lt;br/&gt;&amp;lt;video clock&amp;gt;&lt;br/&gt;...&lt;br/&gt;&amp;lt;/video&amp;gt;&lt;br/&gt;&lt;br/&gt;as should be clear from the context.&lt;br/&gt;&lt;br/&gt;As for the math: The math doesn't change. You know which video item was selected / shown (look at and log values.clockitem) and thus where the respective clock started. Adjust your various calculations accordingly.&lt;br/&gt;</description><pubDate>Tue, 22 Mar 2016 06:37:39 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18691.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;Thanks - pardon if the solution was simpler than I was anticipating.&lt;br/&gt;&lt;br/&gt;I've tried the &amp;lt;clock clock&amp;gt; solution, but I'm receiving an error saying that the setting has invalid text &amp;nbsp;(i.e., / items...; thus presenting the standard digital clock Inquisit uses).&lt;br/&gt;&lt;br/&gt;As for the math, I was only concerned that if the video starts from a different position (i.e., 7), then the recorded time of the sound occurrence will be askew by 7. Trying this with some of the videos has confirmed this; i.e., values.difference (i.e., values.score (the computed position of the clock-hand) - values.response (the reported time of the participant)) is consistently out by 28 (give or take +1 or -1 for human error), when using the video "libet28.avi".&lt;br/&gt;&lt;br/&gt;Many thanks,&lt;br/&gt;Josh</description><pubDate>Tue, 22 Mar 2016 06:27:12 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18690.aspx</link><description>You incorporate them into the script just like any other stimulus with multiple items. Set up a single &amp;lt;video&amp;gt; element, with the eight AVIs as its items. Select one of the itemnumbers 1-8 /onblockbegin via a &amp;lt;list&amp;gt;.&lt;br/&gt;&lt;br/&gt;&amp;lt;values&amp;gt;&lt;br/&gt;...&lt;br/&gt;/ clockitem = 1&lt;br/&gt;...&lt;br/&gt;&amp;lt;/values&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;clock clock&amp;gt;&lt;br/&gt;/ items = ("libet.avi", "libet7.avi", ...)&lt;br/&gt;...&lt;br/&gt;/ select = values.clockitem&lt;br/&gt;...&lt;br/&gt;&amp;lt;/clock&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;list clockitemnumbers&amp;gt;&lt;br/&gt;/ items = (1,2,3,4,5,6,7,8)&lt;br/&gt;&amp;lt;/list&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;block rotate_p_block_aa&amp;gt;&lt;br/&gt;/ onblockbegin = [values.clockitem = list.clockitemnumbers.nextvalue]&lt;br/&gt;/bgstim = (&lt;strong&gt;clock&lt;/strong&gt;)&lt;br/&gt;/trials = [1 = response_p_aa; 2 = audio_p_aa]&lt;br/&gt;/branch = [block.estimate_block_action_a]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Beyond that, I'm not sure what you mean with "obviously ensure that the data recorded is accurate, given that originally it was simply a method of measuring the elapsed time of the trial and corresponding that to a position on the clock."&lt;br/&gt;&lt;br/&gt;We've discussed the math involved at length in this thread and I would assume that all of that still applies.&lt;br/&gt;</description><pubDate>Tue, 22 Mar 2016 05:52:40 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18687.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;The study has run smoothly, however one extension I'd like to add is the use of multiple clocks to achieve multiple starting points of the clock-hand. Essentially, I have created 7 extra videos where the clock starts elsewhere on the clock, and rotates as usual. These are all fine, except I was wondering how to implement these into the script, and obviously ensure that the data recorded is accurate, given that originally it was simply a method of measuring the elapsed time of the trial and corresponding that to a position on the clock.&lt;br/&gt;&lt;br/&gt;For example, I have:&lt;br/&gt;&lt;br/&gt;&amp;lt;video clock1&amp;gt;&lt;br/&gt;/items = ("libet.avi")&lt;br/&gt;/playthrough = false&lt;br/&gt;/loop = true&lt;br/&gt;/erase = false&lt;br/&gt;/size = (20%, 20%)&lt;br/&gt;&amp;lt;/video&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;video clock2&amp;gt;&lt;br/&gt;/items = ("libet7.avi")&lt;br/&gt;/playthrough = false&lt;br/&gt;/loop = true&lt;br/&gt;/erase = false&lt;br/&gt;/size = (20%, 20%)&lt;br/&gt;&amp;lt;/video&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;video clock3&amp;gt;&lt;br/&gt;/items = ("libet14.avi")&lt;br/&gt;/playthrough = false&lt;br/&gt;/loop = true&lt;br/&gt;/erase = false&lt;br/&gt;/size = (20%, 20%)&lt;br/&gt;&amp;lt;/video&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;video clock4&amp;gt;&lt;br/&gt;/items = ("libet21.avi")&lt;br/&gt;/playthrough = false&lt;br/&gt;/loop = true&lt;br/&gt;/erase = false&lt;br/&gt;/size = (20%, 20%)&lt;br/&gt;&amp;lt;/video&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;video clock5&amp;gt;&lt;br/&gt;/items = ("libet28.avi")&lt;br/&gt;/playthrough = false&lt;br/&gt;/loop = true&lt;br/&gt;/erase = false&lt;br/&gt;/size = (20%, 20%)&lt;br/&gt;&amp;lt;/video&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;video clock6&amp;gt;&lt;br/&gt;/items = ("libet35.avi")&lt;br/&gt;/playthrough = false&lt;br/&gt;/loop = true&lt;br/&gt;/erase = false&lt;br/&gt;/size = (20%, 20%)&lt;br/&gt;&amp;lt;/video&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;video clock7&amp;gt;&lt;br/&gt;/items = ("libet48.avi")&lt;br/&gt;/playthrough = false&lt;br/&gt;/loop = true&lt;br/&gt;/erase = false&lt;br/&gt;/size = (20%, 20%)&lt;br/&gt;&amp;lt;/video&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;video clock8&amp;gt;&lt;br/&gt;/items = ("libet54.avi")&lt;br/&gt;/playthrough = false&lt;br/&gt;/loop = true&lt;br/&gt;/erase = false&lt;br/&gt;/size = (20%, 20%)&lt;br/&gt;&amp;lt;/video&amp;gt;&lt;br/&gt;&lt;br/&gt;The number within the file name represents the time/starting position of the clock-hand (bar the first clock).&amp;nbsp;&lt;br/&gt;&lt;br/&gt;The block thus looks presently like this:&lt;br/&gt;&lt;br/&gt;&amp;lt;block rotate_p_block_aa&amp;gt;&lt;br/&gt;/bgstim = (&lt;strong&gt;clock1&lt;/strong&gt;)&lt;br/&gt;/trials = [1 = response_p_aa; 2 = audio_p_aa]&lt;br/&gt;/branch = [block.estimate_block_action_a]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial response_p_aa&amp;gt;&lt;br/&gt;/ontrialbegin = [values.responsetrial_starttime = block.rotate_p_block_aa.elapsedtime]&lt;br/&gt;/correctresponse = (57)&lt;br/&gt;/ontrialend = [values.response_time = block.rotate_p_block_aa.elapsedtime]&lt;br/&gt;/recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial audio_p_aa&amp;gt;&lt;br/&gt;/ontrialbegin = [values.audiotrial_starttime = block.rotate_p_block_aa.elapsedtime]&lt;br/&gt;/ontrialbegin = [trial.audio_p_aa.insertstimulustime(sound.possounds, values.delay = 258)]&lt;br/&gt;/ontrialend = [values.sound_starttime = values.audiotrial_starttime + sound.possounds.stimulusonset]&lt;br/&gt;/ontrialend = [trial.audio_p_aa.resetstimulusframes(0)]&lt;br/&gt;/ontrialend = [values.onset = values.sound_starttime - values.response_time]&lt;br/&gt;/ontrialend = [values.sound = sound.possounds.currentitem]&lt;br/&gt;/ontrialend = [values.score = (mod(values.response_time,2500) - values.responsetrial_starttime)/41.6667]&lt;br/&gt;/ontrialend = [values.valence = "Positive"]&lt;br/&gt;/ontrialend = [values.elapsed_time = block.rotate_p_block_aa.elapsedtime; values.actual_time = values.sound_starttime + values.keep_rotating_for]&lt;br/&gt;/validresponse = (0)&lt;br/&gt;/trialduration = values.delay + values.keep_rotating_for + 1000&lt;br/&gt;/recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;Please let me know if you need anymore information.&lt;br/&gt;&lt;br/&gt;Many thanks,&lt;br/&gt;Josh</description><pubDate>Tue, 22 Mar 2016 05:02:01 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18656.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;Thanks for the info. You have been an enormous help through this study-creation - pardon the many questions due to my novice programming skills.&lt;br/&gt;&lt;br/&gt;Many thanks again,&lt;br/&gt;Josh</description><pubDate>Wed, 16 Mar 2016 09:41:04 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18653.aspx</link><description>Thanks. That's probably a codec problem then. VLC comes with its own set of binary codecs -- it does not use the codecs that are available system-wide, which are the ones other applications -- including Inquisit -- rely on.&lt;br/&gt;</description><pubDate>Wed, 16 Mar 2016 06:44:17 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18651.aspx</link><description>Sorry for any ambiguity - I meant the .avi file played using a video player (i.e., VLC) runs more smoothly than when Inquisit runs the .avi file as a video stimulus.&lt;br/&gt;&lt;br/&gt;Thanks,&lt;br/&gt;Josh</description><pubDate>Wed, 16 Mar 2016 06:41:24 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18645.aspx</link><description>&amp;gt;  I ask this because in some instances the .avi file seems to run more smoothly than the clock within Inquisit&lt;br/&gt;&lt;br/&gt;Sorry, I don't understand this sentence. What does "run more smoothly than the clock within Inquisit" mean? Thanks.&lt;br/&gt;</description><pubDate>Wed, 16 Mar 2016 06:02:51 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18642.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;I have one final question - is there a way to check the speed of the clock? I ask this because in some instances the .avi file seems to run more smoothly than the clock within Inquisit, and the speed of the clock is vital in this particular study (i.e., it must reflect one rotation per 2580ms).&amp;nbsp;&lt;br/&gt;&lt;br/&gt;Many thanks,&lt;br/&gt;Josh</description><pubDate>Wed, 16 Mar 2016 05:33:40 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18629.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;This has only been present since today, for some unknown reason - I have shut down other programs in use which has reduced it (albeit not entirely), so perhaps it was simply CPU processing being affected. Your method resolved the issue, however the minor glitch where it takes a small moment to reload the stimuli between &amp;lt;block begin_p&amp;gt; and &amp;lt;block rotate_p_block&amp;gt;:&lt;br/&gt;&lt;br/&gt;&amp;lt;block begin_p&amp;gt;&lt;br/&gt;/bgstim = (clock1)&lt;br/&gt;/trials = [1 = begin_p]&lt;br/&gt;/branch = [block.rotate_p_block]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial begin_p&amp;gt;&lt;br/&gt;/timeout = 2580&lt;br/&gt;/recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;block rotate_p_block&amp;gt;&lt;br/&gt;/bgstim = (clock1)&lt;br/&gt;/trials = [1 = response_p; 2 = audio_p]&lt;br/&gt;/branch = [block.estimate_block]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;However, I feel we'll be circulating back towards our previous discussions, so I feel I'll limit the strain on CPU usage and eliminate results where&amp;nbsp;values.responsetrial_starttime is in excess of, for example, 1000, so that they do not potential obscure results, given that they only occur rarely.&lt;br/&gt;&lt;br/&gt;Many thanks again,&lt;br/&gt;Josh</description><pubDate>Tue, 15 Mar 2016 10:52:55 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18627.aspx</link><description>Such delays as you describe are not something I'm seeing on my system. It may be that there is something fishy about your video's encoding, I really don't know.&lt;br/&gt;&lt;br/&gt;&amp;gt; Equally, this appears to only affect the first couple of trials (presumably because the stimuli has been fully loaded as a background &lt;br/&gt;&amp;gt; stimulus).&lt;br/&gt;&lt;br/&gt;Interesting observation, but -- at least to me -- the theory doesn't quite make sense. It should be testable, though:&lt;br/&gt;Add a &amp;lt;block&amp;gt; to the very start that lasts for a couple of clock rotations (i.e., fully "loads" and runs the video) and does nothing else.&lt;br/&gt;If your theory is correct that should affect the delay (i.e. noticeably reduce it)&amp;nbsp; in any subsequent "real" trials.&lt;br/&gt;&lt;br/&gt;I am also wondering why the issue wasn't there before -- or was it and you just didn't notice? If it wasn't, it's likely caused by something else entirely.&lt;br/&gt;</description><pubDate>Tue, 15 Mar 2016 09:23:41 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18626.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;Many thanks - the &amp;lt;expressions&amp;gt; addition resolved the issue perfectly.&amp;nbsp;&lt;br/&gt;&lt;br/&gt;That appears to be the last of the issues I am unable to resolve myself - except one that I've just noticed, which is that occasionally there is a delay at the beginning of &amp;lt;block rotate_p_block&amp;gt; in:&lt;br/&gt;&lt;br/&gt;&amp;lt;block rotate_p_block&amp;gt;&lt;br/&gt;/bgstim = (clock1)&lt;br/&gt;/trials = [1 = response_p; 2 = audio_p]&lt;br/&gt;/branch = [block.estimate_block]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial response_p&amp;gt;&lt;br/&gt;/ontrialbegin = [values.responsetrial_starttime = block.rotate_p_block.elapsedtime]&lt;br/&gt;/correctresponse = (57)&lt;br/&gt;/ontrialend = [values.response_time = block.rotate_p_block.elapsedtime]&lt;br/&gt;/ontrialend = [values.clock_number = 1]&lt;br/&gt;/recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial audio_p&amp;gt;&lt;br/&gt;/ontrialbegin = [values.audiotrial_starttime = block.rotate_p_block.elapsedtime]&lt;br/&gt;/ontrialbegin = [trial.audio_p.insertstimulustime(sound.possounds, values.delay = 258)]&lt;br/&gt;/ontrialend = [values.sound_starttime = values.audiotrial_starttime + sound.possounds.stimulusonset]&lt;br/&gt;/ontrialend = [trial.audio_p.resetstimulusframes(0)]&lt;br/&gt;/ontrialend = [values.onset = values.sound_starttime - values.response_time]&lt;br/&gt;/ontrialend = [values.sound = sound.possounds.currentitem]&lt;br/&gt;/ontrialend = [values.score = (mod(values.sound_starttime,2580) - values.responsetrial_starttime)/43]&lt;br/&gt;/ontrialend = [values.valence = "Positive"]&lt;br/&gt;/validresponse = (0)&lt;br/&gt;/trialduration = values.delay + values.keep_rotating_for + 1000&lt;br/&gt;/recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;, for whatever reason, where it only displays a blank screen (I am assuming it is loading stimuli during this), this counts towards the values.responsetrial_starttime. Subsequently, this results in a large number (e.g., in excess of 2000), and can skew values.score.&lt;br/&gt;&lt;br/&gt;To provide a concrete example, a delay at the beginning results in:&lt;br/&gt;values.responsetrial_starttime = 2302, values.sound_starttime = 4087. Using the previous stated method of calculating values.score (via&amp;nbsp;(mod(values.sound_starttime,2580) - values.responsetrial_starttime)/43), this results in a values.score of -18.488, which obviously does not pertain to a position on the clock. However, using your previous solution to calculate values.difference (i.e., expressions.score), this still provides relatively accurately scores (i.e. from my estimates of the sound's onset, thus I don't know if this is something I should actually be concerned over). Equally, this appears to only affect the first couple of trials (presumably because the stimuli has been fully loaded as a background stimulus).&lt;br/&gt;&lt;br/&gt;Your thoughts would be greatly appreciated.&lt;br/&gt;Many thanks,&lt;br/&gt;Josh</description><pubDate>Tue, 15 Mar 2016 08:14:14 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18581.aspx</link><description>After thinking about this for a while, here's what I would do (not sure if correct, please use your own judgement).&lt;br/&gt;&lt;br/&gt;#1: Compute the difference (s - a).&lt;br/&gt;#2: If the *absolute value* of&amp;nbsp; the difference abs(s - a) &amp;lt; 30 -- i.e. less than half a rotation -- you are done.&lt;br/&gt;#3: If the absolute value is &amp;gt; 30 AND the difference is negative, compute 60 + (s - a). Done.&lt;br/&gt;#4: If the absolute value is &amp;gt; 30 AND the difference is positive, compute (s - a) - 60. Done. &lt;br/&gt;&lt;br/&gt;To illustrate:&lt;br/&gt;&lt;br/&gt;&amp;lt;values&amp;gt;&lt;br/&gt;/ s = 0&lt;br/&gt;/ a = 0&lt;br/&gt;&amp;lt;/values&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;expressions&amp;gt;&lt;br/&gt;/ diff = (values.s - values.a)&lt;br/&gt;/ diff_abs = abs(values.s - values.a)&lt;br/&gt;/ score = if (expressions.diff_abs &amp;lt; 30) {expressions.diff}&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (expressions.diff &amp;lt; 0) (60 + expressions.diff)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (expressions.diff &amp;gt; 0) (expressions.diff - 60)&lt;br/&gt;&amp;lt;/expressions&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;surveypage mypage&amp;gt;&lt;br/&gt;/ ontrialend = [values.s = textbox.s_input.response; values.a = textbox.a_input.response]&lt;br/&gt;/ questions = [1=s_input; 2=a_input]&lt;br/&gt;/ branch = [trial.result]&lt;br/&gt;/ showquestionnumbers = false&lt;br/&gt;/ showpagenumbers = false&lt;br/&gt;&amp;lt;/surveypage&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;textbox s_input&amp;gt;&lt;br/&gt;/ caption = "Enter value for S (must be between 0 and 59):"&lt;br/&gt;/ mask = positiveintegerorzero&lt;br/&gt;&amp;lt;/textbox&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;textbox a_input&amp;gt;&lt;br/&gt;/ caption = "Enter value for A (must be between 0 and 59):"&lt;br/&gt;/ mask = positiveintegerorzero&lt;br/&gt;&amp;lt;/textbox&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial result&amp;gt;&lt;br/&gt;/ stimulusframes = [1=resulttxt]&lt;br/&gt;/ validresponse = (57)&lt;br/&gt;/ branch = [surveypage.mypage]&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text resulttxt&amp;gt;&lt;br/&gt;/ items = ("Inputs: S=&amp;lt;%values.s%&amp;gt; | A=&amp;lt;%values.a%&amp;gt;&lt;br/&gt;Difference=&amp;lt;%expressions.diff%&amp;gt; | Absolute Difference=&amp;lt;%expressions.diff_abs%&amp;gt;&lt;br/&gt;Score=&amp;lt;%expressions.score%&amp;gt;")&lt;br/&gt;/ size = (75%, 50%)&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;block myblock&amp;gt;&lt;br/&gt;/ trials = [1=mypage]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;</description><pubDate>Sat, 12 Mar 2016 06:14:31 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18580.aspx</link><description>Okay, thanks for the clarification. I'll have to think about this for a while when I have some quiet time.&lt;br/&gt;&lt;br/&gt;Another minor point of confusion from your previous post for me: You define &lt;br/&gt;&lt;br/&gt;values.difference = (values.score - values.actionq)&lt;br/&gt;&lt;br/&gt;as per&amp;nbsp; &lt;br/&gt;&lt;br/&gt;&amp;gt; [...] For example, values.actionq = 30, values.score = 33, thus values.difference (values.score - values.actionq) = 3, &lt;br/&gt;&amp;gt; an estimation reflecting some form of anticipatory judgement of the dot's position (a negative score would mean &lt;br/&gt;&amp;gt; delayed judgement, in this instance) [...]&lt;br/&gt;&lt;br/&gt;Yet you seem to reverse the terms directly afterwards in &lt;br/&gt;&lt;br/&gt;&amp;gt; [...] However, if values.actionq = 58, and values.score = 2, then values.difference = 56 [...]&lt;br/&gt;&lt;br/&gt;Just plugging in the numbers in the equation &lt;br/&gt;&lt;br/&gt;values.difference = (values.score - values.actionq)&lt;br/&gt;&lt;br/&gt;would give a result of -56 (i.e., 2 - 58 = -56), not +56 as stated in the example. So, I'm wondering whether it's a mistake in the description of the "problematic" case or a mistake in the description of the equation.&lt;br/&gt;</description><pubDate>Fri, 11 Mar 2016 11:32:30 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18578.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;Yes, 4 would be the correct answer - sorry for not being clear.&lt;br/&gt;&lt;br/&gt;Many thanks,&lt;br/&gt;Josh</description><pubDate>Fri, 11 Mar 2016 10:33:56 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18575.aspx</link><description>&amp;gt; [...] if values.actionq = 58, and values.score = 2, then values.difference = 56&lt;br/&gt;&lt;br/&gt;And what you would be the "correct" result here? 4?&lt;br/&gt;</description><pubDate>Fri, 11 Mar 2016 10:10:49 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18573.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;Sure - so, normal estimates of dot position contain estimates [values.actionq] vs the actual position [values.score]. &lt;br/&gt;&lt;br/&gt;For example, values.actionq = 30, values.score = 33, thus values.difference (values.score - values.actionq) = 3, an estimation reflecting some form of anticipatory judgement of the dot's position (a negative score would mean delayed judgement, in this instance). However, if values.actionq = 58, and values.score = 2, then values.difference = 56, which obviously would skew the results of the average of values.difference significantly. I've tried modulo arithmetic similar to the previous solution ([values.difference = (mod(values.score,60) - values.actionq)]), but, as you can guess, this did not work.&lt;br/&gt;&lt;br/&gt;Thanks for the info re: videos, I think I'll just have to restrict participant pools to those able to run .avi's through Inquisit via some form of instruction for the time being.&lt;br/&gt;&lt;br/&gt;Many thanks,&lt;br/&gt;Josh</description><pubDate>Fri, 11 Mar 2016 09:40:22 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18567.aspx</link><description>I'm not 100% clear what you want values.difference to reflect in concrete terms. Can you elaborate, please? As every so often, specific numerical examples illustrating a "normal" vs a "problematic" case may be helpful. Thanks.&lt;br/&gt;&lt;br/&gt;Re. the video "jumping": Yes, it's most likely a codec issue. Not every format can be forced to arbitrary frame rates, e.g. MPEG does (to the best of my knowledge) *not* support 20fps, but only 25fps. You'll have to settle on some format / codec that supports the frame rate you need. I don't really see a perfect solution here with respect to running this online, since you just cannot know with 100% what kind of systems you will encounter in the wild and if they happen to have a proper codec available.&lt;br/&gt;&lt;br/&gt;EDIT: FWIW, I haven't tried or tested it in this particular case, but creating an animated GIF from your clock still images may be a suitable alternative to a using an "actual" video / codec. Animated GIFs are handled by Inquisit's &amp;lt;video&amp;gt; element just like regular videos (AVI, MPG, WMV, etc.).&lt;br/&gt;&lt;br/&gt;Note, though, that the initial (non-video) approach wasn't necessarily better in this regard; here, too, the varying performance characteristics of systems in the wild (different display refresh rates, keyboards with varying latency, etc.) would play a major role. On balance, I still believe the video-approach is preferable and will work better across a wider range of systems than the non-video approach.&lt;br/&gt;</description><pubDate>Fri, 11 Mar 2016 07:07:09 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18566.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;Thanks for the info, and the subsequent maths lesson too! I'm glad such a thing existed to make it an easy fix.&lt;br/&gt;&lt;br/&gt;I would like to calculate the difference between the score and actual position of the dot - originally performed with:&lt;br/&gt;&lt;br/&gt;[values.difference = values.score - values.actionq]&lt;br/&gt;&lt;br/&gt;, however, obviously if the two scores are on different sides (e.g., the dot is at 58, but the participant answers 2) the results are skewed. Could this be resolved in a similar fashion? I apologise, again, if the answer is simpler than I am presuming.&lt;br/&gt;&lt;br/&gt;The study is invariably ready, thanks to your help - however I have noticed in the video a small glitch - that is, when the clock rotates around successfully to its starting point, it'll make a minor jump from 60-5, as if it's skipping those frames of the video. This occurs in formats other than .avi, which isn't exactly the most accessible format if I am to run this study online. Do you know if this is purely do with the specific codec parameters of the video, given that the other options I have tried tend to be compressed .avi formats (e.g. mpg), or if there is a method around that so that more accessible formats can be used without this small glitch?&lt;br/&gt;&lt;br/&gt;Many thanks (again, and again),&lt;br/&gt;Josh</description><pubDate>Fri, 11 Mar 2016 06:41:57 GMT</pubDate><dc:creator>Psych_Josh</dc:creator></item><item><title>RE: Libet Clock</title><link>https://forums.millisecond.com/Topic18549.aspx</link><description>Okay, thanks. As indicated previously, modulo arithmetic to the rescue. Instead of calculating &lt;br/&gt;&lt;br/&gt;(values.sound_starttime - values.responsetrial_starttime) / 20 &lt;br/&gt;&lt;br/&gt;you calculate values.sound_starttime *modulo* 1100 (the duration of one rotation):&lt;br/&gt;&lt;br/&gt;(&lt;strong&gt;mod(values.sound_starttime,1100)&lt;/strong&gt; - values.responsetrial_starttime) / 20 &lt;br/&gt;&lt;br/&gt;In numbers:&lt;br/&gt;- 0 rotations completed&lt;br/&gt;(mod(705,1100) - 105) / 20 = (705 - 105) / 20 = 30&lt;br/&gt;&lt;br/&gt;- 1 rotation completed&lt;br/&gt;(mod(1805,1100) - 105) / 20 = (705 - 105) / 20 = 30&lt;br/&gt;&lt;br/&gt;- 2 rotations completed&lt;br/&gt;(mod(2905,1100) - 105) / 20 = (705 - 105) / 20 = 30&lt;br/&gt;&lt;br/&gt;Works for as many rotations as there may be.&lt;br/&gt;</description><pubDate>Thu, 10 Mar 2016 06:08:03 GMT</pubDate><dc:creator>Dave</dc:creator></item></channel></rss>